From 43dedfaf5c9289c5be56f1c01084fdbaeabf6411 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 19 Jul 2024 16:03:14 -0400 Subject: [PATCH 001/140] wip: multiplexer --- node/go.mod | 192 +++++ node/go.sum | 1507 ++++++++++++++++++++++++++++++++++++++ node/main.go | 53 ++ node/multiplexer.go | 93 +++ node/noop_app_options.go | 8 + node/noop_writer.go | 8 + 6 files changed, 1861 insertions(+) create mode 100644 node/go.mod create mode 100644 node/go.sum create mode 100644 node/main.go create mode 100644 node/multiplexer.go create mode 100644 node/noop_app_options.go create mode 100644 node/noop_writer.go diff --git a/node/go.mod b/node/go.mod new file mode 100644 index 0000000000..7ae943babc --- /dev/null +++ b/node/go.mod @@ -0,0 +1,192 @@ +module github.com/celestiaorg/celestia-app/node + +go 1.22.4 + +require ( + github.com/celestiaorg/celestia-app v1.13.0 + github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 + github.com/tendermint/tendermint v0.34.29 + github.com/tendermint/tm-db v0.6.7 +) + +require ( + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/compute v1.25.1 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + cosmossdk.io/errors v1.0.1 // indirect + cosmossdk.io/math v1.3.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/go-square v1.1.0 // indirect + github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect + github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect + github.com/celestiaorg/nmt v0.21.0 // indirect + github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect + github.com/celestiaorg/rsmt2d v0.13.1 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/confio/ics23/go v0.9.1 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/cosmos-sdk v0.46.16 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.6 // indirect + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect + github.com/cosmos/ibc-go/v6 v6.2.2 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-ethereum v1.14.5 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/gateway v1.1.0 // indirect + github.com/gogo/protobuf v1.3.3 // indirect + github.com/golang/glog v1.2.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/holiman/uint256 v1.2.4 // indirect + github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/reedsolomon v1.12.1 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/rakyll/statik v0.1.7 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/shirou/gopsutil v3.21.6+incompatible // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cobra v1.8.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/stretchr/testify v1.9.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.6 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.26.0 // indirect + go.opentelemetry.io/otel/metric v1.26.0 // indirect + go.opentelemetry.io/otel/trace v1.26.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/api v0.169.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect + google.golang.org/grpc v1.64.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace ( + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 + // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 + // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 + github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 +) diff --git a/node/go.sum b/node/go.sum new file mode 100644 index 0000000000..a618de80ca --- /dev/null +++ b/node/go.sum @@ -0,0 +1,1507 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= +cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= +github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= +github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 h1:s+F8q10ir9D5DN0STZhdOKKauzXkt/HizkEOCDUoCXA= +github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4/go.mod h1:t/balaAQzi5r/68uHqwEBPc9vofN9CDhtkp3cNEvo2w= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= +github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= +github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= +github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= +github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= +github.com/celestiaorg/nmt v0.21.0 h1:81MBqxNn3orByoiCtdNVjwi5WsLgMkzHwP02ZMhTBHM= +github.com/celestiaorg/nmt v0.21.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 h1:Q8nr5SAtDW5gocrBwqwDJcSS/JedqU58WwQA2SP+nXw= +github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2/go.mod h1:s/LzLUw0WeYPJ6qdk4q46jKLOq7rc9Z5Mdrxtfpcigw= +github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= +github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= +github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= +github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= +github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= +github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= +github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= +github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= +github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= +github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= +github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= +github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= +github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= +github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +gitlab.com/NebulousLabs/errors v0.0.0-20171229012116-7ead97ef90b8/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bFzUeKx6m3XjlmBgIUlykX9dzvp5k9NGxc= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= +go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= +go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= +go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/node/main.go b/node/main.go new file mode 100644 index 0000000000..d03b5ac632 --- /dev/null +++ b/node/main.go @@ -0,0 +1,53 @@ +package main + +import ( + "fmt" + + v1 "github.com/celestiaorg/celestia-app/app" + v1encoding "github.com/celestiaorg/celestia-app/app/encoding" + v2 "github.com/celestiaorg/celestia-app/v2/app" + v2encoding "github.com/celestiaorg/celestia-app/v2/app/encoding" + "github.com/tendermint/tendermint/abci/types" + "github.com/tendermint/tendermint/libs/log" + tmdb "github.com/tendermint/tm-db" +) + +func main() { + currentVersion := uint64(1) + applications := getApplications() + multiplexer := NewMultiplexer(currentVersion, applications) + + fmt.Printf("%v\n", multiplexer) +} + +func getApplications() []types.Application { + v1 := NewAppV1() + v2 := NewAppV2() + return []types.Application{v1, v2} +} + +func NewAppV1() *v1.App { + logger := log.NewNopLogger() + db := tmdb.NewMemDB() + traceStore := &NoopWriter{} + loadLatest := true + skipUpgradeHeights := make(map[int64]bool) + homePath := "" + invCheckPeriod := uint(1) + encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) + appOptions := NoopAppOptions{} + + return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) +} + +func NewAppV2() *v2.App { + logger := log.NewNopLogger() + db := tmdb.NewMemDB() + traceStore := &NoopWriter{} + invCheckPeriod := uint(1) + encodingConfig := v2encoding.MakeConfig(v2.ModuleEncodingRegisters...) + upgradeHeight := int64(0) + appOptions := NoopAppOptions{} + + return v2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) +} diff --git a/node/multiplexer.go b/node/multiplexer.go new file mode 100644 index 0000000000..e445ceaf47 --- /dev/null +++ b/node/multiplexer.go @@ -0,0 +1,93 @@ +package main + +import abci "github.com/tendermint/tendermint/abci/types" + +// Multiplexer implements the abci.Application interface +var _ abci.Application = (*Multiplexer)(nil) + +type Multiplexer struct { + currentAppVersion uint64 + apps []abci.Application +} + +func NewMultiplexer(currentAppVersion uint64, applications ...abci.Application) *Multiplexer { + return &Multiplexer{ + currentAppVersion: 1, + apps: applications, + } +} + +// ApplySnapshotChunk implements types.Application. +func (m *Multiplexer) ApplySnapshotChunk(abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { + panic("unimplemented") +} + +// BeginBlock implements types.Application. +func (m *Multiplexer) BeginBlock(abci.RequestBeginBlock) abci.ResponseBeginBlock { + panic("unimplemented") +} + +// CheckTx implements types.Application. +func (m *Multiplexer) CheckTx(abci.RequestCheckTx) abci.ResponseCheckTx { + panic("unimplemented") +} + +// Commit implements types.Application. +func (m *Multiplexer) Commit() abci.ResponseCommit { + panic("unimplemented") +} + +// DeliverTx implements types.Application. +func (m *Multiplexer) DeliverTx(abci.RequestDeliverTx) abci.ResponseDeliverTx { + panic("unimplemented") +} + +// EndBlock implements types.Application. +func (m *Multiplexer) EndBlock(abci.RequestEndBlock) abci.ResponseEndBlock { + panic("unimplemented") +} + +// Info implements types.Application. +func (m *Multiplexer) Info(abci.RequestInfo) abci.ResponseInfo { + panic("unimplemented") +} + +// InitChain implements types.Application. +func (m *Multiplexer) InitChain(abci.RequestInitChain) abci.ResponseInitChain { + panic("unimplemented") +} + +// ListSnapshots implements types.Application. +func (m *Multiplexer) ListSnapshots(abci.RequestListSnapshots) abci.ResponseListSnapshots { + panic("unimplemented") +} + +// LoadSnapshotChunk implements types.Application. +func (m *Multiplexer) LoadSnapshotChunk(abci.RequestLoadSnapshotChunk) abci.ResponseLoadSnapshotChunk { + panic("unimplemented") +} + +// OfferSnapshot implements types.Application. +func (m *Multiplexer) OfferSnapshot(abci.RequestOfferSnapshot) abci.ResponseOfferSnapshot { + panic("unimplemented") +} + +// PrepareProposal implements types.Application. +func (m *Multiplexer) PrepareProposal(abci.RequestPrepareProposal) abci.ResponsePrepareProposal { + panic("unimplemented") +} + +// ProcessProposal implements types.Application. +func (m *Multiplexer) ProcessProposal(abci.RequestProcessProposal) abci.ResponseProcessProposal { + panic("unimplemented") +} + +// Query implements types.Application. +func (m *Multiplexer) Query(abci.RequestQuery) abci.ResponseQuery { + panic("unimplemented") +} + +// SetOption implements types.Application. +func (m *Multiplexer) SetOption(abci.RequestSetOption) abci.ResponseSetOption { + panic("unimplemented") +} diff --git a/node/noop_app_options.go b/node/noop_app_options.go new file mode 100644 index 0000000000..4d74126996 --- /dev/null +++ b/node/noop_app_options.go @@ -0,0 +1,8 @@ +package main + +// NoopAppOptions is a no-op implementation of servertypes.AppOptions. +type NoopAppOptions struct{} + +func (nao NoopAppOptions) Get(string) interface{} { + return nil +} diff --git a/node/noop_writer.go b/node/noop_writer.go new file mode 100644 index 0000000000..de3b0ceff6 --- /dev/null +++ b/node/noop_writer.go @@ -0,0 +1,8 @@ +package main + +// NoopWriter is a no-op implementation of a writer. +type NoopWriter struct{} + +func (nw *NoopWriter) Write(p []byte) (n int, err error) { + return len(p), nil +} From 3e232549228ed1a381a83354ab7230ce6fbb2879 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 22 Jul 2024 10:47:30 -0400 Subject: [PATCH 002/140] feat: delegate to current app --- node/multiplexer.go | 99 ++++++++++++++++++++++++--------------------- 1 file changed, 52 insertions(+), 47 deletions(-) diff --git a/node/multiplexer.go b/node/multiplexer.go index e445ceaf47..993bff2163 100644 --- a/node/multiplexer.go +++ b/node/multiplexer.go @@ -5,89 +5,94 @@ import abci "github.com/tendermint/tendermint/abci/types" // Multiplexer implements the abci.Application interface var _ abci.Application = (*Multiplexer)(nil) +// Multiplexer is used to switch between different versions of the application. type Multiplexer struct { currentAppVersion uint64 - apps []abci.Application + applications []abci.Application } -func NewMultiplexer(currentAppVersion uint64, applications ...abci.Application) *Multiplexer { +func NewMultiplexer(currentAppVersion uint64, applications []abci.Application) *Multiplexer { return &Multiplexer{ currentAppVersion: 1, - apps: applications, + applications: applications, } } -// ApplySnapshotChunk implements types.Application. -func (m *Multiplexer) ApplySnapshotChunk(abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { - panic("unimplemented") +func (m *Multiplexer) getCurrentApp() abci.Application { + return m.applications[m.currentAppVersion] } -// BeginBlock implements types.Application. -func (m *Multiplexer) BeginBlock(abci.RequestBeginBlock) abci.ResponseBeginBlock { - panic("unimplemented") +func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { + app := m.getCurrentApp() + return app.ApplySnapshotChunk(request) } -// CheckTx implements types.Application. -func (m *Multiplexer) CheckTx(abci.RequestCheckTx) abci.ResponseCheckTx { - panic("unimplemented") +func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { + app := m.getCurrentApp() + return app.BeginBlock(request) +} + +func (m *Multiplexer) CheckTx(request abci.RequestCheckTx) abci.ResponseCheckTx { + app := m.getCurrentApp() + return app.CheckTx(request) } -// Commit implements types.Application. func (m *Multiplexer) Commit() abci.ResponseCommit { - panic("unimplemented") + app := m.getCurrentApp() + return app.Commit() } -// DeliverTx implements types.Application. -func (m *Multiplexer) DeliverTx(abci.RequestDeliverTx) abci.ResponseDeliverTx { - panic("unimplemented") +func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeliverTx { + app := m.getCurrentApp() + return app.DeliverTx(request) } -// EndBlock implements types.Application. -func (m *Multiplexer) EndBlock(abci.RequestEndBlock) abci.ResponseEndBlock { - panic("unimplemented") +func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { + app := m.getCurrentApp() + return app.EndBlock(request) } -// Info implements types.Application. -func (m *Multiplexer) Info(abci.RequestInfo) abci.ResponseInfo { - panic("unimplemented") +func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { + app := m.getCurrentApp() + return app.Info(request) } -// InitChain implements types.Application. -func (m *Multiplexer) InitChain(abci.RequestInitChain) abci.ResponseInitChain { - panic("unimplemented") +func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { + app := m.getCurrentApp() + return app.InitChain(request) } -// ListSnapshots implements types.Application. -func (m *Multiplexer) ListSnapshots(abci.RequestListSnapshots) abci.ResponseListSnapshots { - panic("unimplemented") +func (m *Multiplexer) ListSnapshots(request abci.RequestListSnapshots) abci.ResponseListSnapshots { + app := m.getCurrentApp() + return app.ListSnapshots(request) } -// LoadSnapshotChunk implements types.Application. -func (m *Multiplexer) LoadSnapshotChunk(abci.RequestLoadSnapshotChunk) abci.ResponseLoadSnapshotChunk { - panic("unimplemented") +func (m *Multiplexer) LoadSnapshotChunk(request abci.RequestLoadSnapshotChunk) abci.ResponseLoadSnapshotChunk { + app := m.getCurrentApp() + return app.LoadSnapshotChunk(request) } -// OfferSnapshot implements types.Application. -func (m *Multiplexer) OfferSnapshot(abci.RequestOfferSnapshot) abci.ResponseOfferSnapshot { - panic("unimplemented") +func (m *Multiplexer) OfferSnapshot(request abci.RequestOfferSnapshot) abci.ResponseOfferSnapshot { + app := m.getCurrentApp() + return app.OfferSnapshot(request) } -// PrepareProposal implements types.Application. -func (m *Multiplexer) PrepareProposal(abci.RequestPrepareProposal) abci.ResponsePrepareProposal { - panic("unimplemented") +func (m *Multiplexer) PrepareProposal(request abci.RequestPrepareProposal) abci.ResponsePrepareProposal { + app := m.getCurrentApp() + return app.PrepareProposal(request) } -// ProcessProposal implements types.Application. -func (m *Multiplexer) ProcessProposal(abci.RequestProcessProposal) abci.ResponseProcessProposal { - panic("unimplemented") +func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci.ResponseProcessProposal { + app := m.getCurrentApp() + return app.ProcessProposal(request) } -// Query implements types.Application. -func (m *Multiplexer) Query(abci.RequestQuery) abci.ResponseQuery { - panic("unimplemented") +func (m *Multiplexer) Query(request abci.RequestQuery) abci.ResponseQuery { + app := m.getCurrentApp() + return app.Query(request) } -// SetOption implements types.Application. -func (m *Multiplexer) SetOption(abci.RequestSetOption) abci.ResponseSetOption { - panic("unimplemented") +func (m *Multiplexer) SetOption(request abci.RequestSetOption) abci.ResponseSetOption { + app := m.getCurrentApp() + return app.SetOption(request) } From 26eb806307dda92d751560954b71836e2970b356 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 22 Jul 2024 10:48:36 -0400 Subject: [PATCH 003/140] refactor: rename var --- node/multiplexer.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/node/multiplexer.go b/node/multiplexer.go index 993bff2163..ec594aa1db 100644 --- a/node/multiplexer.go +++ b/node/multiplexer.go @@ -8,18 +8,18 @@ var _ abci.Application = (*Multiplexer)(nil) // Multiplexer is used to switch between different versions of the application. type Multiplexer struct { currentAppVersion uint64 - applications []abci.Application + apps []abci.Application } -func NewMultiplexer(currentAppVersion uint64, applications []abci.Application) *Multiplexer { +func NewMultiplexer(currentAppVersion uint64, apps []abci.Application) *Multiplexer { return &Multiplexer{ currentAppVersion: 1, - applications: applications, + apps: apps, } } func (m *Multiplexer) getCurrentApp() abci.Application { - return m.applications[m.currentAppVersion] + return m.apps[m.currentAppVersion] } func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { From ecb8d3ed670aa4d4dc25762fea4941c27b0cb848 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 22 Jul 2024 11:02:09 -0400 Subject: [PATCH 004/140] refactor: rename --- node/main.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/node/main.go b/node/main.go index d03b5ac632..ab9aeede48 100644 --- a/node/main.go +++ b/node/main.go @@ -13,14 +13,14 @@ import ( ) func main() { - currentVersion := uint64(1) - applications := getApplications() - multiplexer := NewMultiplexer(currentVersion, applications) + currentAppVersion := uint64(1) + apps := getApps() + multiplexer := NewMultiplexer(currentAppVersion, apps) fmt.Printf("%v\n", multiplexer) } -func getApplications() []types.Application { +func getApps() []types.Application { v1 := NewAppV1() v2 := NewAppV2() return []types.Application{v1, v2} From 6f191ca174cdb38733b26f29a8825735266a0c84 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 23 Jul 2024 21:00:21 -0400 Subject: [PATCH 005/140] chore: add compile-time checks --- node/noop_app_options.go | 7 +++++++ node/noop_writer.go | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/node/noop_app_options.go b/node/noop_app_options.go index 4d74126996..caec61184b 100644 --- a/node/noop_app_options.go +++ b/node/noop_app_options.go @@ -1,5 +1,12 @@ package main +import ( + servertypes "github.com/cosmos/cosmos-sdk/server/types" +) + +// NoopAppOptions implements the AppOptions interface. +var _ servertypes.AppOptions = (*NoopAppOptions)(nil) + // NoopAppOptions is a no-op implementation of servertypes.AppOptions. type NoopAppOptions struct{} diff --git a/node/noop_writer.go b/node/noop_writer.go index de3b0ceff6..56286bbd1d 100644 --- a/node/noop_writer.go +++ b/node/noop_writer.go @@ -1,5 +1,10 @@ package main +import "io" + +// NoopWriter implements the io.Writer interface. +var _ io.Writer = (*NoopWriter)(nil) + // NoopWriter is a no-op implementation of a writer. type NoopWriter struct{} From 6b080455ad578099fe4f052515015029655c5ea1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 23 Jul 2024 21:23:29 -0400 Subject: [PATCH 006/140] error $ ./node panic: error with code 2 is already registered: "duplicate" goroutine 1 [running]: cosmossdk.io/errors.RegisterWithGRPCCode({0x105b93b3f, 0x3}, 0x2, 0x2, {0x105b9a8f5, 0x9}) /Users/rootulp/go/pkg/mod/cosmossdk.io/errors@v1.0.1/errors.go:43 +0x240 cosmossdk.io/errors.Register(...) /Users/rootulp/go/pkg/mod/cosmossdk.io/errors@v1.0.1/errors.go:35 github.com/celestiaorg/celestia-app/x/qgb/types.init() /Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-app@v1.13.0/x/qgb/types/errors.go:8 +0x128 --- node/cmd/root.go | 80 ++++++++++++++++++++++++++++ node/go.mod | 18 ++++--- node/go.sum | 37 +++++++------ node/main.go | 50 +---------------- node/utils/apps.go | 43 +++++++++++++++ node/{ => utils}/multiplexer.go | 2 +- node/{ => utils}/noop_app_options.go | 2 +- node/{ => utils}/noop_writer.go | 2 +- 8 files changed, 161 insertions(+), 73 deletions(-) create mode 100644 node/cmd/root.go create mode 100644 node/utils/apps.go rename node/{ => utils}/multiplexer.go (99%) rename node/{ => utils}/noop_app_options.go (96%) rename node/{ => utils}/noop_writer.go (94%) diff --git a/node/cmd/root.go b/node/cmd/root.go new file mode 100644 index 0000000000..59a4bd6250 --- /dev/null +++ b/node/cmd/root.go @@ -0,0 +1,80 @@ +package cmd + +import ( + "fmt" + "os" + + "github.com/celestiaorg/celestia-app/node/utils" + "github.com/spf13/cobra" + "github.com/spf13/viper" +) + +var cfgFile string + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "node", + Short: "A brief description of your application", + Long: `A longer description that spans multiple lines and likely contains +examples and usage of using your application. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application.`, + // Uncomment the following line if your bare application + // has an action associated with it: + Run: func(cmd *cobra.Command, args []string) { + currentAppVersion := uint64(1) + apps := utils.GetApps() + multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + + fmt.Printf("%v\n", multiplexer) + }, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + err := rootCmd.Execute() + if err != nil { + os.Exit(1) + } +} + +func init() { + cobra.OnInitialize(initConfig) + + // Here you will define your flags and configuration settings. + // Cobra supports persistent flags, which, if defined here, + // will be global for your application. + + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.node.yaml)") + + // Cobra also supports local flags, which will only run + // when this action is called directly. + rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") +} + +// initConfig reads in config file and ENV variables if set. +func initConfig() { + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + // Find home directory. + home, err := os.UserHomeDir() + cobra.CheckErr(err) + + // Search config in home directory with name ".node" (without extension). + viper.AddConfigPath(home) + viper.SetConfigType("yaml") + viper.SetConfigName(".node") + } + + viper.AutomaticEnv() // read in environment variables that match + + // If a config file is found, read it in. + if err := viper.ReadInConfig(); err == nil { + fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed()) + } +} diff --git a/node/go.mod b/node/go.mod index 7ae943babc..c359c1fb3a 100644 --- a/node/go.mod +++ b/node/go.mod @@ -5,6 +5,9 @@ go 1.22.4 require ( github.com/celestiaorg/celestia-app v1.13.0 github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 + github.com/cosmos/cosmos-sdk v0.46.16 + github.com/spf13/cobra v1.8.1 + github.com/spf13/viper v1.19.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 ) @@ -46,7 +49,6 @@ require ( github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect - github.com/cosmos/cosmos-sdk v0.46.16 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogoproto v1.5.0 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect @@ -86,7 +88,7 @@ require ( github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect @@ -121,7 +123,8 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect @@ -132,14 +135,14 @@ require ( github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/shirou/gopsutil v3.21.6+incompatible // indirect + github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/cobra v1.8.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.15.0 // indirect github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.11 // indirect @@ -158,6 +161,7 @@ require ( go.opentelemetry.io/otel v1.26.0 // indirect go.opentelemetry.io/otel/metric v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect + go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect golang.org/x/net v0.25.0 // indirect @@ -167,7 +171,7 @@ require ( golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.169.0 // indirect + google.golang.org/api v0.171.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect diff --git a/node/go.sum b/node/go.sum index a618de80ca..a24edbcee4 100644 --- a/node/go.sum +++ b/node/go.sum @@ -341,8 +341,8 @@ github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5s github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= @@ -558,8 +558,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= @@ -709,8 +709,9 @@ github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -726,8 +727,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= @@ -781,12 +782,18 @@ github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNue github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -797,17 +804,15 @@ github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -908,6 +913,8 @@ go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1280,8 +1287,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/node/main.go b/node/main.go index ab9aeede48..594064040a 100644 --- a/node/main.go +++ b/node/main.go @@ -1,53 +1,7 @@ package main -import ( - "fmt" - - v1 "github.com/celestiaorg/celestia-app/app" - v1encoding "github.com/celestiaorg/celestia-app/app/encoding" - v2 "github.com/celestiaorg/celestia-app/v2/app" - v2encoding "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/tendermint/tendermint/abci/types" - "github.com/tendermint/tendermint/libs/log" - tmdb "github.com/tendermint/tm-db" -) +import "github.com/celestiaorg/celestia-app/node/cmd" func main() { - currentAppVersion := uint64(1) - apps := getApps() - multiplexer := NewMultiplexer(currentAppVersion, apps) - - fmt.Printf("%v\n", multiplexer) -} - -func getApps() []types.Application { - v1 := NewAppV1() - v2 := NewAppV2() - return []types.Application{v1, v2} -} - -func NewAppV1() *v1.App { - logger := log.NewNopLogger() - db := tmdb.NewMemDB() - traceStore := &NoopWriter{} - loadLatest := true - skipUpgradeHeights := make(map[int64]bool) - homePath := "" - invCheckPeriod := uint(1) - encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) - appOptions := NoopAppOptions{} - - return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) -} - -func NewAppV2() *v2.App { - logger := log.NewNopLogger() - db := tmdb.NewMemDB() - traceStore := &NoopWriter{} - invCheckPeriod := uint(1) - encodingConfig := v2encoding.MakeConfig(v2.ModuleEncodingRegisters...) - upgradeHeight := int64(0) - appOptions := NoopAppOptions{} - - return v2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) + cmd.Execute() } diff --git a/node/utils/apps.go b/node/utils/apps.go new file mode 100644 index 0000000000..dd4212546e --- /dev/null +++ b/node/utils/apps.go @@ -0,0 +1,43 @@ +package utils + +import ( + v1 "github.com/celestiaorg/celestia-app/app" + v1encoding "github.com/celestiaorg/celestia-app/app/encoding" + v2 "github.com/celestiaorg/celestia-app/v2/app" + v2encoding "github.com/celestiaorg/celestia-app/v2/app/encoding" + "github.com/tendermint/tendermint/abci/types" + "github.com/tendermint/tendermint/libs/log" + tmdb "github.com/tendermint/tm-db" +) + +func GetApps() []types.Application { + v1 := NewAppV1() + v2 := NewAppV2() + return []types.Application{v1, v2} +} + +func NewAppV1() *v1.App { + logger := log.NewNopLogger() + db := tmdb.NewMemDB() + traceStore := &NoopWriter{} + loadLatest := true + skipUpgradeHeights := make(map[int64]bool) + homePath := "" + invCheckPeriod := uint(1) + encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) + appOptions := NoopAppOptions{} + + return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) +} + +func NewAppV2() *v2.App { + logger := log.NewNopLogger() + db := tmdb.NewMemDB() + traceStore := &NoopWriter{} + invCheckPeriod := uint(1) + encodingConfig := v2encoding.MakeConfig(v2.ModuleEncodingRegisters...) + upgradeHeight := int64(0) + appOptions := NoopAppOptions{} + + return v2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) +} diff --git a/node/multiplexer.go b/node/utils/multiplexer.go similarity index 99% rename from node/multiplexer.go rename to node/utils/multiplexer.go index ec594aa1db..07be55259f 100644 --- a/node/multiplexer.go +++ b/node/utils/multiplexer.go @@ -1,4 +1,4 @@ -package main +package utils import abci "github.com/tendermint/tendermint/abci/types" diff --git a/node/noop_app_options.go b/node/utils/noop_app_options.go similarity index 96% rename from node/noop_app_options.go rename to node/utils/noop_app_options.go index caec61184b..5e8d33c310 100644 --- a/node/noop_app_options.go +++ b/node/utils/noop_app_options.go @@ -1,4 +1,4 @@ -package main +package utils import ( servertypes "github.com/cosmos/cosmos-sdk/server/types" diff --git a/node/noop_writer.go b/node/utils/noop_writer.go similarity index 94% rename from node/noop_writer.go rename to node/utils/noop_writer.go index 56286bbd1d..089f4663a6 100644 --- a/node/noop_writer.go +++ b/node/utils/noop_writer.go @@ -1,4 +1,4 @@ -package main +package utils import "io" From d96731f05c9387c5c66ce13dd62a34c8c3a801e8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 23 Jul 2024 21:35:40 -0400 Subject: [PATCH 007/140] make cmd to build binary --- .gitignore | 3 ++- Makefile | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0735ff91b6..4af4b0af73 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,5 @@ square/testdata **/*.DS_Store vendor go.work -go.work.sum \ No newline at end of file +go.work.sum +node/node diff --git a/Makefile b/Makefile index fb483c7572..f5123d0063 100644 --- a/Makefile +++ b/Makefile @@ -212,3 +212,11 @@ prebuilt-binary: ghcr.io/goreleaser/goreleaser-cross:${GOLANG_CROSS_VERSION} \ release --clean .PHONY: prebuilt-binary + +## node-build: Build the node binary. +node-build: + @echo "--> Building celestia-app/node and outputting binary to build/node" + @mkdir -p build/ + @cd ./node && go build -o ../build/node . + @go mod tidy +.PHONY: node-build From 44661b38723eb4c1a565997d15a3b2e31fb5a981 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 24 Jul 2024 14:12:25 -0400 Subject: [PATCH 008/140] try to use testnode start node --- node/cmd/root.go | 12 +- node/go.mod | 22 +- node/go.sum | 531 ++++++++++++++++++++++++++++++++++++++- node/utils/start_node.go | 36 +++ 4 files changed, 596 insertions(+), 5 deletions(-) create mode 100644 node/utils/start_node.go diff --git a/node/cmd/root.go b/node/cmd/root.go index 59a4bd6250..b3387cc16e 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -5,6 +5,7 @@ import ( "os" "github.com/celestiaorg/celestia-app/node/utils" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -23,12 +24,19 @@ This application is a tool to generate the needed files to quickly create a Cobra application.`, // Uncomment the following line if your bare application // has an action associated with it: - Run: func(cmd *cobra.Command, args []string) { + RunE: func(cmd *cobra.Command, args []string) error { currentAppVersion := uint64(1) apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + fmt.Printf("multiplexer: %v\n", multiplexer) - fmt.Printf("%v\n", multiplexer) + config := testnode.DefaultConfig() + cctx, err := utils.StartNode(config) + if err != nil { + return err + } + fmt.Printf("cctx: %v\n", cctx) + return nil }, } diff --git a/node/go.mod b/node/go.mod index c359c1fb3a..aca542074e 100644 --- a/node/go.mod +++ b/node/go.mod @@ -8,6 +8,7 @@ require ( github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 + github.com/stretchr/testify v1.9.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 ) @@ -26,6 +27,7 @@ require ( github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect + github.com/Workiva/go-datastructures v1.0.53 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/aws/aws-sdk-go v1.44.122 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -40,10 +42,13 @@ require ( github.com/celestiaorg/nmt v0.21.0 // indirect github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect github.com/celestiaorg/rsmt2d v0.13.1 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect + github.com/cometbft/cometbft-db v0.7.0 // indirect github.com/confio/ics23/go v0.9.1 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect @@ -57,10 +62,12 @@ require ( github.com/cosmos/ibc-go/v6 v6.2.2 // indirect github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect @@ -85,6 +92,7 @@ require ( github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect github.com/google/go-cmp v0.6.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -92,6 +100,9 @@ require ( github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect + github.com/grafana/otel-profiling-go v0.5.1 // indirect + github.com/grafana/pyroscope-go v1.1.1 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect @@ -107,17 +118,21 @@ require ( github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect github.com/holiman/uint256 v1.2.4 // indirect github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/klauspost/compress v1.17.6 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/klauspost/reedsolomon v1.12.1 // indirect + github.com/lib/pq v1.10.7 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/minio/highwayhash v1.0.2 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -135,6 +150,8 @@ require ( github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rs/cors v1.8.3 // indirect + github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -143,10 +160,10 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.5.0 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect @@ -159,7 +176,9 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect go.opentelemetry.io/otel v1.26.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect go.opentelemetry.io/otel/metric v1.26.0 // indirect + go.opentelemetry.io/otel/sdk v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.23.0 // indirect @@ -181,6 +200,7 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + nhooyr.io/websocket v1.8.6 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) diff --git a/node/go.sum b/node/go.sum index a24edbcee4..202d5c20f6 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1,11 +1,13 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -55,6 +57,7 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= @@ -184,6 +187,7 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= @@ -191,39 +195,82 @@ cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= -github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -234,12 +281,38 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= +github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= @@ -263,6 +336,8 @@ github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2/go.mod h1:s/LzLUw0WeYPJ6 github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -285,7 +360,9 @@ github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -297,6 +374,7 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= @@ -307,19 +385,30 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= @@ -341,6 +430,7 @@ github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5s github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= @@ -349,33 +439,64 @@ github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDF github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -388,6 +509,7 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= @@ -399,12 +521,17 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqL github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -413,42 +540,82 @@ github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nos github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= +github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -484,14 +651,17 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -511,6 +681,7 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= @@ -540,7 +711,10 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -561,10 +735,18 @@ github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMd github.com/googleapis/gax-go/v2 v2.12.3 h1:5/zPPDvw8Q1SuXjrqrZslrqT7dL/uJT2CQii/cLCKqA= github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= @@ -573,9 +755,14 @@ github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= @@ -585,9 +772,13 @@ github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= @@ -595,31 +786,47 @@ github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -629,32 +836,74 @@ github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPt github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -663,37 +912,74 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= @@ -702,96 +988,190 @@ github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iP github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -803,24 +1183,31 @@ github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNo github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -847,27 +1234,57 @@ github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -883,8 +1300,12 @@ gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bF gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -898,38 +1319,62 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= @@ -939,8 +1384,10 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -967,12 +1414,16 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -983,6 +1434,7 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -990,6 +1442,7 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -999,15 +1452,20 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1065,14 +1523,18 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1082,14 +1544,21 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1097,13 +1566,17 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1111,11 +1584,15 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1124,9 +1601,12 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1144,14 +1624,18 @@ golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1170,17 +1654,24 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1190,6 +1681,8 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1197,6 +1690,8 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1217,6 +1712,7 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1239,6 +1735,13 @@ golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNq golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1290,6 +1793,7 @@ google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB google.golang.org/api v0.171.0 h1:w174hnBPqut76FzW5Qaupt7zY8Kql6fiVjgys4f58sU= google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= @@ -1304,6 +1808,8 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1311,6 +1817,7 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= @@ -1336,6 +1843,7 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -1408,11 +1916,16 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1: google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= @@ -1422,6 +1935,7 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= @@ -1471,16 +1985,22 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1492,8 +2012,11 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1501,14 +2024,18 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/node/utils/start_node.go b/node/utils/start_node.go new file mode 100644 index 0000000000..3cdd24be95 --- /dev/null +++ b/node/utils/start_node.go @@ -0,0 +1,36 @@ +package utils + +import ( + "context" + + "github.com/celestiaorg/celestia-app/v2/test/util/genesis" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" +) + +const baseDir = "~/.celestia-app-start-node" + +func StartNode(cfg *testnode.Config) (cctx testnode.Context, err error) { + // initialize the genesis file and validator files for the first validator. + baseDir, err := genesis.InitFiles(baseDir, cfg.TmConfig, cfg.Genesis, 0) + if err != nil { + return testnode.Context{}, err + } + + tmNode, _, err := testnode.NewCometNode(baseDir, &cfg.UniversalTestingConfig) + if err != nil { + return testnode.Context{}, err + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + cctx = testnode.NewContext(ctx, cfg.Genesis.Keyring(), cfg.TmConfig, cfg.Genesis.ChainID, cfg.AppConfig.API.Address) + + cctx, stopNode, err := testnode.StartNode(tmNode, cctx) + if err != nil { + return testnode.Context{}, err + } + defer stopNode() + + return cctx, nil +} From 9e09257cf813c362b8144b8a28e7536a9a578e27 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 24 Jul 2024 14:12:47 -0400 Subject: [PATCH 009/140] go mod tidy --- node/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/go.mod b/node/go.mod index aca542074e..b41588e79b 100644 --- a/node/go.mod +++ b/node/go.mod @@ -8,7 +8,6 @@ require ( github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 - github.com/stretchr/testify v1.9.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 ) @@ -160,6 +159,7 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect From c6f0672931576e016c8572d1a90573848ee4a5c1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 24 Jul 2024 14:58:25 -0400 Subject: [PATCH 010/140] use fork of errors package --- node/go.mod | 23 +++++++++---------- node/go.sum | 65 +++++++++++++++++++++++++---------------------------- 2 files changed, 41 insertions(+), 47 deletions(-) diff --git a/node/go.mod b/node/go.mod index b41588e79b..bd0bf328d8 100644 --- a/node/go.mod +++ b/node/go.mod @@ -14,8 +14,7 @@ require ( require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute v1.25.1 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect cosmossdk.io/errors v1.0.1 // indirect @@ -38,9 +37,9 @@ require ( github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect - github.com/celestiaorg/nmt v0.21.0 // indirect + github.com/celestiaorg/nmt v0.22.0 // indirect github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect - github.com/celestiaorg/rsmt2d v0.13.1 // indirect + github.com/celestiaorg/rsmt2d v0.14.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -73,7 +72,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-ethereum v1.14.5 // indirect + github.com/ethereum/go-ethereum v1.14.7 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/go-kit/kit v0.12.0 // indirect @@ -85,7 +84,7 @@ require ( github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/gateway v1.1.0 // indirect github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.2.0 // indirect + github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect @@ -115,7 +114,7 @@ require ( github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect - github.com/holiman/uint256 v1.2.4 // indirect + github.com/holiman/uint256 v1.3.0 // indirect github.com/iancoleman/orderedmap v0.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -184,18 +183,17 @@ require ( golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect - google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.64.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect @@ -206,6 +204,7 @@ require ( ) replace ( + cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.3.0 github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/go.sum b/node/go.sum index 202d5c20f6..da11431d7b 100644 --- a/node/go.sum +++ b/node/go.sum @@ -71,10 +71,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.25.1 h1:ZRpHJedLtTpKgr3RV1Fx23NuaAEN1Zfx9hw1u4aJdjU= -cloud.google.com/go/compute v1.25.1/go.mod h1:oopOIR53ly6viBYxaDhBfJwzUAxf1zE//uf3IB011ls= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -188,8 +186,6 @@ cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuW cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= @@ -317,8 +313,6 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= -github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 h1:s+F8q10ir9D5DN0STZhdOKKauzXkt/HizkEOCDUoCXA= -github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4/go.mod h1:t/balaAQzi5r/68uHqwEBPc9vofN9CDhtkp3cNEvo2w= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -329,12 +323,12 @@ github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PY github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= -github.com/celestiaorg/nmt v0.21.0 h1:81MBqxNn3orByoiCtdNVjwi5WsLgMkzHwP02ZMhTBHM= -github.com/celestiaorg/nmt v0.21.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= +github.com/celestiaorg/nmt v0.22.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 h1:Q8nr5SAtDW5gocrBwqwDJcSS/JedqU58WwQA2SP+nXw= github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2/go.mod h1:s/LzLUw0WeYPJ6qdk4q46jKLOq7rc9Z5Mdrxtfpcigw= -github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= -github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= +github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= +github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -375,12 +369,14 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= +github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -510,8 +506,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= -github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= -github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= +github.com/ethereum/go-ethereum v1.14.7 h1:EHpv3dE8evQmpVEQ/Ne2ahB06n2mQptdwqaMNhAT29g= +github.com/ethereum/go-ethereum v1.14.7/go.mod h1:Mq0biU2jbdmKSZoqOj29017ygFrMnB5/Rifwp980W4o= github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= @@ -542,8 +538,8 @@ github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqG github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= @@ -613,8 +609,8 @@ github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.0 h1:uCdmnmatrKCgMBlM4rMuJZWOkPDqdbZPnrMXDY4gI68= -github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -819,8 +815,8 @@ github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8 github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/holiman/uint256 v1.3.0 h1:4wdcm/tnd0xXdu7iS3ruNvxkWwrb4aeBQv19ayYn8F4= +github.com/holiman/uint256 v1.3.0/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= @@ -1134,6 +1130,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rootulp/cosmos-sdk/errors v1.3.0 h1:QdDNqL0FARGQK7a/oCHhau6zkjj7QkwNZt4lT1CWQp8= +github.com/rootulp/cosmos-sdk/errors v1.3.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= @@ -1505,8 +1503,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1650,7 +1648,6 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= @@ -1800,8 +1797,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1912,10 +1907,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237 h1:RFiFrvy37/mpSpdySBDrUdipW/dHwsRwh3J3+A9VgT4= -google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1958,8 +1953,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From ee9c442f2d8be7a0fe49460470218e65be358ece Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 24 Jul 2024 14:58:42 -0400 Subject: [PATCH 011/140] use error version with newlines --- node/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/go.mod b/node/go.mod index bd0bf328d8..972062b684 100644 --- a/node/go.mod +++ b/node/go.mod @@ -204,7 +204,7 @@ require ( ) replace ( - cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.3.0 + cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 From 3242f20f60085a82d7dba4791635b25978a264ac Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 24 Jul 2024 14:58:48 -0400 Subject: [PATCH 012/140] fix make command --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index f5123d0063..51f566edfd 100644 --- a/Makefile +++ b/Makefile @@ -213,10 +213,10 @@ prebuilt-binary: release --clean .PHONY: prebuilt-binary -## node-build: Build the node binary. -node-build: +## build-node: Build the node binary. +build-node: @echo "--> Building celestia-app/node and outputting binary to build/node" @mkdir -p build/ @cd ./node && go build -o ../build/node . @go mod tidy -.PHONY: node-build +.PHONY: build-node From 80a0653ff6f8c1624179ce491ad8a2d52a618063 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 24 Jul 2024 15:18:40 -0400 Subject: [PATCH 013/140] workaround for init() --- app/config.go | 12 +++--------- node/go.mod | 3 +++ node/go.sum | 6 ++++-- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/app/config.go b/app/config.go index c6cd322e3b..6f0dd237ed 100644 --- a/app/config.go +++ b/app/config.go @@ -1,13 +1,7 @@ package app -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - func init() { - cfg := sdk.GetConfig() - cfg.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub) - cfg.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub) - cfg.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub) - cfg.Seal() + // init() was invoked by celestia-app v1.x so we don't need to perform any + // additional config set up it in celestia-app v2.x. In fact, config can't + // be modified by v2.x because we'll hit a panic: "config is sealed". } diff --git a/node/go.mod b/node/go.mod index 972062b684..0a88d36698 100644 --- a/node/go.mod +++ b/node/go.mod @@ -204,6 +204,9 @@ require ( ) replace ( + // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() + github.com/celestiaorg/celestia-app/v2 => ../ + // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 diff --git a/node/go.sum b/node/go.sum index da11431d7b..514279d105 100644 --- a/node/go.sum +++ b/node/go.sum @@ -313,6 +313,8 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= +github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 h1:s+F8q10ir9D5DN0STZhdOKKauzXkt/HizkEOCDUoCXA= +github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4/go.mod h1:t/balaAQzi5r/68uHqwEBPc9vofN9CDhtkp3cNEvo2w= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -1130,8 +1132,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/cosmos-sdk/errors v1.3.0 h1:QdDNqL0FARGQK7a/oCHhau6zkjj7QkwNZt4lT1CWQp8= -github.com/rootulp/cosmos-sdk/errors v1.3.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= +github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= +github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= From 03519a93398ccfcbf5f0038e8c0257f3215872f1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 31 Jul 2024 14:11:53 -0400 Subject: [PATCH 014/140] feat: go mod for x/blob --- x/blob/go.mod | 208 +++++ x/blob/go.sum | 2025 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2233 insertions(+) create mode 100644 x/blob/go.mod create mode 100644 x/blob/go.sum diff --git a/x/blob/go.mod b/x/blob/go.mod new file mode 100644 index 0000000000..3ced26aea8 --- /dev/null +++ b/x/blob/go.mod @@ -0,0 +1,208 @@ +module github.com/celestiaorg/celestia-app/x/blob + +go 1.22.4 + +require ( + cosmossdk.io/errors v1.0.1 + github.com/celestiaorg/celestia-app/v2 v2.0.0 + github.com/celestiaorg/go-square v1.1.0 + github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 + github.com/cosmos/cosmos-sdk v0.46.16 + github.com/cosmos/gogoproto v1.5.0 + github.com/gogo/protobuf v1.3.3 + github.com/golang/protobuf v1.5.4 + github.com/gorilla/mux v1.8.1 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.9.0 + github.com/tendermint/tendermint v0.34.29 + github.com/tendermint/tm-db v0.6.7 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 + google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf + google.golang.org/grpc v1.65.0 + gopkg.in/yaml.v2 v2.4.0 +) + +require ( + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + cosmossdk.io/math v1.3.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/Workiva/go-datastructures v1.0.53 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect + github.com/celestiaorg/nmt v0.21.0 // indirect + github.com/celestiaorg/rsmt2d v0.13.1 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect + github.com/cometbft/cometbft-db v0.7.0 // indirect + github.com/confio/ics23/go v0.9.1 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.6 // indirect + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect + github.com/cosmos/ibc-go/v6 v6.2.2 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-ethereum v1.14.5 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/gateway v1.1.0 // indirect + github.com/golang/glog v1.2.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/grafana/otel-profiling-go v0.5.1 // indirect + github.com/grafana/pyroscope-go v1.1.1 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/holiman/uint256 v1.2.4 // indirect + github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/reedsolomon v1.12.1 // indirect + github.com/lib/pq v1.10.7 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/rakyll/statik v0.1.7 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rs/cors v1.8.3 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/shirou/gopsutil v3.21.6+incompatible // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.6 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.26.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect + go.opentelemetry.io/otel/metric v1.26.0 // indirect + go.opentelemetry.io/otel/sdk v1.26.0 // indirect + go.opentelemetry.io/otel/trace v1.26.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/api v0.169.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + nhooyr.io/websocket v1.8.6 // indirect + rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace ( + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 + // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 + // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 + github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 +) diff --git a/x/blob/go.sum b/x/blob/go.sum new file mode 100644 index 0000000000..38d07559a5 --- /dev/null +++ b/x/blob/go.sum @@ -0,0 +1,2025 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= +github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-app/v2 v2.0.0 h1:cGrkLbqbaNqj+g+LhvmQ0iFKFyrD/GdU5z3WQI/bq8E= +github.com/celestiaorg/celestia-app/v2 v2.0.0/go.mod h1:0wP0W+GLghvsODxLhAYToKsy0RFKeg1HdZftQG90W5A= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= +github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= +github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= +github.com/celestiaorg/nmt v0.21.0 h1:81MBqxNn3orByoiCtdNVjwi5WsLgMkzHwP02ZMhTBHM= +github.com/celestiaorg/nmt v0.21.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= +github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= +github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= +github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= +github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= +github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= +github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= +github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= +github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= +github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= +github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= +github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= +github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= +github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= +github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= +github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +gitlab.com/NebulousLabs/errors v0.0.0-20171229012116-7ead97ef90b8/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bFzUeKx6m3XjlmBgIUlykX9dzvp5k9NGxc= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= +go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= +go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From d70cdebf030a7af74f8a0fc7948e5ae64b57d122 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 31 Jul 2024 14:19:28 -0400 Subject: [PATCH 015/140] fix: use rootulp --- x/blob/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/blob/go.mod b/x/blob/go.mod index 3ced26aea8..4f503476bc 100644 --- a/x/blob/go.mod +++ b/x/blob/go.mod @@ -1,4 +1,4 @@ -module github.com/celestiaorg/celestia-app/x/blob +module github.com/rootulp/celestia-app/x/blob go 1.22.4 From c8e2b9737cedc8d13040f52ea744af79beef9087 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 31 Jul 2024 15:15:21 -0400 Subject: [PATCH 016/140] fix: imports --- x/blob/ante/ante.go | 2 +- x/blob/ante/ante_test.go | 4 ++-- x/blob/ante/blob_share_decorator.go | 2 +- x/blob/ante/blob_share_decorator_test.go | 4 ++-- x/blob/ante/max_total_blob_size_ante.go | 2 +- x/blob/ante/max_total_blob_size_ante_test.go | 4 ++-- x/blob/client/cli/payforblob.go | 2 +- x/blob/client/cli/query.go | 2 +- x/blob/client/cli/query_params.go | 2 +- x/blob/client/cli/tx.go | 2 +- x/blob/client/testutil/integration_test.go | 4 ++-- x/blob/genesis.go | 4 ++-- x/blob/handler.go | 4 ++-- x/blob/keeper/gas_test.go | 2 +- x/blob/keeper/genesis_test.go | 4 ++-- x/blob/keeper/grpc_query.go | 2 +- x/blob/keeper/grpc_query_params.go | 2 +- x/blob/keeper/grpc_query_params_test.go | 2 +- x/blob/keeper/keeper.go | 2 +- x/blob/keeper/keeper_test.go | 4 ++-- x/blob/keeper/msg_server.go | 2 +- x/blob/keeper/params.go | 2 +- x/blob/keeper/params_test.go | 2 +- x/blob/module.go | 6 +++--- x/blob/test/decode_blob_tx_test.go | 2 +- x/blob/types/blob_tx_test.go | 2 +- x/blob/types/estimate_gas_test.go | 2 +- x/blob/types/genesis_test.go | 2 +- x/blob/types/payforblob_test.go | 2 +- 29 files changed, 39 insertions(+), 39 deletions(-) diff --git a/x/blob/ante/ante.go b/x/blob/ante/ante.go index 55aa8a1f40..0266060e83 100644 --- a/x/blob/ante/ante.go +++ b/x/blob/ante/ante.go @@ -1,7 +1,7 @@ package ante import ( - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/ante_test.go b/x/blob/ante/ante_test.go index a45dcbf9ce..1ef8a8469c 100644 --- a/x/blob/ante/ante_test.go +++ b/x/blob/ante/ante_test.go @@ -6,10 +6,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - ante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + ante "github.com/rootulp/celestia-app/x/blob/ante" + blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/ante/blob_share_decorator.go b/x/blob/ante/blob_share_decorator.go index 68c361bc16..230c7bbcce 100644 --- a/x/blob/ante/blob_share_decorator.go +++ b/x/blob/ante/blob_share_decorator.go @@ -3,8 +3,8 @@ package ante import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/blob_share_decorator_test.go b/x/blob/ante/blob_share_decorator_test.go index ec6f73e703..5342b71c7f 100644 --- a/x/blob/ante/blob_share_decorator_test.go +++ b/x/blob/ante/blob_share_decorator_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - ante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + ante "github.com/rootulp/celestia-app/x/blob/ante" + blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/ante/max_total_blob_size_ante.go b/x/blob/ante/max_total_blob_size_ante.go index 7c947fd059..3bd44fd262 100644 --- a/x/blob/ante/max_total_blob_size_ante.go +++ b/x/blob/ante/max_total_blob_size_ante.go @@ -4,9 +4,9 @@ import ( "cosmossdk.io/errors" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" ) // MaxTotalBlobSizeDecorator helps to prevent a PFB from being included in a diff --git a/x/blob/ante/max_total_blob_size_ante_test.go b/x/blob/ante/max_total_blob_size_ante_test.go index 296971eadd..b213f96d4f 100644 --- a/x/blob/ante/max_total_blob_size_ante_test.go +++ b/x/blob/ante/max_total_blob_size_ante_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - ante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + ante "github.com/rootulp/celestia-app/x/blob/ante" + blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/client/cli/payforblob.go b/x/blob/client/cli/payforblob.go index 76ff9d6926..03fd00000b 100644 --- a/x/blob/client/cli/payforblob.go +++ b/x/blob/client/cli/payforblob.go @@ -12,7 +12,6 @@ import ( "github.com/spf13/cobra" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client" @@ -20,6 +19,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/input" sdktx "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" ) const ( diff --git a/x/blob/client/cli/query.go b/x/blob/client/cli/query.go index db38daefa8..5452ade7e7 100644 --- a/x/blob/client/cli/query.go +++ b/x/blob/client/cli/query.go @@ -3,8 +3,8 @@ package cli import ( "fmt" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/query_params.go b/x/blob/client/cli/query_params.go index e25709bed8..c8751a2442 100644 --- a/x/blob/client/cli/query_params.go +++ b/x/blob/client/cli/query_params.go @@ -3,9 +3,9 @@ package cli import ( "context" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/tx.go b/x/blob/client/cli/tx.go index 0b916aee3f..83cc3c3e56 100644 --- a/x/blob/client/cli/tx.go +++ b/x/blob/client/cli/tx.go @@ -3,8 +3,8 @@ package cli import ( "fmt" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/testutil/integration_test.go b/x/blob/client/testutil/integration_test.go index 4adc9cf52a..5e2811db96 100644 --- a/x/blob/client/testutil/integration_test.go +++ b/x/blob/client/testutil/integration_test.go @@ -16,11 +16,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - paycli "github.com/celestiaorg/celestia-app/v2/x/blob/client/cli" appns "github.com/celestiaorg/go-square/namespace" + paycli "github.com/rootulp/celestia-app/x/blob/client/cli" abci "github.com/tendermint/tendermint/abci/types" ) diff --git a/x/blob/genesis.go b/x/blob/genesis.go index 8076f9eb9b..98dd5559b1 100644 --- a/x/blob/genesis.go +++ b/x/blob/genesis.go @@ -1,9 +1,9 @@ package blob import ( - "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/blob/handler.go b/x/blob/handler.go index d0ce2fb40d..a888d1258b 100644 --- a/x/blob/handler.go +++ b/x/blob/handler.go @@ -4,10 +4,10 @@ import ( "fmt" "cosmossdk.io/errors" - "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" ) // NewHandler uses the provided blob keeper to create an sdk.Handler diff --git a/x/blob/keeper/gas_test.go b/x/blob/keeper/gas_test.go index 06311a92f8..1a3b8f9b79 100644 --- a/x/blob/keeper/gas_test.go +++ b/x/blob/keeper/gas_test.go @@ -4,8 +4,8 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) diff --git a/x/blob/keeper/genesis_test.go b/x/blob/keeper/genesis_test.go index f791f9095d..ca4dee2c1a 100644 --- a/x/blob/keeper/genesis_test.go +++ b/x/blob/keeper/genesis_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" - "github.com/celestiaorg/celestia-app/v2/x/blob" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/grpc_query.go b/x/blob/keeper/grpc_query.go index 0db537b1eb..57b49b1f04 100644 --- a/x/blob/keeper/grpc_query.go +++ b/x/blob/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/blob/keeper/grpc_query_params.go b/x/blob/keeper/grpc_query_params.go index 9e4708a6d8..90aae0c419 100644 --- a/x/blob/keeper/grpc_query_params.go +++ b/x/blob/keeper/grpc_query_params.go @@ -3,8 +3,8 @@ package keeper import ( "context" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/x/blob/keeper/grpc_query_params_test.go b/x/blob/keeper/grpc_query_params_test.go index a531d173fd..a97d25744e 100644 --- a/x/blob/keeper/grpc_query_params_test.go +++ b/x/blob/keeper/grpc_query_params_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/keeper.go b/x/blob/keeper/keeper.go index 871c947634..cb0126f7b4 100644 --- a/x/blob/keeper/keeper.go +++ b/x/blob/keeper/keeper.go @@ -4,10 +4,10 @@ import ( "context" "fmt" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/tendermint/tendermint/libs/log" ) diff --git a/x/blob/keeper/keeper_test.go b/x/blob/keeper/keeper_test.go index c1c83959ad..5d848514f2 100644 --- a/x/blob/keeper/keeper_test.go +++ b/x/blob/keeper/keeper_test.go @@ -7,8 +7,6 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" testutil "github.com/celestiaorg/celestia-app/v2/test/util" - "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/codec" @@ -16,6 +14,8 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/gogo/protobuf/proto" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/keeper/msg_server.go b/x/blob/keeper/msg_server.go index 81ea4b1d62..2ec1c069a3 100644 --- a/x/blob/keeper/msg_server.go +++ b/x/blob/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" ) var _ types.MsgServer = msgServer{} diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index e4e4eee3c1..8b32725a43 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -1,8 +1,8 @@ package keeper import ( - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" ) // GetParams gets all parameters as types.Params diff --git a/x/blob/keeper/params_test.go b/x/blob/keeper/params_test.go index 0fc5d4c746..ee914f2192 100644 --- a/x/blob/keeper/params_test.go +++ b/x/blob/keeper/params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "testing" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/module.go b/x/blob/module.go index a5414cbc3e..ef9ab40e40 100644 --- a/x/blob/module.go +++ b/x/blob/module.go @@ -11,14 +11,14 @@ import ( abci "github.com/tendermint/tendermint/abci/types" - "github.com/celestiaorg/celestia-app/v2/x/blob/client/cli" - "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/rootulp/celestia-app/x/blob/client/cli" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" ) var ( diff --git a/x/blob/test/decode_blob_tx_test.go b/x/blob/test/decode_blob_tx_test.go index cc683b44f5..fdd7dde456 100644 --- a/x/blob/test/decode_blob_tx_test.go +++ b/x/blob/test/decode_blob_tx_test.go @@ -11,9 +11,9 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/cosmos/cosmos-sdk/types" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/tendermint/tendermint/proto/tendermint/blockchain" ) diff --git a/x/blob/types/blob_tx_test.go b/x/blob/types/blob_tx_test.go index 47e0bfea48..6ea7aa04ce 100644 --- a/x/blob/types/blob_tx_test.go +++ b/x/blob/types/blob_tx_test.go @@ -10,13 +10,13 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" "github.com/celestiaorg/go-square/merkle" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmrand "github.com/tendermint/tendermint/libs/rand" diff --git a/x/blob/types/estimate_gas_test.go b/x/blob/types/estimate_gas_test.go index bb13c4b9ed..38ddbeddc5 100644 --- a/x/blob/types/estimate_gas_test.go +++ b/x/blob/types/estimate_gas_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/go-square/blob" "github.com/stretchr/testify/require" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" abci "github.com/tendermint/tendermint/abci/types" tmrand "github.com/tendermint/tendermint/libs/rand" ) diff --git a/x/blob/types/genesis_test.go b/x/blob/types/genesis_test.go index 0f8364d88b..f952053a3e 100644 --- a/x/blob/types/genesis_test.go +++ b/x/blob/types/genesis_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/types/payforblob_test.go b/x/blob/types/payforblob_test.go index a665c3da53..1df654322a 100644 --- a/x/blob/types/payforblob_test.go +++ b/x/blob/types/payforblob_test.go @@ -8,12 +8,12 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" appns "github.com/celestiaorg/go-square/namespace" shares "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto/merkle" From 1b38c5bd6a5edf9e436d3e0a17649e0a0f917551 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 31 Jul 2024 16:12:15 -0400 Subject: [PATCH 017/140] feat: new go mod for x/blob --- app/ante/ante.go | 4 +- app/app.go | 4 +- app/check_tx.go | 2 +- app/errors/insufficient_gas_price_test.go | 2 +- app/errors/nonce_mismatch_test.go | 2 +- app/modules.go | 4 +- app/process_proposal.go | 2 +- app/test/big_blob_test.go | 2 +- app/test/check_tx_test.go | 2 +- app/test/integration_test.go | 2 +- app/test/priority_test.go | 2 +- app/test/square_size_test.go | 2 +- go.mod | 26 +++++----- go.sum | 54 ++++++++++---------- node/go.mod | 22 ++++---- node/go.sum | 38 +++++++------- pkg/user/signer.go | 2 +- pkg/user/tx_client.go | 2 +- test/e2e/benchmark/manifest.go | 2 +- test/txsim/blob.go | 2 +- test/txsim/run_test.go | 2 +- test/util/blobfactory/payforblob_factory.go | 2 +- test/util/genesis/modifier.go | 2 +- test/util/sdkutil/proposals.go | 2 +- test/util/testnode/full_node_test.go | 2 +- test/util/testnode/node_interaction_api.go | 2 +- x/blob/ante/ante.go | 2 +- x/blob/ante/ante_test.go | 4 +- x/blob/ante/blob_share_decorator.go | 2 +- x/blob/ante/blob_share_decorator_test.go | 4 +- x/blob/ante/max_total_blob_size_ante.go | 2 +- x/blob/ante/max_total_blob_size_ante_test.go | 4 +- x/blob/client/cli/payforblob.go | 2 +- x/blob/client/cli/query.go | 2 +- x/blob/client/cli/query_params.go | 2 +- x/blob/client/cli/tx.go | 2 +- x/blob/client/testutil/integration_test.go | 4 +- x/blob/genesis.go | 4 +- x/blob/go.mod | 2 +- x/blob/handler.go | 4 +- x/blob/keeper/gas_test.go | 2 +- x/blob/keeper/genesis_test.go | 4 +- x/blob/keeper/grpc_query.go | 2 +- x/blob/keeper/grpc_query_params.go | 2 +- x/blob/keeper/grpc_query_params_test.go | 2 +- x/blob/keeper/keeper.go | 2 +- x/blob/keeper/keeper_test.go | 4 +- x/blob/keeper/msg_server.go | 2 +- x/blob/keeper/params.go | 2 +- x/blob/keeper/params_test.go | 2 +- x/blob/module.go | 6 +-- x/blob/test/decode_blob_tx_test.go | 2 +- x/blob/types/blob_tx_test.go | 2 +- x/blob/types/estimate_gas_test.go | 2 +- x/blob/types/genesis_test.go | 2 +- x/blob/types/payforblob_test.go | 2 +- x/paramfilter/test/gov_params_test.go | 2 +- 57 files changed, 134 insertions(+), 138 deletions(-) diff --git a/app/ante/ante.go b/app/ante/ante.go index dfacee7afd..e7ffe2a1b8 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -1,8 +1,8 @@ package ante import ( - blobante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" + blobante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/keeper" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/signing" diff --git a/app/app.go b/app/app.go index 0c0decfd0a..6c18fda501 100644 --- a/app/app.go +++ b/app/app.go @@ -12,8 +12,6 @@ import ( appv1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" appv2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" "github.com/celestiaorg/celestia-app/v2/pkg/proof" - blobkeeper "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" blobstreamkeeper "github.com/celestiaorg/celestia-app/v2/x/blobstream/keeper" blobstreamtypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" "github.com/celestiaorg/celestia-app/v2/x/minfee" @@ -23,6 +21,8 @@ import ( "github.com/celestiaorg/celestia-app/v2/x/signal" signaltypes "github.com/celestiaorg/celestia-app/v2/x/signal/types" "github.com/celestiaorg/celestia-app/v2/x/tokenfilter" + blobkeeper "github.com/celestiaorg/celestia-app/x/blob/keeper" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" diff --git a/app/check_tx.go b/app/check_tx.go index e0ddaeb8eb..8e23b70556 100644 --- a/app/check_tx.go +++ b/app/check_tx.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" abci "github.com/tendermint/tendermint/abci/types" diff --git a/app/errors/insufficient_gas_price_test.go b/app/errors/insufficient_gas_price_test.go index be501b701f..e17cc6bbb9 100644 --- a/app/errors/insufficient_gas_price_test.go +++ b/app/errors/insufficient_gas_price_test.go @@ -12,7 +12,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" testutil "github.com/celestiaorg/celestia-app/v2/test/util" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" diff --git a/app/errors/nonce_mismatch_test.go b/app/errors/nonce_mismatch_test.go index b07cb76147..46a469a8bc 100644 --- a/app/errors/nonce_mismatch_test.go +++ b/app/errors/nonce_mismatch_test.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" testutil "github.com/celestiaorg/celestia-app/v2/test/util" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/ante" diff --git a/app/modules.go b/app/modules.go index 0a18a50b3a..f3d686dd13 100644 --- a/app/modules.go +++ b/app/modules.go @@ -5,8 +5,6 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/app/module" - "github.com/celestiaorg/celestia-app/v2/x/blob" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/celestia-app/v2/x/blobstream" blobstreamtypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" "github.com/celestiaorg/celestia-app/v2/x/minfee" @@ -14,6 +12,8 @@ import ( minttypes "github.com/celestiaorg/celestia-app/v2/x/mint/types" "github.com/celestiaorg/celestia-app/v2/x/signal" signaltypes "github.com/celestiaorg/celestia-app/v2/x/signal/types" + "github.com/celestiaorg/celestia-app/x/blob" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" sdkmodule "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/app/process_proposal.go b/app/process_proposal.go index 1653e27200..0e796b4232 100644 --- a/app/process_proposal.go +++ b/app/process_proposal.go @@ -8,7 +8,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/ante" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/da" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/shares" "github.com/celestiaorg/go-square/square" diff --git a/app/test/big_blob_test.go b/app/test/big_blob_test.go index e3cd56e84c..b5dc8cc62f 100644 --- a/app/test/big_blob_test.go +++ b/app/test/big_blob_test.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" diff --git a/app/test/check_tx_test.go b/app/test/check_tx_test.go index 8502941300..1d8ea52b94 100644 --- a/app/test/check_tx_test.go +++ b/app/test/check_tx_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" testutil "github.com/celestiaorg/celestia-app/v2/test/util" "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/stretchr/testify/assert" diff --git a/app/test/integration_test.go b/app/test/integration_test.go index 274b4264cd..b6b008e340 100644 --- a/app/test/integration_test.go +++ b/app/test/integration_test.go @@ -23,7 +23,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/da" "github.com/celestiaorg/celestia-app/v2/pkg/user" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/celestiaorg/go-square/square" diff --git a/app/test/priority_test.go b/app/test/priority_test.go index c695615611..db0c057a49 100644 --- a/app/test/priority_test.go +++ b/app/test/priority_test.go @@ -17,7 +17,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" diff --git a/app/test/square_size_test.go b/app/test/square_size_test.go index 28748a3bf7..6021227e33 100644 --- a/app/test/square_size_test.go +++ b/app/test/square_size_test.go @@ -15,7 +15,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/sdkutil" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" oldgov "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" diff --git a/go.mod b/go.mod index ee75956951..16ea2497c6 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,9 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 + github.com/celestiaorg/celestia-app/x/blob v1.0.0 github.com/celestiaorg/go-square v1.1.0 - github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 + github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 github.com/celestiaorg/knuu v0.14.0 github.com/celestiaorg/nmt v0.22.0 github.com/celestiaorg/rsmt2d v0.14.0 @@ -24,16 +25,15 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/rs/zerolog v1.33.0 github.com/spf13/cast v1.6.0 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 - golang.org/x/exp v0.0.0-20240213143201-ec583247a57a - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 + google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 - gopkg.in/yaml.v2 v2.4.0 ) require ( @@ -131,7 +131,6 @@ require ( github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-uuid v1.0.2 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -185,7 +184,6 @@ require ( github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect - github.com/rivo/uniseg v0.4.4 // indirect github.com/rs/cors v1.8.3 // indirect github.com/rs/xid v1.5.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -219,19 +217,20 @@ require ( go.opentelemetry.io/proto/otlp v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.28.2 // indirect k8s.io/apimachinery v0.28.2 // indirect @@ -247,6 +246,7 @@ require ( ) replace ( + github.com/celestiaorg/celestia-app/x/blob => ./x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/go.sum b/go.sum index 42ba33e2ce..bf8dcf790c 100644 --- a/go.sum +++ b/go.sum @@ -324,8 +324,8 @@ github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0 github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= -github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= -github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= github.com/celestiaorg/knuu v0.14.0 h1:96uaDHTzlTfhDLrAiygq9Ewow7UzOzGAbUvMwws1S4A= github.com/celestiaorg/knuu v0.14.0/go.mod h1:5x/+tlLebBSfLmmSBm2ps6aLjnKLn5bOaZpUfI5FpsA= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= @@ -436,8 +436,8 @@ github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7 github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= @@ -827,9 +827,8 @@ github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoD github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -1184,9 +1183,8 @@ github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNw github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= @@ -1240,8 +1238,8 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1435,8 +1433,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1451,8 +1449,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1544,8 +1542,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1701,14 +1699,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1719,8 +1717,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1793,8 +1791,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1980,10 +1978,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/node/go.mod b/node/go.mod index 0a88d36698..2004ea27e1 100644 --- a/node/go.mod +++ b/node/go.mod @@ -35,7 +35,7 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect - github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect + github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect github.com/celestiaorg/nmt v0.22.0 // indirect github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect @@ -180,19 +180,19 @@ require ( go.opentelemetry.io/otel/sdk v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -204,10 +204,10 @@ require ( ) replace ( - // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() - github.com/celestiaorg/celestia-app/v2 => ../ // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 + // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() + github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/go.sum b/node/go.sum index 514279d105..da68c151a3 100644 --- a/node/go.sum +++ b/node/go.sum @@ -313,16 +313,14 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= -github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 h1:s+F8q10ir9D5DN0STZhdOKKauzXkt/HizkEOCDUoCXA= -github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4/go.mod h1:t/balaAQzi5r/68uHqwEBPc9vofN9CDhtkp3cNEvo2w= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= -github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= -github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= @@ -1369,8 +1367,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1385,8 +1383,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1478,8 +1476,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1633,14 +1631,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1651,8 +1649,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1909,10 +1907,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/pkg/user/signer.go b/pkg/user/signer.go index 2beaa277d0..4f600e217a 100644 --- a/pkg/user/signer.go +++ b/pkg/user/signer.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" ) // Signer is struct for building and signing Celestia transactions diff --git a/pkg/user/tx_client.go b/pkg/user/tx_client.go index 7897f0e578..89b251703f 100644 --- a/pkg/user/tx_client.go +++ b/pkg/user/tx_client.go @@ -27,8 +27,8 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" apperrors "github.com/celestiaorg/celestia-app/v2/app/errors" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/celestia-app/v2/x/minfee" + "github.com/celestiaorg/celestia-app/x/blob/types" ) const ( diff --git a/test/e2e/benchmark/manifest.go b/test/e2e/benchmark/manifest.go index 979d009e98..a101c722e6 100644 --- a/test/e2e/benchmark/manifest.go +++ b/test/e2e/benchmark/manifest.go @@ -8,7 +8,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/test/e2e/testnet" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) diff --git a/test/txsim/blob.go b/test/txsim/blob.go index 23b954c6ad..e9a44b4d09 100644 --- a/test/txsim/blob.go +++ b/test/txsim/blob.go @@ -7,7 +7,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blob "github.com/celestiaorg/celestia-app/x/blob/types" ns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/types" "github.com/gogo/protobuf/grpc" diff --git a/test/txsim/run_test.go b/test/txsim/run_test.go index 0c595befd9..49969fa531 100644 --- a/test/txsim/run_test.go +++ b/test/txsim/run_test.go @@ -17,7 +17,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" - blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blob "github.com/celestiaorg/celestia-app/x/blob/types" bank "github.com/cosmos/cosmos-sdk/x/bank/types" distribution "github.com/cosmos/cosmos-sdk/x/distribution/types" staking "github.com/cosmos/cosmos-sdk/x/staking/types" diff --git a/test/util/blobfactory/payforblob_factory.go b/test/util/blobfactory/payforblob_factory.go index 9860999940..524ff7dfd1 100644 --- a/test/util/blobfactory/payforblob_factory.go +++ b/test/util/blobfactory/payforblob_factory.go @@ -9,7 +9,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/user" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client" diff --git a/test/util/genesis/modifier.go b/test/util/genesis/modifier.go index 20c62fb768..91da6b2cd7 100644 --- a/test/util/genesis/modifier.go +++ b/test/util/genesis/modifier.go @@ -5,8 +5,8 @@ import ( "time" "github.com/celestiaorg/celestia-app/v2/app" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" bstypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/test/util/sdkutil/proposals.go b/test/util/sdkutil/proposals.go index 515ada09ae..bd4b7b35c6 100644 --- a/test/util/sdkutil/proposals.go +++ b/test/util/sdkutil/proposals.go @@ -3,7 +3,7 @@ package sdkutil import ( "fmt" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/x/params/types/proposal" diff --git a/test/util/testnode/full_node_test.go b/test/util/testnode/full_node_test.go index b217ffeee7..884d703400 100644 --- a/test/util/testnode/full_node_test.go +++ b/test/util/testnode/full_node_test.go @@ -10,7 +10,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/stretchr/testify/require" diff --git a/test/util/testnode/node_interaction_api.go b/test/util/testnode/node_interaction_api.go index 44d997ea5a..a992bc8125 100644 --- a/test/util/testnode/node_interaction_api.go +++ b/test/util/testnode/node_interaction_api.go @@ -12,7 +12,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/user" "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/celestiaorg/go-square/shares" diff --git a/x/blob/ante/ante.go b/x/blob/ante/ante.go index 0266060e83..68912bb38d 100644 --- a/x/blob/ante/ante.go +++ b/x/blob/ante/ante.go @@ -1,7 +1,7 @@ package ante import ( - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/ante_test.go b/x/blob/ante/ante_test.go index 1ef8a8469c..19a33eba80 100644 --- a/x/blob/ante/ante_test.go +++ b/x/blob/ante/ante_test.go @@ -6,10 +6,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + ante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - ante "github.com/rootulp/celestia-app/x/blob/ante" - blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/ante/blob_share_decorator.go b/x/blob/ante/blob_share_decorator.go index 230c7bbcce..0879efb431 100644 --- a/x/blob/ante/blob_share_decorator.go +++ b/x/blob/ante/blob_share_decorator.go @@ -3,8 +3,8 @@ package ante import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/blob_share_decorator_test.go b/x/blob/ante/blob_share_decorator_test.go index 5342b71c7f..0a0ec276e3 100644 --- a/x/blob/ante/blob_share_decorator_test.go +++ b/x/blob/ante/blob_share_decorator_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + ante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - ante "github.com/rootulp/celestia-app/x/blob/ante" - blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/ante/max_total_blob_size_ante.go b/x/blob/ante/max_total_blob_size_ante.go index 3bd44fd262..eedd1401f2 100644 --- a/x/blob/ante/max_total_blob_size_ante.go +++ b/x/blob/ante/max_total_blob_size_ante.go @@ -4,9 +4,9 @@ import ( "cosmossdk.io/errors" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" ) // MaxTotalBlobSizeDecorator helps to prevent a PFB from being included in a diff --git a/x/blob/ante/max_total_blob_size_ante_test.go b/x/blob/ante/max_total_blob_size_ante_test.go index b213f96d4f..afabf41bcc 100644 --- a/x/blob/ante/max_total_blob_size_ante_test.go +++ b/x/blob/ante/max_total_blob_size_ante_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + ante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - ante "github.com/rootulp/celestia-app/x/blob/ante" - blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/client/cli/payforblob.go b/x/blob/client/cli/payforblob.go index 03fd00000b..966d3cdddb 100644 --- a/x/blob/client/cli/payforblob.go +++ b/x/blob/client/cli/payforblob.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client" @@ -19,7 +20,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/input" sdktx "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" ) const ( diff --git a/x/blob/client/cli/query.go b/x/blob/client/cli/query.go index 5452ade7e7..1c87f71530 100644 --- a/x/blob/client/cli/query.go +++ b/x/blob/client/cli/query.go @@ -3,8 +3,8 @@ package cli import ( "fmt" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/query_params.go b/x/blob/client/cli/query_params.go index c8751a2442..0fc3b95b5b 100644 --- a/x/blob/client/cli/query_params.go +++ b/x/blob/client/cli/query_params.go @@ -3,9 +3,9 @@ package cli import ( "context" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/tx.go b/x/blob/client/cli/tx.go index 83cc3c3e56..825eb6bd0b 100644 --- a/x/blob/client/cli/tx.go +++ b/x/blob/client/cli/tx.go @@ -3,8 +3,8 @@ package cli import ( "fmt" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/testutil/integration_test.go b/x/blob/client/testutil/integration_test.go index 5e2811db96..eb20f3ffc3 100644 --- a/x/blob/client/testutil/integration_test.go +++ b/x/blob/client/testutil/integration_test.go @@ -16,11 +16,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + paycli "github.com/celestiaorg/celestia-app/x/blob/client/cli" appns "github.com/celestiaorg/go-square/namespace" - paycli "github.com/rootulp/celestia-app/x/blob/client/cli" abci "github.com/tendermint/tendermint/abci/types" ) diff --git a/x/blob/genesis.go b/x/blob/genesis.go index 98dd5559b1..f21f8514f8 100644 --- a/x/blob/genesis.go +++ b/x/blob/genesis.go @@ -1,9 +1,9 @@ package blob import ( + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/blob/go.mod b/x/blob/go.mod index 4f503476bc..3ced26aea8 100644 --- a/x/blob/go.mod +++ b/x/blob/go.mod @@ -1,4 +1,4 @@ -module github.com/rootulp/celestia-app/x/blob +module github.com/celestiaorg/celestia-app/x/blob go 1.22.4 diff --git a/x/blob/handler.go b/x/blob/handler.go index a888d1258b..91050ff4b0 100644 --- a/x/blob/handler.go +++ b/x/blob/handler.go @@ -4,10 +4,10 @@ import ( "fmt" "cosmossdk.io/errors" + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" ) // NewHandler uses the provided blob keeper to create an sdk.Handler diff --git a/x/blob/keeper/gas_test.go b/x/blob/keeper/gas_test.go index 1a3b8f9b79..e000db8b39 100644 --- a/x/blob/keeper/gas_test.go +++ b/x/blob/keeper/gas_test.go @@ -4,8 +4,8 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) diff --git a/x/blob/keeper/genesis_test.go b/x/blob/keeper/genesis_test.go index ca4dee2c1a..5dc450c55e 100644 --- a/x/blob/keeper/genesis_test.go +++ b/x/blob/keeper/genesis_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" - "github.com/rootulp/celestia-app/x/blob" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/grpc_query.go b/x/blob/keeper/grpc_query.go index 57b49b1f04..a81d6f19f3 100644 --- a/x/blob/keeper/grpc_query.go +++ b/x/blob/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/blob/keeper/grpc_query_params.go b/x/blob/keeper/grpc_query_params.go index 90aae0c419..492c428c26 100644 --- a/x/blob/keeper/grpc_query_params.go +++ b/x/blob/keeper/grpc_query_params.go @@ -3,8 +3,8 @@ package keeper import ( "context" + "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/x/blob/keeper/grpc_query_params_test.go b/x/blob/keeper/grpc_query_params_test.go index a97d25744e..3398c8ecae 100644 --- a/x/blob/keeper/grpc_query_params_test.go +++ b/x/blob/keeper/grpc_query_params_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" + "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/keeper.go b/x/blob/keeper/keeper.go index cb0126f7b4..bb69acfd29 100644 --- a/x/blob/keeper/keeper.go +++ b/x/blob/keeper/keeper.go @@ -4,10 +4,10 @@ import ( "context" "fmt" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/tendermint/tendermint/libs/log" ) diff --git a/x/blob/keeper/keeper_test.go b/x/blob/keeper/keeper_test.go index 5d848514f2..41f6df1491 100644 --- a/x/blob/keeper/keeper_test.go +++ b/x/blob/keeper/keeper_test.go @@ -7,6 +7,8 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" testutil "github.com/celestiaorg/celestia-app/v2/test/util" + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/codec" @@ -14,8 +16,6 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/gogo/protobuf/proto" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/keeper/msg_server.go b/x/blob/keeper/msg_server.go index 2ec1c069a3..8dbda328d3 100644 --- a/x/blob/keeper/msg_server.go +++ b/x/blob/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" ) var _ types.MsgServer = msgServer{} diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index 8b32725a43..9be99523fa 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -1,8 +1,8 @@ package keeper import ( + "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" ) // GetParams gets all parameters as types.Params diff --git a/x/blob/keeper/params_test.go b/x/blob/keeper/params_test.go index ee914f2192..95a533d880 100644 --- a/x/blob/keeper/params_test.go +++ b/x/blob/keeper/params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "testing" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/module.go b/x/blob/module.go index ef9ab40e40..575458023f 100644 --- a/x/blob/module.go +++ b/x/blob/module.go @@ -11,14 +11,14 @@ import ( abci "github.com/tendermint/tendermint/abci/types" + "github.com/celestiaorg/celestia-app/x/blob/client/cli" + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/rootulp/celestia-app/x/blob/client/cli" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" ) var ( diff --git a/x/blob/test/decode_blob_tx_test.go b/x/blob/test/decode_blob_tx_test.go index fdd7dde456..20faf4401f 100644 --- a/x/blob/test/decode_blob_tx_test.go +++ b/x/blob/test/decode_blob_tx_test.go @@ -11,9 +11,9 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/cosmos/cosmos-sdk/types" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/tendermint/tendermint/proto/tendermint/blockchain" ) diff --git a/x/blob/types/blob_tx_test.go b/x/blob/types/blob_tx_test.go index 6ea7aa04ce..1964edde33 100644 --- a/x/blob/types/blob_tx_test.go +++ b/x/blob/types/blob_tx_test.go @@ -10,13 +10,13 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" "github.com/celestiaorg/go-square/merkle" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmrand "github.com/tendermint/tendermint/libs/rand" diff --git a/x/blob/types/estimate_gas_test.go b/x/blob/types/estimate_gas_test.go index 38ddbeddc5..bfeaec94f9 100644 --- a/x/blob/types/estimate_gas_test.go +++ b/x/blob/types/estimate_gas_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/go-square/blob" "github.com/stretchr/testify/require" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" abci "github.com/tendermint/tendermint/abci/types" tmrand "github.com/tendermint/tendermint/libs/rand" ) diff --git a/x/blob/types/genesis_test.go b/x/blob/types/genesis_test.go index f952053a3e..63359d58b3 100644 --- a/x/blob/types/genesis_test.go +++ b/x/blob/types/genesis_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/types/payforblob_test.go b/x/blob/types/payforblob_test.go index 1df654322a..b7aac4a4aa 100644 --- a/x/blob/types/payforblob_test.go +++ b/x/blob/types/payforblob_test.go @@ -8,12 +8,12 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" appns "github.com/celestiaorg/go-square/namespace" shares "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto/merkle" diff --git a/x/paramfilter/test/gov_params_test.go b/x/paramfilter/test/gov_params_test.go index c9c6b83efa..6fa7cf776c 100644 --- a/x/paramfilter/test/gov_params_test.go +++ b/x/paramfilter/test/gov_params_test.go @@ -6,10 +6,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" testutil "github.com/celestiaorg/celestia-app/v2/test/util" - blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" bsmoduletypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" minfeetypes "github.com/celestiaorg/celestia-app/v2/x/minfee" "github.com/celestiaorg/celestia-app/v2/x/paramfilter" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" From 162a5919e78398d06d56997e6da32f93bfe71a56 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 1 Aug 2024 16:47:01 -0400 Subject: [PATCH 018/140] wip: error because ambiguous import error while importing github.com/celestiaorg/celestia-app/v2/app: ambiguous import: found package github.com/celestiaorg/celestia-app/x/blob in multiple modules: github.com/celestiaorg/celestia-app v1.13.0 (/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-app@v1.13.0/x/blob) github.com/celestiaorg/celestia-app/x/blob v0.0.0 (/Users/rootulp/git/rootulp/celestiaorg/celestia-app/x/blob) --- Makefile | 2 +- app/ante/ante.go | 12 ++++++------ go.mod | 2 +- node/go.mod | 7 ++++--- node/utils/apps.go | 32 ++++++++++++++++---------------- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/Makefile b/Makefile index 51f566edfd..1d761eccef 100644 --- a/Makefile +++ b/Makefile @@ -217,6 +217,6 @@ prebuilt-binary: build-node: @echo "--> Building celestia-app/node and outputting binary to build/node" @mkdir -p build/ - @cd ./node && go build -o ../build/node . + @cd ./node && go build -v -o ../build/node . @go mod tidy .PHONY: build-node diff --git a/app/ante/ante.go b/app/ante/ante.go index e7ffe2a1b8..d271692c41 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -1,8 +1,8 @@ package ante import ( - blobante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/keeper" + blobsnewante "github.com/celestiaorg/celestia-app/x/blob/ante" + blobkeeper "github.com/celestiaorg/celestia-app/x/blob/keeper" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/signing" @@ -15,7 +15,7 @@ import ( func NewAnteHandler( accountKeeper ante.AccountKeeper, bankKeeper authtypes.BankKeeper, - blobKeeper blob.Keeper, + blobKeeper blobkeeper.Keeper, feegrantKeeper ante.FeegrantKeeper, signModeHandler signing.SignModeHandler, sigGasConsumer ante.SignatureVerificationGasConsumer, @@ -63,14 +63,14 @@ func NewAnteHandler( // Ensure that the tx's gas limit is > the gas consumed based on the blob size(s). // Contract: must be called after all decorators that consume gas. // Note: does not consume gas from the gas meter. - blobante.NewMinGasPFBDecorator(blobKeeper), + blobsnewante.NewMinGasPFBDecorator(blobKeeper), // Ensure that the tx's total blob size is <= the max blob size. // Only applies to app version == 1. - blobante.NewMaxTotalBlobSizeDecorator(blobKeeper), + blobsnewante.NewMaxTotalBlobSizeDecorator(blobKeeper), // Ensure that the blob shares occupied by the tx <= the max shares // available to blob data in a data square. Only applies to app version // >= 2. - blobante.NewBlobShareDecorator(blobKeeper), + blobsnewante.NewBlobShareDecorator(blobKeeper), // Ensure that tx's with a MsgSubmitProposal have at least one proposal // message. NewGovProposalDecorator(), diff --git a/go.mod b/go.mod index 16ea2497c6..8b8ed2030f 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 - github.com/celestiaorg/celestia-app/x/blob v1.0.0 + github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/celestiaorg/go-square v1.1.0 github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 github.com/celestiaorg/knuu v0.14.0 diff --git a/node/go.mod b/node/go.mod index 2004ea27e1..3d515dc7bf 100644 --- a/node/go.mod +++ b/node/go.mod @@ -3,8 +3,8 @@ module github.com/celestiaorg/celestia-app/node go 1.22.4 require ( - github.com/celestiaorg/celestia-app v1.13.0 - github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 + github.com/celestiaorg/celestia-app/v2 v2.0.0 + github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 @@ -34,11 +34,11 @@ require ( github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/celestia-app v1.13.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect github.com/celestiaorg/nmt v0.22.0 // indirect - github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect github.com/celestiaorg/rsmt2d v0.14.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect @@ -208,6 +208,7 @@ replace ( cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ + github.com/celestiaorg/celestia-app/x/blob => ../x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/utils/apps.go b/node/utils/apps.go index dd4212546e..6c5e44b1ef 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -1,8 +1,8 @@ package utils import ( - v1 "github.com/celestiaorg/celestia-app/app" - v1encoding "github.com/celestiaorg/celestia-app/app/encoding" + // v1 "github.com/celestiaorg/celestia-app/app" + // v1encoding "github.com/celestiaorg/celestia-app/app/encoding" v2 "github.com/celestiaorg/celestia-app/v2/app" v2encoding "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/tendermint/tendermint/abci/types" @@ -11,24 +11,24 @@ import ( ) func GetApps() []types.Application { - v1 := NewAppV1() + // v1 := NewAppV1() v2 := NewAppV2() - return []types.Application{v1, v2} + return []types.Application{v2} } -func NewAppV1() *v1.App { - logger := log.NewNopLogger() - db := tmdb.NewMemDB() - traceStore := &NoopWriter{} - loadLatest := true - skipUpgradeHeights := make(map[int64]bool) - homePath := "" - invCheckPeriod := uint(1) - encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) - appOptions := NoopAppOptions{} +// func NewAppV1() *v1.App { +// logger := log.NewNopLogger() +// db := tmdb.NewMemDB() +// traceStore := &NoopWriter{} +// loadLatest := true +// skipUpgradeHeights := make(map[int64]bool) +// homePath := "" +// invCheckPeriod := uint(1) +// encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) +// appOptions := NoopAppOptions{} - return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) -} +// return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) +// } func NewAppV2() *v2.App { logger := log.NewNopLogger() From 34fdad517c235d4252304fcf9931a94155f05631 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 13:55:12 -0400 Subject: [PATCH 019/140] comments --- node/go.mod | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/node/go.mod b/node/go.mod index 3d515dc7bf..50116bb77f 100644 --- a/node/go.mod +++ b/node/go.mod @@ -3,8 +3,9 @@ module github.com/celestiaorg/celestia-app/node go 1.22.4 require ( - github.com/celestiaorg/celestia-app/v2 v2.0.0 + github.com/celestiaorg/celestia-app v0.0.0 github.com/celestiaorg/celestia-app/x/blob v0.0.0 + github.com/celestiaorg/celestia-app/v2 v2.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 @@ -206,9 +207,12 @@ require ( replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 - // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() + // replace celestia-app with a fork because this fork _should_ not include x/blob any more. + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.1.0 + // replace x/blob with a distinct Go module that contains x/blob. + github.com/celestiaorg/celestia-app/x/blob => github.com/rootulp/celestia-app/x/blob v1.4.0 + // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init(). github.com/celestiaorg/celestia-app/v2 => ../ - github.com/celestiaorg/celestia-app/x/blob => ../x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 From c8abd649b449e29eaa5dd4dbdf873be1671e0312 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 14:57:43 -0400 Subject: [PATCH 020/140] feat: remove x/blob in favor of rootulp/blob --- go.mod | 3 +- go.sum | 10 +- node/go.mod | 19 +- node/go.sum | 22 +- x/blob/README.md | 206 -- x/blob/ante/ante.go | 52 - x/blob/ante/ante_test.go | 115 - x/blob/ante/blob_share_decorator.go | 83 - x/blob/ante/blob_share_decorator_test.go | 178 -- x/blob/ante/max_total_blob_size_ante.go | 83 - x/blob/ante/max_total_blob_size_ante_test.go | 139 -- x/blob/client/cli/payforblob.go | 291 --- x/blob/client/cli/query.go | 25 - x/blob/client/cli/query_params.go | 34 - x/blob/client/cli/tx.go | 24 - x/blob/client/cli/util.go | 32 - x/blob/client/testutil/integration_test.go | 194 -- x/blob/doc.go | 4 - x/blob/genesis.go | 20 - x/blob/go.mod | 208 -- x/blob/go.sum | 2025 ------------------ x/blob/handler.go | 28 - x/blob/keeper/gas_test.go | 85 - x/blob/keeper/genesis_test.go | 21 - x/blob/keeper/grpc_query.go | 7 - x/blob/keeper/grpc_query_params.go | 19 - x/blob/keeper/grpc_query_params_test.go | 20 - x/blob/keeper/keeper.go | 57 - x/blob/keeper/keeper_test.go | 107 - x/blob/keeper/msg_server.go | 17 - x/blob/keeper/params.go | 31 - x/blob/keeper/params_test.go | 18 - x/blob/module.go | 165 -- x/blob/test/decode_blob_tx_test.go | 102 - x/blob/test/testdata/block_response.json | 925 -------- x/blob/types/blob_tx.go | 128 -- x/blob/types/blob_tx_test.go | 248 --- x/blob/types/codec.go | 33 - x/blob/types/errors.go | 39 - x/blob/types/estimate_gas_test.go | 110 - x/blob/types/event.pb.go | 487 ----- x/blob/types/events.go | 16 - x/blob/types/genesis.go | 17 - x/blob/types/genesis.pb.go | 321 --- x/blob/types/genesis_test.go | 52 - x/blob/types/keys.go | 22 - x/blob/types/params.go | 95 - x/blob/types/params.pb.go | 341 --- x/blob/types/params_test.go | 44 - x/blob/types/payforblob.go | 258 --- x/blob/types/payforblob_test.go | 410 ---- x/blob/types/query.pb.go | 534 ----- x/blob/types/query.pb.gw.go | 153 -- x/blob/types/tx.pb.go | 875 -------- x/blob/types/tx.pb.gw.go | 169 -- 55 files changed, 30 insertions(+), 9691 deletions(-) delete mode 100644 x/blob/README.md delete mode 100644 x/blob/ante/ante.go delete mode 100644 x/blob/ante/ante_test.go delete mode 100644 x/blob/ante/blob_share_decorator.go delete mode 100644 x/blob/ante/blob_share_decorator_test.go delete mode 100644 x/blob/ante/max_total_blob_size_ante.go delete mode 100644 x/blob/ante/max_total_blob_size_ante_test.go delete mode 100644 x/blob/client/cli/payforblob.go delete mode 100644 x/blob/client/cli/query.go delete mode 100644 x/blob/client/cli/query_params.go delete mode 100644 x/blob/client/cli/tx.go delete mode 100644 x/blob/client/cli/util.go delete mode 100644 x/blob/client/testutil/integration_test.go delete mode 100644 x/blob/doc.go delete mode 100644 x/blob/genesis.go delete mode 100644 x/blob/go.mod delete mode 100644 x/blob/go.sum delete mode 100644 x/blob/handler.go delete mode 100644 x/blob/keeper/gas_test.go delete mode 100644 x/blob/keeper/genesis_test.go delete mode 100644 x/blob/keeper/grpc_query.go delete mode 100644 x/blob/keeper/grpc_query_params.go delete mode 100644 x/blob/keeper/grpc_query_params_test.go delete mode 100644 x/blob/keeper/keeper.go delete mode 100644 x/blob/keeper/keeper_test.go delete mode 100644 x/blob/keeper/msg_server.go delete mode 100644 x/blob/keeper/params.go delete mode 100644 x/blob/keeper/params_test.go delete mode 100644 x/blob/module.go delete mode 100644 x/blob/test/decode_blob_tx_test.go delete mode 100644 x/blob/test/testdata/block_response.json delete mode 100644 x/blob/types/blob_tx.go delete mode 100644 x/blob/types/blob_tx_test.go delete mode 100644 x/blob/types/codec.go delete mode 100644 x/blob/types/errors.go delete mode 100644 x/blob/types/estimate_gas_test.go delete mode 100644 x/blob/types/event.pb.go delete mode 100644 x/blob/types/events.go delete mode 100644 x/blob/types/genesis.go delete mode 100644 x/blob/types/genesis.pb.go delete mode 100644 x/blob/types/genesis_test.go delete mode 100644 x/blob/types/keys.go delete mode 100644 x/blob/types/params.go delete mode 100644 x/blob/types/params.pb.go delete mode 100644 x/blob/types/params_test.go delete mode 100644 x/blob/types/payforblob.go delete mode 100644 x/blob/types/payforblob_test.go delete mode 100644 x/blob/types/query.pb.go delete mode 100644 x/blob/types/query.pb.gw.go delete mode 100644 x/blob/types/tx.pb.go delete mode 100644 x/blob/types/tx.pb.gw.go diff --git a/go.mod b/go.mod index 8b8ed2030f..a259efbb65 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 - github.com/celestiaorg/celestia-app/x/blob v0.0.0 + github.com/celestiaorg/celestia-app v1.14.0 github.com/celestiaorg/go-square v1.1.0 github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 github.com/celestiaorg/knuu v0.14.0 @@ -246,7 +246,6 @@ require ( ) replace ( - github.com/celestiaorg/celestia-app/x/blob => ./x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/go.sum b/go.sum index bf8dcf790c..ef1244506e 100644 --- a/go.sum +++ b/go.sum @@ -318,6 +318,8 @@ github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7 h1:nxplQi8w github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7/go.mod h1:1EF5MfOxVf0WC51Gb7pJ6bcZxnXKNAf9pqWtjgPBAYc= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-app v1.14.0 h1:Av1Q8de41WRABQ+mnwHwj4a6Rd5sqEUZqrTwuA1LbBM= +github.com/celestiaorg/celestia-app v1.14.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -332,6 +334,8 @@ github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= github.com/celestiaorg/nmt v0.22.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 h1:Q8nr5SAtDW5gocrBwqwDJcSS/JedqU58WwQA2SP+nXw= +github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2/go.mod h1:s/LzLUw0WeYPJ6qdk4q46jKLOq7rc9Z5Mdrxtfpcigw= github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= @@ -827,8 +831,9 @@ github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoD github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -1183,8 +1188,9 @@ github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNw github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= diff --git a/node/go.mod b/node/go.mod index 50116bb77f..89a243ba2f 100644 --- a/node/go.mod +++ b/node/go.mod @@ -3,8 +3,6 @@ module github.com/celestiaorg/celestia-app/node go 1.22.4 require ( - github.com/celestiaorg/celestia-app v0.0.0 - github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/celestiaorg/celestia-app/v2 v2.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 @@ -35,7 +33,8 @@ require ( github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect - github.com/celestiaorg/celestia-app v1.13.0 // indirect + github.com/celestiaorg/celestia-app v1.14.0 // indirect + github.com/celestiaorg/celestia-app/x/blob v0.0.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect @@ -181,13 +180,13 @@ require ( go.opentelemetry.io/otel/sdk v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.24.0 // indirect + golang.org/x/crypto v0.25.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect + golang.org/x/sys v0.22.0 // indirect + golang.org/x/term v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect @@ -208,11 +207,11 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app with a fork because this fork _should_ not include x/blob any more. - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.1.0 - // replace x/blob with a distinct Go module that contains x/blob. - github.com/celestiaorg/celestia-app/x/blob => github.com/rootulp/celestia-app/x/blob v1.4.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.20.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init(). github.com/celestiaorg/celestia-app/v2 => ../ + // replace x/blob with a distinct Go module that contains x/blob. + // github.com/celestiaorg/celestia-app/x/blob => github.com/rootulp/blob v1.1.0 github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/go.sum b/node/go.sum index da68c151a3..df7b751cad 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,8 +311,6 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= -github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -1130,6 +1128,10 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rootulp/blob v1.1.0 h1:ynGJrHxMeTIZ+V7eZteDGwy6WTjLA8lGq/Ostvpevkc= +github.com/rootulp/blob v1.1.0/go.mod h1:sjT47TfX4Hix+7QilHHMGV3CsgXcUZ/cksES0kcLoew= +github.com/rootulp/celestia-app v1.20.0 h1:ZBncZbbd7WjhHXot8L7qSsXj9LKIebfs10nlD42eRRA= +github.com/rootulp/celestia-app v1.20.0/go.mod h1:j5ricGhB2uiDTjuZG3X6bbNLUcugGkjyqxVrD9lbcwc= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= @@ -1367,8 +1369,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1476,8 +1478,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1631,14 +1633,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= +golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/x/blob/README.md b/x/blob/README.md deleted file mode 100644 index e72c12db44..0000000000 --- a/x/blob/README.md +++ /dev/null @@ -1,206 +0,0 @@ -# `x/blob` - -## Abstract - -The `x/blob` module enables users to pay for arbitrary data to be published to -the Celestia blockchain. This module's name is derived from Binary Large Object -(blob). - -To use the blob module, users create and submit a `BlobTx` that is composed of: - -1. A single [`sdk.Tx`](https://github.com/celestiaorg/cosmos-sdk/blob/v1.15.0-sdk-v0.46.13/docs/architecture/adr-020-protobuf-transaction-encoding.md) which encapsulates a message of type `MsgPayForBlobs`. -1. Multiple `Blob`s: the data they wish to publish. - -After the `BlobTx` is submitted to the network, a block producer separates the -the `sdk.Tx` from the blob(s). Both components get included in the -[data square](../../specs/src/specs/data_square_layout.md) in different namespaces: - -1. The `sdk.Tx` and some metadata about the separated blobs gets included in the `PayForBlobNamespace` (one of the [reserved namespaces](../../specs/src/specs/namespace.md#reserved-namespaces)). -1. The blob(s) get included in the namespace specified by each blob. - -After a block has been created, the user can verify that their data was included -in a block via a blob inclusion proof. A blob inclusion proof uses the -`ShareCommitment` in the original `sdk.Tx` transaction and subtree roots of the -block's data square to prove to the user that the shares that compose their -original data do in fact exist in a particular block. - -> TODO: link to blob inclusion (and fraud) proof - -## State - -The blob module doesn't maintain it's own state outside of two params. Meaning -that the blob module only uses the params and auth module stores. - -### Params - -```proto -// Params defines the parameters for the module. -message Params { - option (gogoproto.goproto_stringer) = false; - uint32 gas_per_blob_byte = 1 - [ (gogoproto.moretags) = "yaml:\"gas_per_blob_byte\"" ]; - uint64 gov_max_square_size = 2 - [ (gogoproto.moretags) = "yaml:\"gov_max_square_size\"" ]; -} -``` - -#### `GasPerBlobByte` - -`GasPerBlobByte` is the amount of gas that is consumed per byte of blob data -when a `MsgPayForBlobs` is processed. Currently, the default value is 8. This -value is set below that of normal transaction gas consumption, which is 10. - -#### `GovMaxSquareSize` - -`GovMaxSquareSize` is a governance modifiable parameter that is used to -determine the max effective square size. See -[ADR021](../../docs/architecture/adr-021-restricted-block-size.md) for more -details. - -## Messages - -`MsgPayForBlobs` pays for a set of blobs to be included in the block. Blob transactions that contain this `sdk.Msg` are also referred to as "PFBs". - -```proto -// MsgPayForBlobs pays for the inclusion of a blob in the block. -message MsgPayForBlobs { - // signer is the bech32 encoded signer address - string signer = 1; - // namespaces is a list of namespaces that the blobs are associated with. A - // namespace is a byte slice of length 29 where the first byte is the - // namespaceVersion and the subsequent 28 bytes are the namespaceId. - repeated bytes namespaces = 2; - // blob_sizes is a list of blob sizes (one per blob). Each size is in bytes. - repeated uint32 blob_sizes = 3; - // share_commitments is a list of share commitments (one per blob). - repeated bytes share_commitments = 4; - // share_versions are the versions of the share format that the blobs - // associated with this message should use when included in a block. The - // share_versions specified must match the share_versions used to generate the - // share_commitment in this message. - repeated uint32 share_versions = 8; -} -``` - -> [!NOTE] -> The internal representation of share versions is always `uint8`. Since protobuf doesn't support the `uint8` type, they are encoded and decoded as `uint32`. - -### Generating the `ShareCommitment` - -The share commitment is the commitment to share encoded blobs. It can be used -for cheap inclusion checks for some data by light clients. More information and -rational can be found in the [data square layout -specs](../../specs/src/specs/data_square_layout.md). - -1. Split the blob into shares of size [`shareSize`](../../specs/src/specs/data_structures.md#consensus-parameters) -1. Determine the - [`SubtreeWidth`](https://github.com/celestiaorg/celestia-app/blob/v1.0.0-rc2/pkg/shares/non_interactive_defaults.go#L94-L116) - by dividing the length in shares by the `SubtreeRootThreshold`. -1. Generate each subtree root by diving the blob shares into `SubtreeWidth` - sized sets, then take the binary [namespaced merkle tree - (NMT)](https://github.com/celestiaorg/nmt/blob/v0.16.0/docs/spec/nmt.md) root - of each set of shares. -1. Calculate the final share commitment by taking the merkle root (note: not an - NMT, just a normal binary merkle root) of the subtree roots from the previous - step. - -See -[`CreateCommitment`](https://github.com/celestiaorg/celestia-app/blob/v1.0.0-rc2/x/blob/types/payforblob.go#L169-L236) -for an implementation. See [data square -layout](../../specs/src/specs/data_square_layout.md) and -[ADR013](../../docs/architecture/adr-013-non-interactive-default-rules-for-zero-padding.md) -for details on the rational of the square layout. - -## Validity Rules - -In order for a proposal block to be considered valid, each `BlobTx`, and thus -each PFB, to be included in a block must follow a set of validity rules. - -1. Signatures: All blob transactions must have valid signatures. This is - state-dependent because correct signatures require using the correct sequence - number(aka nonce). -1. Single SDK.Msg: There must be only a single sdk.Msg encoded in the `sdk.Tx` - field of the blob transaction `BlobTx`. -1. Namespace Validity: The namespace of each blob in a blob transaction `BlobTx` - must be valid. This validity is determined by the following sub-rules: - 1. The namespace of each blob must match the respective (same index) - namespace in the `MsgPayForBlobs` `sdk.Msg` field `namespaces`. - 1. The namespace is not reserved for protocol use. -1. Blob Size: No blob can have a size of 0. -1. Blob Count: There must be one or more blobs included in the transaction. -1. Share Commitment Validity: Each share commitment must be valid. - 1. The size of each of the share commitments must be equal to the digest of - the hash function used (sha256 so 32 bytes). - 1. The share commitment must be calculated using the steps specified above - in [Generating the Share - Commitment](./README.md#generating-the-sharecommitment) -1. Share Versions: The versions of the shares must be supported. -1. Signer Address: The signer address must be a valid Celestia address. -1. Proper Encoding: The blob transactions must be properly encoded. -1. Size Consistency: The sizes included in the PFB field `blob_sizes`, and each - must match the actual size of the respective (same index) blob in bytes. - -## `IndexWrappedTx` - -When a block producer is preparing a block, they must perform an extra step for -`BlobTx`s so that end-users can find the blob shares relevant to their submitted -`BlobTx`. In particular, block proposers wrap the `BlobTx` in the PFB namespace -with the index of the first share of the blob in the data square. See [Blob -share commitment -rules](../../specs/src/specs/data_square_layout.md#blob-share-commitment-rules) -for more details. - -Since `BlobTx`s can contain multiple blobs, the `sdk.Tx` portion of the `BlobTx` -is wrapped with one share index per blob in the transaction. The index wrapped -transaction is called an -[IndexWrapper](https://github.com/celestiaorg/celestia-core/blob/2d2a65f59eabf1993804168414b86d758f30c383/proto/tendermint/types/types.proto#L192-L198) -and this is the struct that gets marshalled and written to the -PayForBlobNamespace. - -## Events - -The blob module emits the following events: - -### Blob Events - -#### `EventPayForBlobs` - -| Attribute Key | Attribute Value | -|---------------|-----------------------------------------------| -| signer | {bech32 encoded signer address} | -| blob_sizes | {sizes of blobs in bytes} | -| namespaces | {namespaces the blobs should be published to} | - -## Parameters - -| Key | Type | Default | -|----------------|--------|---------| -| GasPerBlobByte | uint32 | 8 | - -### Usage - -```shell -celestia-appd tx blob PayForBlobs [flags] -``` - -For submitting PFB transaction via a light client's rpc, see [celestia-node's -documentation](https://docs.celestia.org/developers/node-tutorial#submitting-data). - -The steps in the -[`SubmitPayForBlobs`](https://github.com/celestiaorg/celestia-app/blob/v1.0.0-rc2/x/blob/payforblob.go#L15-L54) -function can be reverse engineered to submit blobs programmatically. - - - -## FAQ - -Q: Why do the PFB transactions in the response from Comet BFT API endpoints fail to decode to valid transaction hashes? - -The response of CometBFT API endpoints (e.g. `/cosmos/base/tendermint/v1beta1/blocks/{block_number}`) will contain a field called `txs` with base64 encoded transactions. In Celestia, transactions may have one of the two possible types of `sdk.Tx` or `BlobTx` (which wraps around a `sdk.Tx`). As such, each transaction should be first decoded and then gets unmarshalled according to its type, as explained below: - -1. Base64 decode the transaction -1. Check to see if the transaction is a `BlobTx` by unmarshalling it into a `BlobTx` type. - 1. If it is a `BlobTx`, then unmarshal the `BlobTx`'s `Tx` field into a `sdk.Tx` type. - 1. If it is not a `BlobTx`, then unmarshal the transaction into a `sdk.Tx` type. - -See [test/decode_blob_tx_test.go](./test/decode_blob_tx_test.go) for an example of how to do this. diff --git a/x/blob/ante/ante.go b/x/blob/ante/ante.go deleted file mode 100644 index 68912bb38d..0000000000 --- a/x/blob/ante/ante.go +++ /dev/null @@ -1,52 +0,0 @@ -package ante - -import ( - "github.com/celestiaorg/celestia-app/x/blob/types" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// MinGasPFBDecorator helps to prevent a PFB from being included in a block -// but running out of gas in DeliverTx (effectively getting DA for free) -// This decorator should be run after any decorator that consumes gas. -type MinGasPFBDecorator struct { - k BlobKeeper -} - -func NewMinGasPFBDecorator(k BlobKeeper) MinGasPFBDecorator { - return MinGasPFBDecorator{k} -} - -// AnteHandle implements the AnteHandler interface. It checks to see -// if the transaction contains a MsgPayForBlobs and if so, checks that -// the transaction has allocated enough gas. -func (d MinGasPFBDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { - if ctx.IsReCheckTx() { - return next(ctx, tx, simulate) - } - - var gasPerByte uint32 - txGas := ctx.GasMeter().GasRemaining() - for _, m := range tx.GetMsgs() { - // NOTE: here we assume only one PFB per transaction - if pfb, ok := m.(*types.MsgPayForBlobs); ok { - if gasPerByte == 0 { - // lazily fetch the gas per byte param - gasPerByte = d.k.GasPerBlobByte(ctx) - } - gasToConsume := pfb.Gas(gasPerByte) - if gasToConsume > txGas { - return ctx, errors.Wrapf(sdkerrors.ErrInsufficientFee, "not enough gas to pay for blobs (minimum: %d, got: %d)", gasToConsume, txGas) - } - } - } - - return next(ctx, tx, simulate) -} - -type BlobKeeper interface { - GasPerBlobByte(ctx sdk.Context) uint32 - GovMaxSquareSize(ctx sdk.Context) uint64 -} diff --git a/x/blob/ante/ante_test.go b/x/blob/ante/ante_test.go deleted file mode 100644 index 19a33eba80..0000000000 --- a/x/blob/ante/ante_test.go +++ /dev/null @@ -1,115 +0,0 @@ -package ante_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - ante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/shares" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" -) - -const ( - testGasPerBlobByte = 10 - testGovMaxSquareSize = 64 -) - -func TestPFBAnteHandler(t *testing.T) { - txConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...).TxConfig - testCases := []struct { - name string - pfb *blob.MsgPayForBlobs - txGas uint64 - gasConsumed uint64 - wantErr bool - }{ - { - name: "valid pfb single blob", - pfb: &blob.MsgPayForBlobs{ - // 1 share = 512 bytes = 5120 gas - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, - }, - txGas: appconsts.ShareSize * testGasPerBlobByte, - gasConsumed: 0, - wantErr: false, - }, - { - name: "valid pfb multi blob", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1)), uint32(shares.AvailableBytesFromSparseShares(2))}, - }, - txGas: 3 * appconsts.ShareSize * testGasPerBlobByte, - gasConsumed: 0, - wantErr: false, - }, - { - name: "pfb single blob not enough gas", - pfb: &blob.MsgPayForBlobs{ - // 2 share = 1024 bytes = 10240 gas - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1) + 1)}, - }, - txGas: 2*appconsts.ShareSize*testGasPerBlobByte - 1, - gasConsumed: 0, - wantErr: true, - }, - { - name: "pfb mulit blob not enough gas", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1)), uint32(shares.AvailableBytesFromSparseShares(2))}, - }, - txGas: 3*appconsts.ShareSize*testGasPerBlobByte - 1, - gasConsumed: 0, - wantErr: true, - }, - { - name: "pfb with existing gas consumed", - pfb: &blob.MsgPayForBlobs{ - // 1 share = 512 bytes = 5120 gas - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, - }, - txGas: appconsts.ShareSize*testGasPerBlobByte + 10000 - 1, - gasConsumed: 10000, - wantErr: true, - }, - { - name: "valid pfb with existing gas consumed", - pfb: &blob.MsgPayForBlobs{ - // 1 share = 512 bytes = 5120 gas - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(10))}, - }, - txGas: 1000000, - gasConsumed: 10000, - wantErr: false, - }, - } - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - anteHandler := ante.NewMinGasPFBDecorator(mockBlobKeeper{}) - ctx := sdk.Context{}.WithGasMeter(sdk.NewGasMeter(tc.txGas)).WithIsCheckTx(true) - ctx.GasMeter().ConsumeGas(tc.gasConsumed, "test") - txBuilder := txConfig.NewTxBuilder() - require.NoError(t, txBuilder.SetMsgs(tc.pfb)) - tx := txBuilder.GetTx() - _, err := anteHandler.AnteHandle(ctx, tx, false, func(ctx sdk.Context, _ sdk.Tx, _ bool) (sdk.Context, error) { return ctx, nil }) - if tc.wantErr { - require.Error(t, err) - } else { - require.NoError(t, err) - } - }) - } -} - -type mockBlobKeeper struct{} - -func (mockBlobKeeper) GasPerBlobByte(_ sdk.Context) uint32 { - return testGasPerBlobByte -} - -func (mockBlobKeeper) GovMaxSquareSize(_ sdk.Context) uint64 { - return testGovMaxSquareSize -} diff --git a/x/blob/ante/blob_share_decorator.go b/x/blob/ante/blob_share_decorator.go deleted file mode 100644 index 0879efb431..0000000000 --- a/x/blob/ante/blob_share_decorator.go +++ /dev/null @@ -1,83 +0,0 @@ -package ante - -import ( - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/shares" - - "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// BlobShareDecorator helps to prevent a PFB from being included in a block but -// not fitting in a data square because the number of shares occupied by the PFB -// exceeds the max number of shares available to blob data in a data square. -type BlobShareDecorator struct { - k BlobKeeper -} - -func NewBlobShareDecorator(k BlobKeeper) BlobShareDecorator { - return BlobShareDecorator{k} -} - -// AnteHandle implements the Cosmos SDK AnteHandler function signature. It -// returns an error if tx contains a MsgPayForBlobs where the shares occupied by -// the PFB exceeds the max number of shares in a data square. -func (d BlobShareDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { - if !ctx.IsCheckTx() { - return next(ctx, tx, simulate) - } - - if ctx.BlockHeader().Version.App == v1.Version { - return next(ctx, tx, simulate) - } - - maxBlobShares := d.getMaxBlobShares(ctx) - for _, m := range tx.GetMsgs() { - if pfb, ok := m.(*blobtypes.MsgPayForBlobs); ok { - if sharesNeeded := getSharesNeeded(pfb.BlobSizes); sharesNeeded > maxBlobShares { - return ctx, errors.Wrapf(blobtypes.ErrBlobsTooLarge, "the number of shares occupied by blobs in this MsgPayForBlobs %d exceeds the max number of shares available for blob data %d", sharesNeeded, maxBlobShares) - } - } - } - - return next(ctx, tx, simulate) -} - -// getMaxBlobShares returns the max the number of shares available for blob data. -func (d BlobShareDecorator) getMaxBlobShares(ctx sdk.Context) int { - squareSize := d.getMaxSquareSize(ctx) - totalShares := squareSize * squareSize - // The PFB tx share must occupy at least one share so the number of blob shares - // is at most one less than totalShares. - blobShares := totalShares - 1 - return blobShares -} - -// getMaxSquareSize returns the maximum square size based on the current values -// for the governance parameter and the versioned constant. -func (d BlobShareDecorator) getMaxSquareSize(ctx sdk.Context) int { - // TODO: fix hack that forces the max square size for the first height to - // 64. This is due to our fork of the sdk not initializing state before - // BeginBlock of the first block. This is remedied in versions of the sdk - // and comet that have full support of PreparePropsoal, although - // celestia-app does not currently use those. see this PR for more details - // https://github.com/cosmos/cosmos-sdk/pull/14505 - if ctx.BlockHeader().Height <= 1 { - return int(appconsts.DefaultGovMaxSquareSize) - } - - upperBound := appconsts.SquareSizeUpperBound(ctx.BlockHeader().Version.App) - govParam := d.k.GovMaxSquareSize(ctx) - return min(upperBound, int(govParam)) -} - -// getSharesNeeded returns the total number of shares needed to represent all of -// the blobs described by blobSizes. -func getSharesNeeded(blobSizes []uint32) (sum int) { - for _, blobSize := range blobSizes { - sum += shares.SparseSharesNeeded(blobSize) - } - return sum -} diff --git a/x/blob/ante/blob_share_decorator_test.go b/x/blob/ante/blob_share_decorator_test.go deleted file mode 100644 index 0a0ec276e3..0000000000 --- a/x/blob/ante/blob_share_decorator_test.go +++ /dev/null @@ -1,178 +0,0 @@ -package ante_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - ante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/shares" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - version "github.com/tendermint/tendermint/proto/tendermint/version" -) - -const ( - mebibyte = 1_048_576 // 1 MiB - squareSize = 64 -) - -func TestBlobShareDecorator(t *testing.T) { - type testCase struct { - name string - pfb *blob.MsgPayForBlobs - appVersion uint64 - wantErr error - } - - testCases := []testCase{ - { - name: "want no error if appVersion v1 and 8 MiB blob", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{8 * mebibyte}, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 1 blob that is 1 byte", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{1}, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 1 blob that is 1 MiB", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{mebibyte}, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 1 blob that is 2 MiB", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{2 * mebibyte}, - }, - appVersion: v2.Version, - // This test case should return an error because a square size of 64 - // has exactly 2 MiB of total capacity so the total blob capacity - // will be slightly smaller than 2 MiB. - wantErr: blob.ErrBlobsTooLarge, - }, - { - name: "PFB with 2 blobs that are 1 byte each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{1, 1}, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 2 blobs that are 1 MiB each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{mebibyte, mebibyte}, - }, - appVersion: v2.Version, - // This test case should return an error for the same reason a - // single blob that is 2 MiB returns an error. - wantErr: blob.ErrBlobsTooLarge, - }, - { - name: "PFB with many single byte blobs should fit", - pfb: &blob.MsgPayForBlobs{ - // 4095 blobs each of size 1 byte should occupy 4095 shares. - // When square size is 64, there are 4095 shares available to - // blob shares so we don't expect an error for this test case. - BlobSizes: repeat(4095, 1), - }, - appVersion: v2.Version, - }, - { - name: "PFB with too many single byte blobs should not fit", - pfb: &blob.MsgPayForBlobs{ - // 4096 blobs each of size 1 byte should occupy 4096 shares. - // When square size is 64, there are 4095 shares available to - // blob shares so we expect an error for this test case. - BlobSizes: repeat(4096, 1), - }, - appVersion: v2.Version, - wantErr: blob.ErrBlobsTooLarge, - }, - { - name: "PFB with 1 blob that is 1 share", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 1 blob that occupies total square - 1", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares((squareSize * squareSize) - 1))}, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 1 blob that occupies total square", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize))}, - }, - appVersion: v2.Version, - // This test case should return an error because if the blob - // occupies the total square, there is no space for the PFB tx - // share. - wantErr: blob.ErrBlobsTooLarge, - }, - { - name: "PFB with 2 blobs that are 1 share each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{ - uint32(shares.AvailableBytesFromSparseShares(1)), - uint32(shares.AvailableBytesFromSparseShares(1)), - }, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 2 blobs that occupy half the square each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{ - uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), - uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), - }, - }, - appVersion: v2.Version, - wantErr: blob.ErrBlobsTooLarge, - }, - } - - txConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...).TxConfig - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - txBuilder := txConfig.NewTxBuilder() - require.NoError(t, txBuilder.SetMsgs(tc.pfb)) - tx := txBuilder.GetTx() - - decorator := ante.NewBlobShareDecorator(mockBlobKeeper{}) - ctx := sdk.Context{}.WithIsCheckTx(true).WithBlockHeader(tmproto.Header{Version: version.Consensus{App: tc.appVersion}}) - _, err := decorator.AnteHandle(ctx, tx, false, mockNext) - assert.ErrorIs(t, tc.wantErr, err) - }) - } -} - -func mockNext(ctx sdk.Context, _ sdk.Tx, _ bool) (sdk.Context, error) { - return ctx, nil -} - -// repeat returns a slice of length n with each element set to val. -func repeat(n int, val uint32) []uint32 { - result := make([]uint32, n) - for i := range result { - result[i] = val - } - return result -} diff --git a/x/blob/ante/max_total_blob_size_ante.go b/x/blob/ante/max_total_blob_size_ante.go deleted file mode 100644 index eedd1401f2..0000000000 --- a/x/blob/ante/max_total_blob_size_ante.go +++ /dev/null @@ -1,83 +0,0 @@ -package ante - -import ( - "cosmossdk.io/errors" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/shares" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// MaxTotalBlobSizeDecorator helps to prevent a PFB from being included in a -// block but not fitting in a data square. -type MaxTotalBlobSizeDecorator struct { - k BlobKeeper -} - -func NewMaxTotalBlobSizeDecorator(k BlobKeeper) MaxTotalBlobSizeDecorator { - return MaxTotalBlobSizeDecorator{k} -} - -// AnteHandle implements the Cosmos SDK AnteHandler function signature. It -// returns an error if tx contains a MsgPayForBlobs where the total blob size is -// greater than the max total blob size. -func (d MaxTotalBlobSizeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { - if !ctx.IsCheckTx() { - return next(ctx, tx, simulate) - } - - if ctx.BlockHeader().Version.App != v1.Version { - return next(ctx, tx, simulate) - } - - max := d.maxTotalBlobSize(ctx) - for _, m := range tx.GetMsgs() { - if pfb, ok := m.(*blobtypes.MsgPayForBlobs); ok { - if total := getTotal(pfb.BlobSizes); total > max { - return ctx, errors.Wrapf(blobtypes.ErrTotalBlobSizeTooLarge, "total blob size %d exceeds max %d", total, max) - } - } - } - - return next(ctx, tx, simulate) -} - -// maxTotalBlobSize returns the max number of bytes available for blobs in a -// data square based on the max square size. Note it is possible that txs with a -// total blob size less than this max still fail to be included in a block due -// to overhead from the PFB tx and/or padding shares. -func (d MaxTotalBlobSizeDecorator) maxTotalBlobSize(ctx sdk.Context) int { - squareSize := d.getMaxSquareSize(ctx) - totalShares := squareSize * squareSize - // The PFB tx share must occupy at least one share so the # of blob shares - // is at least one less than totalShares. - blobShares := totalShares - 1 - return shares.AvailableBytesFromSparseShares(blobShares) -} - -// getMaxSquareSize returns the maximum square size based on the current values -// for the relevant governance parameter and the versioned constant. -func (d MaxTotalBlobSizeDecorator) getMaxSquareSize(ctx sdk.Context) int { - // TODO: fix hack that forces the max square size for the first height to - // 64. This is due to our fork of the sdk not initializing state before - // BeginBlock of the first block. This is remedied in versions of the sdk - // and comet that have full support of PreparePropsoal, although - // celestia-app does not currently use those. see this PR for more details - // https://github.com/cosmos/cosmos-sdk/pull/14505 - if ctx.BlockHeader().Height <= 1 { - return int(appconsts.DefaultGovMaxSquareSize) - } - - upperBound := appconsts.SquareSizeUpperBound(ctx.BlockHeader().Version.App) - govParam := d.k.GovMaxSquareSize(ctx) - return min(upperBound, int(govParam)) -} - -// getTotal returns the sum of the given sizes. -func getTotal(sizes []uint32) (sum int) { - for _, size := range sizes { - sum += int(size) - } - return sum -} diff --git a/x/blob/ante/max_total_blob_size_ante_test.go b/x/blob/ante/max_total_blob_size_ante_test.go deleted file mode 100644 index afabf41bcc..0000000000 --- a/x/blob/ante/max_total_blob_size_ante_test.go +++ /dev/null @@ -1,139 +0,0 @@ -package ante_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - ante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/shares" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - version "github.com/tendermint/tendermint/proto/tendermint/version" -) - -func TestMaxTotalBlobSizeDecorator(t *testing.T) { - type testCase struct { - name string - pfb *blob.MsgPayForBlobs - appVersion uint64 - wantErr error - } - - testCases := []testCase{ - { - name: "want no error if appVersion v2 and 8 MiB blob", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{1}, - }, - appVersion: v2.Version, - }, - { - name: "PFB with 1 blob that is 1 byte", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{1}, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 1 blob that is 1 MiB", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{mebibyte}, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 1 blob that is 2 MiB", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{2 * mebibyte}, - }, - appVersion: v1.Version, - // This test case should return an error because a square size of 64 - // has exactly 2 MiB of total capacity so the total blob capacity - // will be slightly smaller than 2 MiB. - wantErr: blob.ErrTotalBlobSizeTooLarge, - }, - { - name: "PFB with 2 blobs that are 1 byte each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{1, 1}, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 2 blobs that are 1 MiB each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{mebibyte, mebibyte}, - }, - appVersion: v1.Version, - // This test case should return an error for the same reason a - // single blob that is 2 MiB returns an error. - wantErr: blob.ErrTotalBlobSizeTooLarge, - }, - { - name: "PFB with 1 blob that is 1 share", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 1 blob that occupies total square - 1", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares((squareSize * squareSize) - 1))}, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 1 blob that occupies total square", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize))}, - }, - appVersion: v1.Version, - // This test case should return an error because if the blob - // occupies the total square, there is no space for the PFB tx - // share. - wantErr: blob.ErrTotalBlobSizeTooLarge, - }, - { - name: "PFB with 2 blobs that are 1 share each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{ - uint32(shares.AvailableBytesFromSparseShares(1)), - uint32(shares.AvailableBytesFromSparseShares(1)), - }, - }, - appVersion: v1.Version, - }, - { - name: "PFB with 2 blobs that occupy half the square each", - pfb: &blob.MsgPayForBlobs{ - BlobSizes: []uint32{ - uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), - uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), - }, - }, - appVersion: v1.Version, - wantErr: blob.ErrTotalBlobSizeTooLarge, - }, - } - - txConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...).TxConfig - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - txBuilder := txConfig.NewTxBuilder() - require.NoError(t, txBuilder.SetMsgs(tc.pfb)) - tx := txBuilder.GetTx() - - decorator := ante.NewMaxTotalBlobSizeDecorator(mockBlobKeeper{}) - ctx := sdk.Context{}.WithIsCheckTx(true).WithBlockHeader(tmproto.Header{Version: version.Consensus{App: tc.appVersion}}) - _, err := decorator.AnteHandle(ctx, tx, false, mockNext) - assert.ErrorIs(t, tc.wantErr, err) - }) - } -} diff --git a/x/blob/client/cli/payforblob.go b/x/blob/client/cli/payforblob.go deleted file mode 100644 index 966d3cdddb..0000000000 --- a/x/blob/client/cli/payforblob.go +++ /dev/null @@ -1,291 +0,0 @@ -package cli - -import ( - "bufio" - "encoding/hex" - "encoding/json" - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/spf13/cobra" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/blob" - appns "github.com/celestiaorg/go-square/namespace" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/input" - sdktx "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -const ( - // FlagShareVersion allows the user to override the share version when - // submitting a PayForBlob. - FlagShareVersion = "share-version" - - // FlagNamespaceVersion allows the user to override the namespace version when - // submitting a PayForBlob. - FlagNamespaceVersion = "namespace-version" - - // FlagFileInput allows the user to provide the path to a JSON file for - // submitting multiple blobs. - FlagFileInput = "input-file" - - // FileInputExtension is the only file extension supported for - // FlagFileInput. - FileInputExtension = ".json" -) - -func CmdPayForBlob() *cobra.Command { - cmd := &cobra.Command{ - Use: "pay-for-blob [namespaceID blob]", - Example: "celestia-appd tx blob pay-for-blob 0x00010203040506070809 0x48656c6c6f2c20576f726c6421 \\\n" + - "\t--chain-id private \\\n" + - "\t--from validator \\\n" + - "\t--keyring-backend test \\\n" + - "\t--fees 21000utia \\\n" + - "\t--yes \n\n" + - "celestia-appd tx blob pay-for-blob --input-file path/to/blobs.json \\\n" + - "\t--chain-id private \\\n" + - "\t--from validator \\\n" + - "\t--keyring-backend test \\\n" + - "\t--fees 21000utia \\\n" + - "\t--yes \n", - Short: "Pay for data blob(s) to be published to Celestia.", - Long: `Pay for data blob(s) to be published to Celestia. -To publish a single blob, specify the namespaceID and blob via CLI arguments. -To publish multiple blobs, use the --input-file flag with the path to a JSON file. -The JSON should look like: - -{ - "Blobs": [ - { - "namespaceID": "0x00010203040506070809", - "blob": "0x48656c6c6f2c20576f726c6421" - }, - { - "namespaceID": "0x00010203040506070809", - "blob": "0x48656c6c6f2c20576f726c6421" - } - ] -} - -The namespaceID is the user-specifiable portion of a version 0 namespace. -The namespaceID must be a hex encoded string of 10 bytes. -The blob must be a hex encoded string of non-zero length. - `, - Aliases: []string{"pay-for-blobs", "PayForBlobs", "PayForBlob"}, - Args: func(cmd *cobra.Command, args []string) error { - path, err := cmd.Flags().GetString(FlagFileInput) - if err != nil { - return err - } - - if path != "" { - if filepath.Ext(path) != FileInputExtension { - return fmt.Errorf("invalid file extension %v. The only supported extension is %s", filepath.Ext(path), FileInputExtension) - } - - return nil - } - - if len(args) < 2 { - return fmt.Errorf("pay-for-blob requires two arguments if %s isn't provided: namespaceID and blob", FlagFileInput) - } - - return nil - }, - RunE: func(cmd *cobra.Command, args []string) error { - namespaceVersion, err := cmd.Flags().GetUint8(FlagNamespaceVersion) - if err != nil { - return err - } - - shareVersion, err := cmd.Flags().GetUint8(FlagShareVersion) - if err != nil { - return err - } - - path, err := cmd.Flags().GetString(FlagFileInput) - if err != nil { - return err - } - - // In case of no file input, get the namespaceID and blob from the arguments - if path == "" { - blob, err := getBlobFromArguments(args[0], args[1], namespaceVersion, shareVersion) - if err != nil { - return err - } - - return broadcastPFB(cmd, blob) - } - - paresdBlobs, err := parseSubmitBlobs(path) - if err != nil { - return err - } - - var blobs []*blob.Blob - for _, paresdBlob := range paresdBlobs { - blob, err := getBlobFromArguments(paresdBlob.NamespaceID, paresdBlob.Blob, namespaceVersion, shareVersion) - if err != nil { - return err - } - blobs = append(blobs, blob) - } - - return broadcastPFB(cmd, blobs...) - }, - } - - flags.AddTxFlagsToCmd(cmd) - cmd.PersistentFlags().Uint8(FlagNamespaceVersion, 0, "Specify the namespace version (default 0)") - cmd.PersistentFlags().Uint8(FlagShareVersion, 0, "Specify the share version (default 0)") - cmd.PersistentFlags().String(FlagFileInput, "", "Specify the file input") - _ = cmd.MarkFlagRequired(flags.FlagFrom) - return cmd -} - -func getBlobFromArguments(namespaceIDArg, blobArg string, namespaceVersion, shareVersion uint8) (*blob.Blob, error) { - namespaceID, err := hex.DecodeString(strings.TrimPrefix(namespaceIDArg, "0x")) - if err != nil { - return nil, fmt.Errorf("failed to decode hex namespace ID: %w", err) - } - namespace, err := getNamespace(namespaceID, namespaceVersion) - if err != nil { - return nil, err - } - hexStr := strings.TrimPrefix(blobArg, "0x") - rawblob, err := hex.DecodeString(hexStr) - if err != nil { - return nil, fmt.Errorf("failure to decode hex blob value %s: %s", hexStr, err.Error()) - } - - blob, err := types.NewBlob(namespace, rawblob, shareVersion) - if err != nil { - return nil, fmt.Errorf("failure to create blob with hex blob value %s: %s", hexStr, err.Error()) - } - - return blob, nil -} - -func getNamespace(namespaceID []byte, namespaceVersion uint8) (appns.Namespace, error) { - switch namespaceVersion { - case appns.NamespaceVersionZero: - if len(namespaceID) != appns.NamespaceVersionZeroIDSize { - return appns.Namespace{}, fmt.Errorf("the user specifiable portion of the namespace ID must be %d bytes for namespace version 0", appns.NamespaceVersionZeroIDSize) - } - id := make([]byte, 0, appns.NamespaceIDSize) - id = append(id, appns.NamespaceVersionZeroPrefix...) - id = append(id, namespaceID...) - return appns.New(namespaceVersion, id) - default: - return appns.Namespace{}, fmt.Errorf("namespace version %d is not supported", namespaceVersion) - } -} - -// broadcastPFB creates the new PFB message type that will later be broadcast to tendermint nodes -// this private func is used in CmdPayForBlob -func broadcastPFB(cmd *cobra.Command, b ...*blob.Blob) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - // TODO: allow the user to override the share version via a new flag - // See https://github.com/celestiaorg/celestia-app/issues/1041 - pfbMsg, err := types.NewMsgPayForBlobs(clientCtx.FromAddress.String(), appconsts.LatestVersion, b...) - if err != nil { - return err - } - - // run message checks - if err = pfbMsg.ValidateBasic(); err != nil { - return err - } - - txBytes, err := writeTx(clientCtx, sdktx.NewFactoryCLI(clientCtx, cmd.Flags()), pfbMsg) - if err != nil { - return err - } - - blobTx, err := blob.MarshalBlobTx(txBytes, b...) - if err != nil { - return err - } - - // broadcast to a Tendermint node - res, err := clientCtx.BroadcastTx(blobTx) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) -} - -// writeTx attempts to generate and sign a transaction using the normal -// cosmos-sdk cli argument parsing code with the given set of messages. It will also simulate gas -// requirements if necessary. It will return an error upon failure. -// -// NOTE: Copy paste forked from the cosmos-sdk so that we can wrap the PFB with -// a blob while still using all of the normal cli parsing code -func writeTx(clientCtx client.Context, txf sdktx.Factory, msgs ...sdk.Msg) ([]byte, error) { - if clientCtx.GenerateOnly { - return nil, txf.PrintUnsignedTx(clientCtx, msgs...) - } - - txf, err := txf.Prepare(clientCtx) - if err != nil { - return nil, err - } - - if txf.SimulateAndExecute() || clientCtx.Simulate { - _, adjusted, err := sdktx.CalculateGas(clientCtx, txf, msgs...) - if err != nil { - return nil, err - } - - txf = txf.WithGas(adjusted) - _, _ = fmt.Fprintf(os.Stderr, "%s\n", sdktx.GasEstimateResponse{GasEstimate: txf.Gas()}) - } - - if clientCtx.Simulate { - return nil, nil - } - - tx, err := txf.BuildUnsignedTx(msgs...) - if err != nil { - return nil, err - } - - if !clientCtx.SkipConfirm { - txBytes, err := clientCtx.TxConfig.TxJSONEncoder()(tx.GetTx()) - if err != nil { - return nil, err - } - - if err := clientCtx.PrintRaw(json.RawMessage(txBytes)); err != nil { - _, _ = fmt.Fprintf(os.Stderr, "%s\n", txBytes) - } - - buf := bufio.NewReader(os.Stdin) - ok, err := input.GetConfirmation("confirm transaction before signing and broadcasting", buf, os.Stderr) - - if err != nil || !ok { - _, _ = fmt.Fprintf(os.Stderr, "%s\n", "cancelled transaction") - return nil, err - } - } - - err = sdktx.Sign(txf, clientCtx.GetFromName(), tx, true) - if err != nil { - return nil, err - } - - return clientCtx.TxConfig.TxEncoder()(tx.GetTx()) -} diff --git a/x/blob/client/cli/query.go b/x/blob/client/cli/query.go deleted file mode 100644 index 1c87f71530..0000000000 --- a/x/blob/client/cli/query.go +++ /dev/null @@ -1,25 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/spf13/cobra" -) - -// GetQueryCmd returns the CLI query commands for this module -func GetQueryCmd() *cobra.Command { - // Group blob queries under a subcommand - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand(CmdQueryParams()) - - return cmd -} diff --git a/x/blob/client/cli/query_params.go b/x/blob/client/cli/query_params.go deleted file mode 100644 index 0fc3b95b5b..0000000000 --- a/x/blob/client/cli/query_params.go +++ /dev/null @@ -1,34 +0,0 @@ -package cli - -import ( - "context" - - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdQueryParams() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "shows the parameters of the module", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, _ []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{}) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/blob/client/cli/tx.go b/x/blob/client/cli/tx.go deleted file mode 100644 index 825eb6bd0b..0000000000 --- a/x/blob/client/cli/tx.go +++ /dev/null @@ -1,24 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/spf13/cobra" -) - -// GetTxCmd returns the transaction commands for this module -func GetTxCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand(CmdPayForBlob()) - - return cmd -} diff --git a/x/blob/client/cli/util.go b/x/blob/client/cli/util.go deleted file mode 100644 index 6c53d0eab7..0000000000 --- a/x/blob/client/cli/util.go +++ /dev/null @@ -1,32 +0,0 @@ -package cli - -import ( - "encoding/json" - "os" -) - -// Define the raw content from the file input. -type blobs struct { - Blobs []blobJSON -} - -type blobJSON struct { - NamespaceID string - Blob string -} - -func parseSubmitBlobs(path string) ([]blobJSON, error) { - var rawBlobs blobs - - content, err := os.ReadFile(path) - if err != nil { - return []blobJSON{}, err - } - - err = json.Unmarshal(content, &rawBlobs) - if err != nil { - return []blobJSON{}, err - } - - return rawBlobs.Blobs, err -} diff --git a/x/blob/client/testutil/integration_test.go b/x/blob/client/testutil/integration_test.go deleted file mode 100644 index eb20f3ffc3..0000000000 --- a/x/blob/client/testutil/integration_test.go +++ /dev/null @@ -1,194 +0,0 @@ -package testutil - -import ( - "encoding/hex" - "fmt" - "os" - "strconv" - "testing" - - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/gogo/protobuf/proto" - "github.com/stretchr/testify/require" - "github.com/stretchr/testify/suite" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" - - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - paycli "github.com/celestiaorg/celestia-app/x/blob/client/cli" - appns "github.com/celestiaorg/go-square/namespace" - abci "github.com/tendermint/tendermint/abci/types" -) - -// username is used to create a funded genesis account under this name -const username = "test" - -type IntegrationTestSuite struct { - suite.Suite - - cfg *testnode.Config - ctx testnode.Context -} - -// Create a .json file for testing -func createTestFile(t testing.TB, s string, isValid bool) *os.File { - t.Helper() - - tempdir, err := os.MkdirTemp("", "") - require.NoError(t, err) - t.Cleanup(func() { _ = os.RemoveAll(tempdir) }) - - var fp *os.File - - if isValid { - fp, err = os.CreateTemp(tempdir, "*.json") - } else { - fp, err = os.CreateTemp(tempdir, "") - } - require.NoError(t, err) - _, err = fp.WriteString(s) - - require.Nil(t, err) - - return fp -} - -func NewIntegrationTestSuite(cfg *testnode.Config) *IntegrationTestSuite { - return &IntegrationTestSuite{cfg: cfg} -} - -func (s *IntegrationTestSuite) SetupSuite() { - s.T().Log("setting up integration test suite") - s.cfg.WithFundedAccounts(username) - - s.ctx, _, _ = testnode.NewNetwork(s.T(), s.cfg) - - _, err := s.ctx.WaitForHeight(1) - s.Require().NoError(err) -} - -func (s *IntegrationTestSuite) TestSubmitPayForBlob() { - require := s.Require() - - hexBlob := "0204033704032c0b162109000908094d425837422c2116" - - validBlob := fmt.Sprintf(` - { - "Blobs": [ - { - "namespaceID": "%s", - "blob": "%s" - }, - { - "namespaceID": "%s", - "blob": "%s" - } - ] - } - `, hex.EncodeToString(appns.RandomBlobNamespaceID()), hexBlob, hex.EncodeToString(appns.RandomBlobNamespaceID()), hexBlob) - validPropFile := createTestFile(s.T(), validBlob, true) - invalidPropFile := createTestFile(s.T(), validBlob, false) - - testCases := []struct { - name string - args []string - expectErr bool - expectedCode uint32 - respType proto.Message - }{ - { - name: "single blob valid transaction", - args: []string{ - hex.EncodeToString(appns.RandomBlobNamespaceID()), - hexBlob, - fmt.Sprintf("--from=%s", username), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(appconsts.BondDenom, sdk.NewInt(1000))).String()), - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - }, - expectErr: false, - expectedCode: 0, - respType: &sdk.TxResponse{}, - }, - { - name: "multiple blobs valid transaction", - args: []string{ - fmt.Sprintf("--from=%s", username), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(appconsts.BondDenom, sdk.NewInt(1000))).String()), - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", paycli.FlagFileInput, validPropFile.Name()), - }, - expectErr: false, - expectedCode: 0, - respType: &sdk.TxResponse{}, - }, - { - name: "multiple blobs with invalid file path extension", - args: []string{ - fmt.Sprintf("--from=%s", username), - fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), - fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(appconsts.BondDenom, sdk.NewInt(1000))).String()), - fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), - fmt.Sprintf("--%s=%s", paycli.FlagFileInput, invalidPropFile.Name()), - }, - expectErr: true, - expectedCode: 0, - respType: &sdk.TxResponse{}, - }, - } - - for _, tc := range testCases { - tc := tc - require.NoError(s.ctx.WaitForNextBlock()) - s.Run(tc.name, func() { - cmd := paycli.CmdPayForBlob() - out, err := clitestutil.ExecTestCLICmd(s.ctx.Context, cmd, tc.args) - if tc.expectErr { - require.Error(err) - return - } - require.NoError(err, "test: %s\noutput: %s", tc.name, out.String()) - - err = s.ctx.Codec.UnmarshalJSON(out.Bytes(), tc.respType) - require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String()) - - txResp := tc.respType.(*sdk.TxResponse) - require.Equal(tc.expectedCode, txResp.Code, - "test: %s, output\n:", tc.name, out.String()) - - events := txResp.Logs[0].GetEvents() - for _, e := range events { - if e.Type == types.EventTypePayForBlob { - signer := e.GetAttributes()[0].GetValue() - _, err = sdk.AccAddressFromBech32(signer) - require.NoError(err) - blob, err := hex.DecodeString(tc.args[1]) - require.NoError(err) - blobSize, err := strconv.ParseInt(e.GetAttributes()[1].GetValue(), 10, 64) - require.NoError(err) - require.Equal(len(blob), int(blobSize)) - } - } - - // wait for the tx to be indexed - s.Require().NoError(s.ctx.WaitForNextBlock()) - - // attempt to query for the transaction using the tx's hash - res, err := testnode.QueryWithoutProof(s.ctx.Context, txResp.TxHash) - require.NoError(err) - require.Equal(abci.CodeTypeOK, res.TxResult.Code) - }) - } -} - -func TestIntegrationTestSuite(t *testing.T) { - if testing.Short() { - t.Skip("skipping integration test in short mode.") - } - suite.Run(t, NewIntegrationTestSuite(testnode.DefaultConfig())) -} diff --git a/x/blob/doc.go b/x/blob/doc.go deleted file mode 100644 index 238506368b..0000000000 --- a/x/blob/doc.go +++ /dev/null @@ -1,4 +0,0 @@ -// blob is a Cosmos SDK module that enables users to pay for data to be -// published to the Celestia blockchain. Please see ./README.md for the full -// specification of this module. -package blob diff --git a/x/blob/genesis.go b/x/blob/genesis.go deleted file mode 100644 index f21f8514f8..0000000000 --- a/x/blob/genesis.go +++ /dev/null @@ -1,20 +0,0 @@ -package blob - -import ( - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// InitGenesis initializes the capability module's state from a provided genesis -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - k.SetParams(ctx, genState.Params) -} - -// ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) - return genesis -} diff --git a/x/blob/go.mod b/x/blob/go.mod deleted file mode 100644 index 3ced26aea8..0000000000 --- a/x/blob/go.mod +++ /dev/null @@ -1,208 +0,0 @@ -module github.com/celestiaorg/celestia-app/x/blob - -go 1.22.4 - -require ( - cosmossdk.io/errors v1.0.1 - github.com/celestiaorg/celestia-app/v2 v2.0.0 - github.com/celestiaorg/go-square v1.1.0 - github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 - github.com/cosmos/cosmos-sdk v0.46.16 - github.com/cosmos/gogoproto v1.5.0 - github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.5.4 - github.com/gorilla/mux v1.8.1 - github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/spf13/cobra v1.8.1 - github.com/stretchr/testify v1.9.0 - github.com/tendermint/tendermint v0.34.29 - github.com/tendermint/tm-db v0.6.7 - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 - google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf - google.golang.org/grpc v1.65.0 - gopkg.in/yaml.v2 v2.4.0 -) - -require ( - cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.38.0 // indirect - cosmossdk.io/math v1.3.0 // indirect - filippo.io/edwards25519 v1.0.0-rc.1 // indirect - github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.2 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/StackExchange/wmi v1.2.1 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect - github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go v1.44.122 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect - github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect - github.com/celestiaorg/nmt v0.21.0 // indirect - github.com/celestiaorg/rsmt2d v0.13.1 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/chzyer/readline v1.5.1 // indirect - github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect - github.com/cometbft/cometbft-db v0.7.0 // indirect - github.com/confio/ics23/go v0.9.1 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect - github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.6 // indirect - github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect - github.com/cosmos/ibc-go/v6 v6.2.2 // indirect - github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect - github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect - github.com/creachadair/taskgroup v0.3.2 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect - github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect - github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.6.0 // indirect - github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-ethereum v1.14.5 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.3.0 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect - github.com/golang/glog v1.2.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/orderedcode v0.0.1 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect - github.com/gorilla/handlers v1.5.2 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grafana/otel-profiling-go v0.5.1 // indirect - github.com/grafana/pyroscope-go v1.1.1 // indirect - github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect - github.com/holiman/uint256 v1.2.4 // indirect - github.com/iancoleman/orderedmap v0.2.0 // indirect - github.com/improbable-eng/grpc-web v0.15.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.6 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect - github.com/klauspost/reedsolomon v1.12.1 // indirect - github.com/lib/pq v1.10.7 // indirect - github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect - github.com/minio/highwayhash v1.0.2 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/mtibben/percent v0.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - github.com/rakyll/statik v0.1.7 // indirect - github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/regen-network/cosmos-proto v0.3.1 // indirect - github.com/rs/cors v1.8.3 // indirect - github.com/rs/zerolog v1.33.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/shirou/gopsutil v3.21.6+incompatible // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.15.0 // indirect - github.com/subosito/gotenv v1.6.0 // indirect - github.com/supranational/blst v0.3.11 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect - github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tidwall/btree v1.5.0 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect - github.com/ulikunitz/xz v0.5.10 // indirect - github.com/zondax/hid v0.9.2 // indirect - github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.26.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect - go.opentelemetry.io/otel/metric v1.26.0 // indirect - go.opentelemetry.io/otel/sdk v1.26.0 // indirect - go.opentelemetry.io/otel/trace v1.26.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.169.0 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect - google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.6 // indirect - rsc.io/tmplfunc v0.0.3 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) - -replace ( - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 - // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 - // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 - github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 -) diff --git a/x/blob/go.sum b/x/blob/go.sum deleted file mode 100644 index 38d07559a5..0000000000 --- a/x/blob/go.sum +++ /dev/null @@ -1,2025 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= -cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= -git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= -github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= -github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= -github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= -github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= -github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= -github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= -github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= -github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-app/v2 v2.0.0 h1:cGrkLbqbaNqj+g+LhvmQ0iFKFyrD/GdU5z3WQI/bq8E= -github.com/celestiaorg/celestia-app/v2 v2.0.0/go.mod h1:0wP0W+GLghvsODxLhAYToKsy0RFKeg1HdZftQG90W5A= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= -github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= -github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= -github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= -github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= -github.com/celestiaorg/nmt v0.21.0 h1:81MBqxNn3orByoiCtdNVjwi5WsLgMkzHwP02ZMhTBHM= -github.com/celestiaorg/nmt v0.21.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= -github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= -github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= -github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= -github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= -github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= -github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= -github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= -github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= -github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= -github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= -github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= -github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= -github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= -github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= -github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= -github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= -github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= -github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= -github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= -github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= -github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= -github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= -github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= -github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= -github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= -github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= -github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= -github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= -github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= -github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= -github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= -github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= -github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= -github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= -github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= -github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= -github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= -github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= -github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= -github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= -github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= -github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= -github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= -github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= -github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= -github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= -github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= -github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= -github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= -github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= -github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= -github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= -github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= -github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= -github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= -github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= -github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= -github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= -github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= -github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= -github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= -github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= -github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= -github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= -github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= -github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= -github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= -github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= -github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= -github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= -github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= -github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= -github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= -github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= -github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= -gitlab.com/NebulousLabs/errors v0.0.0-20171229012116-7ead97ef90b8/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= -gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bFzUeKx6m3XjlmBgIUlykX9dzvp5k9NGxc= -gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= -gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= -gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= -go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= -go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= -go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= -go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= -go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= -gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/x/blob/handler.go b/x/blob/handler.go deleted file mode 100644 index 91050ff4b0..0000000000 --- a/x/blob/handler.go +++ /dev/null @@ -1,28 +0,0 @@ -package blob - -import ( - "fmt" - - "cosmossdk.io/errors" - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// NewHandler uses the provided blob keeper to create an sdk.Handler -func NewHandler(k keeper.Keeper) sdk.Handler { - msgServer := keeper.NewMsgServerImpl(k) - - return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) - switch msg := msg.(type) { - case *types.MsgPayForBlobs: - res, err := msgServer.PayForBlobs(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - default: - errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) - return nil, errors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) - } - } -} diff --git a/x/blob/keeper/gas_test.go b/x/blob/keeper/gas_test.go deleted file mode 100644 index e000db8b39..0000000000 --- a/x/blob/keeper/gas_test.go +++ /dev/null @@ -1,85 +0,0 @@ -package keeper_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" -) - -func TestPayForBlobGas(t *testing.T) { - type testCase struct { - name string - msg types.MsgPayForBlobs - wantGasConsumed uint64 - } - - paramLookUpCost := uint32(1060) - - testCases := []testCase{ - { - name: "1 byte blob", // occupies 1 share - msg: types.MsgPayForBlobs{BlobSizes: []uint32{1}}, - wantGasConsumed: uint64(1*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 1 share * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 5156 gas - }, - { - name: "100 byte blob", // occupies 1 share - msg: types.MsgPayForBlobs{BlobSizes: []uint32{100}}, - wantGasConsumed: uint64(1*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), - }, - { - name: "1024 byte blob", // occupies 3 shares because share prefix (e.g. namespace, info byte) - msg: types.MsgPayForBlobs{BlobSizes: []uint32{1024}}, - wantGasConsumed: uint64(3*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 3 shares * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 13348 gas - }, - { - name: "3 blobs, 1 share each", - msg: types.MsgPayForBlobs{BlobSizes: []uint32{1, 1, 1}}, - wantGasConsumed: uint64(3*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 3 shares * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 13348 gas - }, - { - name: "3 blobs, 6 shares total", - msg: types.MsgPayForBlobs{BlobSizes: []uint32{1024, 800, 100}}, - wantGasConsumed: uint64(6*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 6 shares * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 25636 gas - }, - } - - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - k, stateStore, _ := CreateKeeper(t) - ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) - _, err := k.PayForBlobs(sdk.WrapSDKContext(ctx), &tc.msg) - require.NoError(t, err) - if tc.wantGasConsumed != ctx.GasMeter().GasConsumed() { - t.Errorf("Gas consumed by %s: %d, want: %d", tc.name, ctx.GasMeter().GasConsumed(), tc.wantGasConsumed) - } - }) - } -} - -func TestChangingGasParam(t *testing.T) { - msg := types.MsgPayForBlobs{BlobSizes: []uint32{1024}} - k, stateStore, _ := CreateKeeper(t) - tempCtx := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) - - ctx1 := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) - _, err := k.PayForBlobs(sdk.WrapSDKContext(ctx1), &msg) - require.NoError(t, err) - - params := k.GetParams(tempCtx) - params.GasPerBlobByte++ - k.SetParams(tempCtx, params) - - ctx2 := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) - _, err = k.PayForBlobs(sdk.WrapSDKContext(ctx2), &msg) - require.NoError(t, err) - - if ctx1.GasMeter().GasConsumed() >= ctx2.GasMeter().GasConsumedToLimit() { - t.Errorf("Gas consumed was not increased upon incrementing param, before: %d, after: %d", - ctx1.GasMeter().GasConsumed(), ctx2.GasMeter().GasConsumedToLimit(), - ) - } -} diff --git a/x/blob/keeper/genesis_test.go b/x/blob/keeper/genesis_test.go deleted file mode 100644 index 5dc450c55e..0000000000 --- a/x/blob/keeper/genesis_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package keeper_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/x/blob" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/stretchr/testify/require" -) - -func TestGenesis(t *testing.T) { - genesisState := types.GenesisState{ - Params: types.DefaultParams(), - } - - k, _, ctx := CreateKeeper(t) - blob.InitGenesis(ctx, *k, genesisState) - got := blob.ExportGenesis(ctx, *k) - require.NotNil(t, got) - require.Equal(t, types.DefaultParams(), got.Params) -} diff --git a/x/blob/keeper/grpc_query.go b/x/blob/keeper/grpc_query.go deleted file mode 100644 index a81d6f19f3..0000000000 --- a/x/blob/keeper/grpc_query.go +++ /dev/null @@ -1,7 +0,0 @@ -package keeper - -import ( - "github.com/celestiaorg/celestia-app/x/blob/types" -) - -var _ types.QueryServer = Keeper{} diff --git a/x/blob/keeper/grpc_query_params.go b/x/blob/keeper/grpc_query_params.go deleted file mode 100644 index 492c428c26..0000000000 --- a/x/blob/keeper/grpc_query_params.go +++ /dev/null @@ -1,19 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/celestiaorg/celestia-app/x/blob/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - return &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil -} diff --git a/x/blob/keeper/grpc_query_params_test.go b/x/blob/keeper/grpc_query_params_test.go deleted file mode 100644 index 3398c8ecae..0000000000 --- a/x/blob/keeper/grpc_query_params_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package keeper_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/x/blob/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" -) - -func TestParamsQuery(t *testing.T) { - keeper, _, ctx := CreateKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - params := types.DefaultParams() - keeper.SetParams(ctx, params) - - response, err := keeper.Params(wctx, &types.QueryParamsRequest{}) - require.NoError(t, err) - require.Equal(t, &types.QueryParamsResponse{Params: params}, response) -} diff --git a/x/blob/keeper/keeper.go b/x/blob/keeper/keeper.go deleted file mode 100644 index bb69acfd29..0000000000 --- a/x/blob/keeper/keeper.go +++ /dev/null @@ -1,57 +0,0 @@ -package keeper - -import ( - "context" - "fmt" - - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/tendermint/tendermint/libs/log" -) - -const ( - payForBlobGasDescriptor = "pay for blob" -) - -// Keeper handles all the state changes for the blob module. -type Keeper struct { - cdc codec.BinaryCodec - paramStore paramtypes.Subspace -} - -func NewKeeper( - cdc codec.BinaryCodec, - ps paramtypes.Subspace, -) *Keeper { - if !ps.HasKeyTable() { - ps = ps.WithKeyTable(types.ParamKeyTable()) - } - - return &Keeper{ - cdc: cdc, - paramStore: ps, - } -} - -func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) -} - -// PayForBlobs consumes gas based on the blob sizes in the MsgPayForBlobs. -func (k Keeper) PayForBlobs(goCtx context.Context, msg *types.MsgPayForBlobs) (*types.MsgPayForBlobsResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - gasToConsume := types.GasToConsume(msg.BlobSizes, k.GasPerBlobByte(ctx)) - ctx.GasMeter().ConsumeGas(gasToConsume, payForBlobGasDescriptor) - - err := ctx.EventManager().EmitTypedEvent( - types.NewPayForBlobsEvent(msg.Signer, msg.BlobSizes, msg.Namespaces), - ) - if err != nil { - return &types.MsgPayForBlobsResponse{}, err - } - - return &types.MsgPayForBlobsResponse{}, nil -} diff --git a/x/blob/keeper/keeper_test.go b/x/blob/keeper/keeper_test.go deleted file mode 100644 index 41f6df1491..0000000000 --- a/x/blob/keeper/keeper_test.go +++ /dev/null @@ -1,107 +0,0 @@ -package keeper_test - -import ( - "bytes" - "fmt" - "testing" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - testutil "github.com/celestiaorg/celestia-app/v2/test/util" - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/blob" - appns "github.com/celestiaorg/go-square/namespace" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/store" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - proto "github.com/gogo/protobuf/proto" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - tmversion "github.com/tendermint/tendermint/proto/tendermint/version" - tmdb "github.com/tendermint/tm-db" -) - -// TestPayForBlobs verifies the attributes on the emitted event. -func TestPayForBlobs(t *testing.T) { - k, _, ctx := CreateKeeper(t) - signer := "celestia15drmhzw5kwgenvemy30rqqqgq52axf5wwrruf7" - namespace := appns.MustNewV0(bytes.Repeat([]byte{1}, appns.NamespaceVersionZeroIDSize)) - namespaces := [][]byte{namespace.Bytes()} - blobData := []byte("blob") - blobSizes := []uint32{uint32(len(blobData))} - - // verify no events exist yet - events := ctx.EventManager().Events().ToABCIEvents() - assert.Len(t, events, 0) - - // emit an event by submitting a PayForBlob - msg := createMsgPayForBlob(t, signer, namespace, blobData) - _, err := k.PayForBlobs(ctx, msg) - require.NoError(t, err) - - // verify that an event was emitted - events = ctx.EventManager().Events().ToABCIEvents() - assert.Len(t, events, 1) - protoEvent, err := sdk.ParseTypedEvent(events[0]) - require.NoError(t, err) - event, err := convertToEventPayForBlobs(protoEvent) - require.NoError(t, err) - - // verify the attributes of the event - assert.Equal(t, signer, event.Signer) - assert.Equal(t, namespaces, event.Namespaces) - assert.Equal(t, blobSizes, event.BlobSizes) -} - -func convertToEventPayForBlobs(message proto.Message) (*types.EventPayForBlobs, error) { - if event, ok := message.(*types.EventPayForBlobs); ok { - return event, nil - } - return nil, fmt.Errorf("message is not of type EventPayForBlobs") -} - -func createMsgPayForBlob(t *testing.T, signer string, namespace appns.Namespace, blobData []byte) *types.MsgPayForBlobs { - blob := blob.New(namespace, blobData, appconsts.ShareVersionZero) - msg, err := types.NewMsgPayForBlobs(signer, appconsts.LatestVersion, blob) - require.NoError(t, err) - return msg -} - -func CreateKeeper(t *testing.T) (*keeper.Keeper, store.CommitMultiStore, sdk.Context) { - storeKey := sdk.NewKVStoreKey(paramtypes.StoreKey) - tStoreKey := storetypes.NewTransientStoreKey(paramtypes.TStoreKey) - - db := tmdb.NewMemDB() - stateStore := store.NewCommitMultiStore(db) - stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) - stateStore.MountStoreWithDB(tStoreKey, storetypes.StoreTypeTransient, nil) - require.NoError(t, stateStore.LoadLatestVersion()) - - registry := codectypes.NewInterfaceRegistry() - cdc := codec.NewProtoCodec(registry) - ctx := sdk.NewContext(stateStore, tmproto.Header{ - Version: tmversion.Consensus{ - Block: 1, - App: 1, - }, - }, false, nil) - - paramsSubspace := paramtypes.NewSubspace(cdc, - testutil.MakeTestCodec(), - storeKey, - tStoreKey, - types.ModuleName, - ) - k := keeper.NewKeeper( - cdc, - paramsSubspace, - ) - k.SetParams(ctx, types.DefaultParams()) - - return k, stateStore, ctx -} diff --git a/x/blob/keeper/msg_server.go b/x/blob/keeper/msg_server.go deleted file mode 100644 index 8dbda328d3..0000000000 --- a/x/blob/keeper/msg_server.go +++ /dev/null @@ -1,17 +0,0 @@ -package keeper - -import ( - "github.com/celestiaorg/celestia-app/x/blob/types" -) - -var _ types.MsgServer = msgServer{} - -type msgServer struct { - Keeper -} - -// NewMsgServerImpl returns an implementation of the blob MsgServer interface -// for the provided Keeper. -func NewMsgServerImpl(keeper Keeper) types.MsgServer { - return &msgServer{Keeper: keeper} -} diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go deleted file mode 100644 index 9be99523fa..0000000000 --- a/x/blob/keeper/params.go +++ /dev/null @@ -1,31 +0,0 @@ -package keeper - -import ( - "github.com/celestiaorg/celestia-app/x/blob/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// GetParams gets all parameters as types.Params -func (k Keeper) GetParams(ctx sdk.Context) types.Params { - return types.NewParams( - k.GasPerBlobByte(ctx), - k.GovMaxSquareSize(ctx), - ) -} - -// SetParams sets the params -func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { - k.paramStore.SetParamSet(ctx, ¶ms) -} - -// GasPerBlobByte returns the GasPerBlobByte param -func (k Keeper) GasPerBlobByte(ctx sdk.Context) (res uint32) { - k.paramStore.Get(ctx, types.KeyGasPerBlobByte, &res) - return res -} - -// GovMaxSquareSize returns the GovMaxSquareSize param -func (k Keeper) GovMaxSquareSize(ctx sdk.Context) (res uint64) { - k.paramStore.Get(ctx, types.KeyGovMaxSquareSize, &res) - return res -} diff --git a/x/blob/keeper/params_test.go b/x/blob/keeper/params_test.go deleted file mode 100644 index 95a533d880..0000000000 --- a/x/blob/keeper/params_test.go +++ /dev/null @@ -1,18 +0,0 @@ -package keeper_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/stretchr/testify/require" -) - -func TestGetParams(t *testing.T) { - k, _, ctx := CreateKeeper(t) - params := types.DefaultParams() - - k.SetParams(ctx, params) - - require.EqualValues(t, params, k.GetParams(ctx)) - require.EqualValues(t, params.GasPerBlobByte, k.GasPerBlobByte(ctx)) -} diff --git a/x/blob/module.go b/x/blob/module.go deleted file mode 100644 index 575458023f..0000000000 --- a/x/blob/module.go +++ /dev/null @@ -1,165 +0,0 @@ -package blob - -import ( - "context" - "encoding/json" - "fmt" - - "github.com/gorilla/mux" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" - - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/celestiaorg/celestia-app/x/blob/client/cli" - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - cdctypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" -) - -var ( - _ module.AppModule = AppModule{} - _ module.AppModuleBasic = AppModuleBasic{} -) - -// ---------------------------------------------------------------------------- -// AppModuleBasic -// ---------------------------------------------------------------------------- - -// AppModuleBasic implements the AppModuleBasic interface for the capability module. -type AppModuleBasic struct { - cdc codec.BinaryCodec -} - -func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { - return AppModuleBasic{cdc: cdc} -} - -// Name returns the capability module's name. -func (AppModuleBasic) Name() string { - return types.ModuleName -} - -func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - types.RegisterLegacyAminoCodec(cdc) -} - -// RegisterInterfaces registers the module's interface types -func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { - types.RegisterInterfaces(reg) -} - -// DefaultGenesis returns the capability module's default genesis state. -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) -} - -// ValidateGenesis performs genesis state validation for the capability module. -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error { - var genState types.GenesisState - if err := cdc.UnmarshalJSON(bz, &genState); err != nil { - return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) - } - return genState.Validate() -} - -// RegisterRESTRoutes registers the capability module's REST service handlers. -func (AppModuleBasic) RegisterRESTRoutes(_ client.Context, _ *mux.Router) { -} - -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. -func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { - panic(err) - } -} - -// GetTxCmd returns the capability module's root tx command. -func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.GetTxCmd() -} - -// GetQueryCmd returns the capability module's root query command. -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - -// ---------------------------------------------------------------------------- -// AppModule -// ---------------------------------------------------------------------------- - -// AppModule implements the AppModule interface for the capability module. -type AppModule struct { - AppModuleBasic - - keeper keeper.Keeper -} - -func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule { - return AppModule{ - AppModuleBasic: NewAppModuleBasic(cdc), - keeper: keeper, - } -} - -// Name returns the capability module's name. -func (am AppModule) Name() string { - return am.AppModuleBasic.Name() -} - -// Route returns the capability module's message routing key. -func (am AppModule) Route() sdk.Route { - return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) -} - -// QuerierRoute returns the capability module's query routing key. -func (AppModule) QuerierRoute() string { return types.QuerierRoute } - -// LegacyQuerierHandler returns the capability module's Querier. -func (am AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { - return nil -} - -// RegisterServices registers a GRPC query service to respond to the -// module-specific GRPC queries. -func (am AppModule) RegisterServices(cfg module.Configurator) { - types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) - types.RegisterQueryServer(cfg.QueryServer(), am.keeper) -} - -// RegisterInvariants registers the capability module's invariants. -func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} - -// InitGenesis performs the capability module's genesis initialization. It -// returns an empty list of validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { - var genState types.GenesisState - // Initialize global index to index in genesis state - cdc.MustUnmarshalJSON(gs, &genState) - - InitGenesis(ctx, am.keeper, genState) - - return []abci.ValidatorUpdate{} -} - -// ExportGenesis returns the capability module's exported genesis state as raw JSON bytes. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { - genState := ExportGenesis(ctx, am.keeper) - return cdc.MustMarshalJSON(genState) -} - -// ConsensusVersion implements ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 2 } - -// BeginBlock executes all ABCI BeginBlock logic respective to the capability module. -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} - -// EndBlock executes all ABCI EndBlock logic respective to the capability module. It -// returns an empty list of validator updates. -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} diff --git a/x/blob/test/decode_blob_tx_test.go b/x/blob/test/decode_blob_tx_test.go deleted file mode 100644 index 20faf4401f..0000000000 --- a/x/blob/test/decode_blob_tx_test.go +++ /dev/null @@ -1,102 +0,0 @@ -package test - -import ( - "crypto/sha256" - "encoding/hex" - "fmt" - "os" - "path/filepath" - "strings" - "testing" - - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/blob" - "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/assert" - "github.com/tendermint/tendermint/proto/tendermint/blockchain" -) - -// TestDecodeBlobTx demonstrates how one can take the response from the -// celestia-core API endpoint: -// `/cosmos/base/tendermint/v1beta1/blocks/{block_number}` -// and convert all encoded transactions into sdk.Tx. -// -// NOTE: this process differs from other Cosmos SDK chains because the -// transactions of type BlobTx won't be usable directly. One needs to extract -// the Tx field inside the BlobTx prior to decoding it as an sdk.Tx. -func TestDecodeBlobTx(t *testing.T) { - blockResponse := getTestdataBlockResponse(t) - - for i, rawTx := range blockResponse.Block.Data.Txs { - txBytes := getTxBytes(rawTx) - tx, err := decodeTx(txBytes) - if err != nil { - t.Errorf("error decoding tx: %v", err) - } - - // The last transaction in the block is a blob transaction. - // https://celenium.io/tx/C55BDD3DF3348A9F8D9206528051804754F009A1B9D0F69CCC2F9D4334215D21 - if i == 273 { - wantHash := "C55BDD3DF3348A9F8D9206528051804754F009A1B9D0F69CCC2F9D4334215D21" - gotHash := strings.ToUpper(hex.EncodeToString(hash(txBytes))) - assert.Equal(t, wantHash, gotHash) - - msg := tx.GetMsgs()[0] - wantSigner := "celestia18y3ydyn7uslhuxu4lcm2x83gkdhrrcyaqvg6gk" - gotSigner := msg.GetSigners()[0].String() - assert.Equal(t, gotSigner, wantSigner) - - msgPayForBlobs, ok := msg.(*blobtypes.MsgPayForBlobs) - if !ok { - t.Errorf("expected MsgPayForBlobs, got %T", msg) - } - wantNamespace := []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xe5, 0xf6, 0x79, 0xbf, 0x71, 0x16, 0xcb} - gotNamespace := msgPayForBlobs.Namespaces[0] - assert.Equal(t, wantNamespace, gotNamespace) - } - } -} - -// getTestdataBlockResponse gets the block response from the testdata directory. -func getTestdataBlockResponse(t *testing.T) (resp blockchain.BlockResponse) { - // block_response.json is the JSON response from the API endpoint: - // https://api.celestia.pops.one/cosmos/base/tendermint/v1beta1/blocks/408 - // The response was persisted to block_response.json so that this test - // doesn't execute an HTTP request every invocation. - path := filepath.Join("testdata", "block_response.json") - fileContents, err := os.ReadFile(path) - if err != nil { - t.Fatalf("reading json file: %v", err) - } - - encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) - if err = encodingConfig.Codec.UnmarshalJSON(fileContents, &resp); err != nil { - t.Fatalf("error unmarshal JSON block response: %v", err) - } - return resp -} - -func getTxBytes(txBytes []byte) []byte { - bTx, isBlob := blob.UnmarshalBlobTx(txBytes) - if isBlob { - return bTx.Tx - } - return txBytes -} - -func decodeTx(txBytes []byte) (types.Tx, error) { - encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) - decoder := encodingConfig.TxConfig.TxDecoder() - tx, err := decoder(txBytes) - if err != nil { - return nil, fmt.Errorf("error decoding transaction: %v", err) - } - return tx, nil -} - -func hash(bz []byte) []byte { - checksum := sha256.Sum256(bz) - return checksum[:] -} diff --git a/x/blob/test/testdata/block_response.json b/x/blob/test/testdata/block_response.json deleted file mode 100644 index 763cf19deb..0000000000 --- a/x/blob/test/testdata/block_response.json +++ /dev/null @@ -1,925 +0,0 @@ -{ - "block": { - "header": { - "version": { - "block": "11", - "app": "1" - }, - "chain_id": "celestia", - "height": "408", - "time": "2023-10-31T15:24:10.454033411Z", - "last_block_id": { - "hash": "cRLIkUkIlw2UeyPve1aSEO57zuHiIgsa8jSSgU2XCGA=", - "part_set_header": { - "total": 2, - "hash": "Mn1TmmyxpsI42IV2S8xt1tgrzYuLWpQov+9l+Hs37gQ=" - } - }, - "last_commit_hash": "J5kg51/pkBV0WaCOAWfnvgak/oG4cced5TeJBX3tbBY=", - "data_hash": "l7prxH6ZB/63PBYZ0Y2d0p5n0GTPIm4ZXGjazp0P6mY=", - "validators_hash": "xF9pVCAOoWgs47uBfYx4cq5sujF04H/UbLOHu8ZlKx0=", - "next_validators_hash": "iR4PeA8YVW7e/qZ6rkA9At0n3Mn0pahpPpy8njXsbLI=", - "consensus_hash": "wLamNLcq6Wh+pTttJ3pzq6E4a6PPxtDyaWNgL39v/NY=", - "app_hash": "mcS05GrB9mMkElzuqdlZYwIeT39KeUL+P26YGPt5+4E=", - "last_results_hash": "1AioKZO6wyBl/QwgplLH85hC+SwByIWFqPCMsQqIetQ=", - "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", - "proposer_address": "n25/MFjM79c2+o1vHC/nNyYjBng=" - }, - "data": { - "txs": [ - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMW12a3JodjJ6dWV1NThhbjdoZHE5bm1lYTRhZDVyZ3IweHduMnphEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEgg3MDAwMDAwMBIJMTAyNDQ4NjcxEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJD8D+IVc5djmowxX8Dl1Q91wfgPHp+HQyknPbx9Zta7hIECgIIfxgDEhMKDQoEdXRpYRIFMzg0NTYQiu8FGkBgQZXj4vNR8Cu6qfhuh5pKqF5eEHZACNWDnkYzykrjN0DnP0o2WjxiXnFqrzxMgFRiKc58isa2SwwPsMeXqTog", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW1odTduNjN3Mzk1cTJyNzN6eW12ZjJocHF3MGNhNTVleTN0NmcwEi9jZWxlc3RpYTE1NG1qenJqdG5ocHE1dDB0bGY0MHZzenFjbWRnazkyNGU1NjJ2NxoRCgR1dGlhEgkxNjMwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA6Bu95k7dC2OsAJCW8BKn7LYHT2YoggtDFK/OI3qX94dEgQKAgh/EhMKDQoEdXRpYRIFNTA0MTIQzNgHGkAj7rbSJjkImxUhV+tgXCLS8h/kYmAergTyWzUP/zSVUmbeLu7bq2ks/xkof7+rvg/6/A3LeE9Obiz+c8o/nD+c", - "CpcBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMThkNW50MmNkdmw1ZXF4OHlrczZ1Zmh6NzJlamZnd2dsaHZxZHprEi9jZWxlc3RpYTFyaHY4NnUzZWNmMHpjNnV2OTVsOWRkYTh0NHhsajNua2xsM3psORoQCgR1dGlhEggxMDAwMDAwMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECP0QS/s5X9sIdy0h5IdS4A2qDbUvv/rm7p94uEZO9cJkSBAoCCH8SEwoNCgR1dGlhEgU1MTQzNhDM7AcaQAnbGcgjwYLTkv1o4skCMt7RrhTiNlX7k+wo8a03KItsfZRUyrNICsTRdXd64/EspRZ2wyQ7i7sXnUgzxac2Bz4=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWtxZnhxbGMweXdkOWhxNjRwa2VzYXJ4eWpxemY2MjdyZDM1NmY1Ei9jZWxlc3RpYTF1cGhsMmg4c3hwYzA4dWFrbWozbDhnanI4dHhjbHhkcGFmdzl3ZRoRCgR1dGlhEgkxNjMxMzAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAnICGUb54zmOp6qxFacRfrd6d9vpCdftA4hle/vzFd7PEgQKAggBEhMKDQoEdXRpYRIFNTAyNzIQ7tUHGkCMb216lTCXGlzICkHCghPslq6foe//c8vtomcSC3R0dTSYQUwbH8XLK+ffFfAZWR/FU9DKWGMa0GKzs2PuxT86", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWUyYXI2anZnbHBwYWtuODl0emZ2a3RuamhzM2Q5MDN1ZWEzZms1Ei9jZWxlc3RpYTFjdWw4OGgzYW1odzd4d3YyNnpqOXZ1dnhyZDJ2NnZ4ZTRmNW1ubRoRCgR1dGlhEgkyMjk0ODk1ODgSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA3OBEfiz/2w9aWcevW9IRw0HkWO0MOZjPZHYx50BOduNEgQKAgh/EhMKDQoEdXRpYRIFNTA0MTIQzNgHGkDXdFZ/H/BblYd0JZJ7dFeT1MHiP/nlJxwzxSAu/Uria0c4OvY41ECqkAQWngCHeUKiJ6yHHL8efqKBVjcmbKS4", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW15bjU0cWU0Z3g2ZGFzdW5kcjBlNGxydnljbGZxczltYXkyZGxwEi9jZWxlc3RpYTF1eXRya2F1OWM5c2dwamFmeDk5YzM0YWtua2o3eHlzZ2hodng0ZhoRCgR1dGlhEgkxNjMwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAyZ8Kl0qiO/zV5PRCKbEms0OmLV8+bLB9h6NY6ayRVPmEgQKAgh/EhMKDQoEdXRpYRIFNTA0MTIQzNgHGkDVOPvmAebJ8toeAXy/cyhMnZYgUFRymnscRhiYuaUkKy0OphxzG8Ys2WGeOCz6R54/3SS+Icq4kS4vrf0X2p37", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXJ0anFhZjRtNTg3bjc2OGt2ZTloM3Jta2R1cGdoY3B4cm5rMDJhEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggzMDAwMDAwMBIJMTAxMDg0ODcyEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQO1L8SnnkopW1UukpeIJzITmuX0WAIISGGVMaclG6VOXBIECgIIfxITCg0KBHV0aWESBTQzNjgzEJbVBhpA/yFDuJZ52m1pg6FfPwHa4x8r5eVI3NEgKmu2rfIBw6pbhwom8YmyZ/Exo8yEzBMBlIA/ge7cMy+C9br/n7EFDQ==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXQ1Mm0zNGFjZmZ5d3RoaGc1azA2NzQ2eHJtOTl6cDBwOTBhZmF2Ei9jZWxlc3RpYTFjdGd3M3Juam5zNDU4YXprbG5samd0dGFkMDV6d240OXBuZHF0NBoRCgR1dGlhEgkxNjAwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkxdVGKoLU8SFfx4ZNxQyQU6kRNklz8Ni0VlA6SB3ZVvEgQKAgh/EhMKDQoEdXRpYRIFNDM2MTkQ9tMGGkA/PhnZSzYOWP1Jmdrngssqs7LPcNFqCcOe4rGrnqPfKQZ7BR+pO/VXOfqV+1zT4cC7wADvo+YeWPJ2F4B9bLxf", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMW51M3B1ZmE5cmVrMmRneHdrOGhrZDhtczdqeDJoa2d5Y3hkaDVwEi9jZWxlc3RpYTE5eDhsbWM2cGZ6YXlld21ra201dDBsd3JwZmNhM2s2a2FwMm0yehoPCgR1dGlhEgcxMDAwMDAwEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLG4T5R7QswDisE94t1byrppx+Dk/n3+zl+9+mD6E4XCxIECgIIfxgDEhMKDQoEdXRpYRIFNDYyNDMQlocHGkBoFFMUSCpZdnbFdbniKm/1p8N4dIcyVgOl3u25cHAUOGhGQtujKY3B1tRy3FAmk7QQykT6HnW4E4M7vg1zonav", - "CpcBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTBrbHUwNmg3M3U0eDhkdGF3eHh6OWxxYTk4bjBoY2c5amF3ejN1Ei9jZWxlc3RpYTF1bXpzazdnN3R2eGswNTVzanAzM3E5ZzZ4NXpoNjVoMnQzOTh6dhoQCgR1dGlhEgg5OTAwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC1v/Tvg74rs0Bazwcz+N0wAs+yaaEVJlYSiG+HKDAUyYSBAoCCH8YARITCg0KBHV0aWESBTQ2MTY1ENOFBxpA75cd+cazVBAIFZvo3SkPEpE1nVOq6x2e6D4T8LgX1FkqN2NAi9iqT3M1SNOzcWLKOwSRw2D13yNuDNbuJYSO0w==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTQ4NmN4eTBlcmx3bXg1ZXY4NnZ6aHB1OGx6dWZkcTVldWVhZTBnEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNDc0MDcSCTEwMDQxNTgyMhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZCdYrS3lEfY8r2BEH+lUjAIaZaFRgBpdaGkv8053SE0SBAoCCH8SEwoNCgR1dGlhEgU0MjU5MxDxvwYaQLjVB4IuZT+QTdH1HS4WIiHpu3gGRdVt4Il5WSTPE+pFNDpAL7w7t7ewcQVlVOPtuT6++Sq5oJJwRIPymUoc+cY=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWgyeHQwdm5zamtlZzBhazRxcmRueDdqYzV0azZuY2d0cnJqZWdsEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ2MDAwMDASCTEwMTU1MDU4NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZxv3ohpn1ywFULnYWvpmRx49DYlZ/EgI5g3chIL5RqsSBAoCCAESEwoNCgR1dGlhEgU1MDM0ORCv1wcaQK4c54xZOxgThmXW4ou7IcTJUhy8HRWvIv8c1m6KnRFbWu1OmbgGwKnaI7GfKaOVI9a6r9eDK1R7ri8fqsjIL98=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWVxdWt2anMycDR1OHBoZnV4bTgzZGdkc3hxbjJ0OHQzcTJyc2swEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQwMDAwMDASCTEwMDA4OTIyNxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZnsuP0BV6pulZKImD0QtUB+QvN1qHSN6xcV3UgORR2MSBAoCCH8SEwoNCgR1dGlhEgU2NzE0OBC8nwoaQE+bfvNnuAlOELw8IkYsyfm7fjGaywXzMaeH4bsFQuZjVovo/ZfgG4d0j0N3ZOJj39mM0FluBsODIBrNSJgVWeA=", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTVxMzRsMnBrbmp1NXMzZmt4cDgwcDMyczlodGFtbHpnZHhoMjd1Ei9jZWxlc3RpYTF5amFtMHoyenBwamZhNXpmcWNhd3Y5em1jdjN1Zjk5NDI4eXg5cxoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJC8pcnPJFcVA41sCUMfltwUCbScxg0bZ1GFplNuPmqCBIECgIIfxITCg0KBHV0aWESBTUxNDE5EKLsBxpAWO5oawbWnvvzJCBt67aKYRCsddVEZCjvgcjKcRjHgOMdHFz9q2aKLgdWX1tpXX1mgZKiVpuaX4ftV5yVwRqPHQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXd1a2U4ejhnNGQ4MnZ4YTR6Zzd1ZmdmdmhjbGgwZ3I0Y25wenVmEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5MTAwMDASCTEwMDA1NjAwNBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDO1sk9ETFC6yvyPxxfiVM5iF6yJ2c9PychKer0azJrYgSBAoCCH8SEwoNCgR1dGlhEgU0Nzk0OBC9qAcaQIwdIXLIotUk3n3xT0k2mmFjAuQ9IwUAtZ3cydRFDDQkHqhw8CdEuxoUWMDOKco1jFJ2u6gziDwX2N22eU68WiY=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTA5c2F2ZnN2YTRoa2VkcTRkcHczZ2Zha2EzdDlhNWNodWY4d3ltEi9jZWxlc3RpYTF3ODJ6dTVlYWtlNXAwcWNreGM0eDd3d21lMmhzNXl6ZGtyZXQwcxoRCgR1dGlhEgkyOTQ5Mjk2MzESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAuyjZOk/xoYnKZoM5OS4HGvAOy640kvlPB1C6LAo6kRQEgQKAgh/EhMKDQoEdXRpYRIFNTAzNjkQ4tcHGkD3jZ9y4/n5zldR5qB7t6bZ3LsO5aXkYLVtdejUOaX0/XxEFzZCd2xTBvH5fdbpMCLjCay1YJWmwa15WwFqozIn", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWd4dGNqYW5kMHBzY2RtNmFsYzhzdnBqMDl5cWNrZ2czejVmZmtwEi9jZWxlc3RpYTFneHRjamFuZDBwc2NkbTZhbGM4c3ZwajA5eXFja2dnM3o1ZmZrcBoRCgR1dGlhEgkxNjMxMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohApYBstaPlNYnGJP9Wp4pmN0makm6KyoCLWHJUmAWjG6LEgQKAgh/EhMKDQoEdXRpYRIFNDQwMjEQ5NsGGkASyRpbuUun2zkAxpT0IGWduxmRgB5VRN0qss05Erwx3HuHNnou1p6OczsWJWUyE5+iL9ncXjqMWWWF7Yhlt5Z2", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJ1ZWxnZzY2M3VyZjNyeGdjenE3cGdsa2dxd3ZtMm4zOXYyeGt3Ei9jZWxlc3RpYTFuNnVreWswN3A1enp1bTRweHhjcWdsd2R2ajIzaG0weWdodjJ4ehoRCgR1dGlhEgkxNjMxMzk2MzESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAo4KZSxxZ4R9uwzYCjoTHfv55kH9VHG/KLNjYtLDItysEgQKAgh/EhMKDQoEdXRpYRIFNTAzNjkQ4tcHGkA6rbueWkA7CJaxKO1MleLqWJJqBxXjKIRfmt3scvyjF09OJhny78KA8EldmGR+9hyhwa/sfya2+OF58juFPVuy", - "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XCJvc21vc2lzLXBvb2xtYW5hZ2VyXCIsXCJvcGVyYXRpb25zXCI6W3tcInBvb2xcIjpcIjEyNDdcIixcImRlbm9tX2luXCI6XCJpYmMvRDc5RTdEODNBQjM5OUJGRkY5MzQzM0U1NEZBQTQ4MEMxOTEyNDhGQzU1NjkyNEEyQTgzNTFBRTI2MzhCMzg3N1wiLFwiZGVub21fb3V0XCI6XCJpYmMvNDk4QTA3NTFDNzk4QTBEOUEzODlBQTM2OTExMjNEQURBNTdEQUE0RkUxNjVENUM3NTg5NDUwNUI4NzZCQTZFNFwifV19fSxcIm1pbl9jb2luXCI6e1wiZGVub21cIjpcImliYy80OThBMDc1MUM3OThBMEQ5QTM4OUFBMzY5MTEyM0RBREE1N0RBQTRGRTE2NUQ1Qzc1ODk0NTA1Qjg3NkJBNkU0XCIsXCJhbW91bnRcIjpcIjQ0Mjg2MjcxOFwifSxcInRpbWVvdXRfdGltZXN0YW1wXCI6MTY5ODc2NjExNDM3ODQ3MzY0NSxcInBvc3Rfc3dhcF9hY3Rpb25cIjp7XCJpYmNfdHJhbnNmZXJcIjp7XCJpYmNfaW5mb1wiOntcInNvdXJjZV9jaGFubmVsXCI6XCJjaGFubmVsLTc1MFwiLFwicmVjZWl2ZXJcIjpcIm5vYmxlMXhkdjVjbGU2YWthbnFyenR4bWhnZmNuODBldm5oczRudDN1eDhsXCIsXCJtZW1vXCI6XCJcIixcInJlY292ZXJfYWRkcmVzc1wiOlwib3NtbzF4ZHY1Y2xlNmFrYW5xcnp0eG1oZ2ZjbjgwZXZuaHM0bnRmNjdmclwifX19LFwiYWZmaWxpYXRlc1wiOltdfX19fSIsInJlY2VpdmVyIjoib3NtbzFkbXM3aDVnMHpscWQ4MjRhbjR1NDBkeG4wampyd3MybjAweGhhc3I3a2NjZ3RtdHhlcGFxZDh0enUyIiwic2VuZGVyIjoiY2VsZXN0aWExeGR2NWNsZTZha2FucXJ6dHhtaGdmY244MGV2bmhzNG5qY2M3OXUifToHCAEQrYzlBRJheyJyZXN1bHQiOiJleUpqYjI1MGNtRmpkRjl5WlhOMWJIUWlPbTUxYkd3c0ltbGlZMTloWTJzaU9pSmxlVXA1V2xoT01XSklVV2xQYVVwQ1ZWUXdPVWx1TUQwaWZR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pMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhEltyZWxheWVkIGJ5IENyeXB0b0NyZXcgVmFsaWRhdG9ycyB8IGhlcm1lcyAxLjYuMCs0YjViMzRlYTIgKGh0dHBzOi8vaGVybWVzLmluZm9ybWFsLnN5c3RlbXMpEmkKUQpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKeA6XDVpYbQ/2jef6KXPR+4uwS7fh9gsGoUqauvY8RRxIECgIIARiiARIUCg4KBHV0aWESBjQxMDE2NxDckWQaQMJIk+X9+iAF/sCXXXJmGGQjVrGOooPm5HxNXOHjtIbGHjzO0dKb2cd6+OLT+nbm6ZnLrbcIqc24KmK1hSZ2TAI=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXg5bnJhNnlteTZqOHZ1OGpwZ3E3M3VnNDlrNjl5OHk0eDkwOXN3Ei9jZWxlc3RpYTF0MzI1ZDB2MGVmbHA0OWM1ZzZ1dTI0cnBqOTh5ZzNtN3QzOHZlaxoRCgR1dGlhEgkxNjMxNjg3MDMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAq4Zz65EdTdJUqgKLjxDeEFFX4QJfr2c+XXkmjD0TLVuEgQKAgh/EhMKDQoEdXRpYRIFMjEyOTcQ8b8GGkAAFkfG1bIADfpSag2UyWU0Lb/CuMertO5CuKT3RvSwOjwXIpuM35Vem3Jqym/j3XSPkdDBW1Z+2DNcBfVMlvsT", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXI2OXVueGU2M25heHhjenNkM3l1czdyZjBqNGZhc256amdsMmczEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5MDAwMDASCTEwMDMzNzQyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECc4coCvDxfzn7kP1KHo9zy1xwiwDgla0qtLV1PegHfnESBAoCCH8SEwoNCgR1dGlhEgUyMTg0MhCW1QYaQEUIN6YwB1R6k5bEoRR26AnuV+Ux2Tv2t3vkyAiD+VEGbw/Vn0WAvejcq9R95QRvdSwjP6ccFrsaP8ws29etIW8=", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWMyYTlld3kyd25kaHNrYWZ1bmcwMnhodHlmOTdoNm1tNmplZWUwEi9jZWxlc3RpYTFkZ2dmYXZ5eHloNXZ6MzUyeHZteGhzbnVuZ25renR3ZDBnZ3pnbRoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMyf7fjE3LOo65nHGu0hW9uE50pGKzHh7PHeDJppuQY3hIECgIIfxITCg0KBHV0aWESBTIxMjk3EPG/BhpAqLJdpEwJ2DoebEHy0PiT37FqLSPtb0i50SZBdkF/TG9BpA6vxaxcQHGp1BG5KKlzhWbR8QM16L/JGeEfq7yeCg==", - "CqEBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWRqM3h1M2pkeGtkZ3Y5Z3VzOG41MHRoNXZrNHU1cnF1azh1NzltEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoPCgR1dGlhEgcxMDAwMDAwEgkxMDI2ODIxNjESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkqOPRzzNZJo2Eb8PLy91FSaDRoODIsVt9loW9q7sgEtEgQKAgh/EhMKDQoEdXRpYRIFMjE4NDIQltUGGkCtxfc+HPg4jhREZSYHyuYReTiXUx+D6ptQRwKyJ825pVE4roLIrasUxj/G8CYTm2abco8Djm9/k/ndUG+yr73j", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTIyamU3ZWdyNmRqanA0eHJ2ZHV4cXY3a3Y1MG5oNzZ2MGdzdWx0Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxNjg3MDcSCjE5MzA4NjUzNjgSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA0wQajv+XdfmMRylufWRRgs8Fpo4Q3SyMInltVJBCI9zEgQKAgh/EhMKDQoEdXRpYRIFMjEyOTMQ3b8GGkDjRSMy/lzY4OXgjhSkmXfz403h0te3dkr8RJYHztmUlyT28Ilg1vQdBiTQogBP71odWUVzbIg8m9O5z27faQxj", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW50ZXl4a25zdzlxdGFxM3M3bXQ3NWx2ZTcwdGxjN2pjYTRwcmxtEi9jZWxlc3RpYTF4NmxjaDRqd3UyNWUzcTM1Y3JlaDQ2dHBoc3lwOHlxa2FmdHU1choRCgR1dGlhEgkxMTgwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA/ugFFUaiwrPE5pkfsgzsYidwqt48VhTOGwMaRhupdY1EgQKAgh/GAQSEwoNCgR1dGlhEgUyMDUwNBD0oAYaQNNx85beUCwG7TKylhmvl3h9V76sJrQMgm7DnlTcO8hYcyv13s2ap0LJ2gcD3FHQYbx3+6AOL7mn7UOHEQ4M1Qs=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWszeGVmc2NxZmxodGxmbmY1NTRzMjl4Y2UycHZ2a3FhaDk1OHBhEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjg0OTU3NDMSCTEwMDQwMjIyNhJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDAhSko0YcjOdWkV8Gvd9x1EAW4hVakcqYl+rMTjxyca4SBAoCCH8YARITCg0KBHV0aWESBTIwNTA0EPSgBhpACrO6IpQekj6qcixtQ+JrNdM5hFbenIbGhEb92+rzzBxoUbRjyCrCkHFkHg84vUryoU7Mj2YhdKRQsFjF6E7bjg==", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWozd3NsZTZrY211ZW1lbmR3NHZ6MmdwOWw4aDRsZzMyZHpobXF5Ei9jZWxlc3RpYTFhOW1xOXFjaDYzbGw1dTVsa3AzY2d2NzM0eXdscHg5MGhhOWdhehoRCgR1dGlhEgkyNTc1MDAwMDASCjExODMwOTc2NjQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAo51AFjXi/bkQzJwEZ4FScKxqVB3EfsB5BH4QTmf/c66EgQKAgh/EhMKDQoEdXRpYRIFMjE3OTAQktMGGkArtjMoIUJkFh0umOD0RZVYGWjsj9uDmMrs+1F/LEORHwkhwOVpIku5aj324l3UG3PFPT4lrlMNaxIIzflCdm/7", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTltbnY1d2t1YWh5NzZrZTNkNnV1YWcwZXlmcjRtMmZudno2MnU2Ei9jZWxlc3RpYTFrMmVqMnV3dm00ajl1MjhrYzc2M3F5Z2x3ajU4MmdnZnhjZjJjeBoRCgR1dGlhEgkyODg5MzQyOTASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA/tcsNeJNgkK1CNDW8S0tzKc40fSmingU2UQIY3OFuGEEgQKAgh/GAESEwoNCgR1dGlhEgUyMDUwNBD0oAYaQMJu65oXlfZfd4PpfTqgMo4sHu8mfFRofROSmwEv9KM6MvIuw0DvqFSLeCrSFBlrDlsQ5reGzJu/AsQ+B3GCiF4=", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWFsZ2s4NWFocm4yOWZsdWVma3hmNWRnNHN2OWN0NmNheDVtdW5yEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxMTAwMDAwMDASCjE5MzQ4MTEwMTgSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA0BCrY6VVgahVPN6QW+APxsHzPJww2V5K02z8Czp1BBOEgQKAgh/EhMKDQoEdXRpYRIFMjE4NDIQltUGGkDzDUsUg548NsVkp/mIN+mQqeE12/6hMqzQdmgTssPL4i9rYX2uMW+4jDBKrifOblbR/ziIHjDE0p+VBKkiIb3C", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTl3dzdweWRyYXJycnA4bnYwNmh4M25lMG4weWo1bjZ6dnAwNDZkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggxMDAwMDAwMBIJMTAxODkwMTAzEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNsxW9sNUM0YwIxMlFqBGl+qjICRJUBJ2hVePXA/fXguBIECgIIfxITCg0KBHV0aWESBTIxODQyEJbVBhpAl9s/nny8kcDdZBUZ4GR2JYjyw/wMVsBe7kpTEB5BSv4ifvV2E0fRwGZ2LVB4j2qeDwJjyEMaeT+Je6PIHsm92g==", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTRoZnRwdTZ2ajJrcmNmbnFnNmc1bWNrcHZqaHB5dDJndTdxODJkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggyODAwMDAwMBIJMTAyMTk0NzU4EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJo8vT3l+zFgYjHDxmYb6GP4pApe2KEN1RGKM8h2vEM7xIECgIIfxgBEhMKDQoEdXRpYRIFMjAyODYQspgGGkDTH6erQa14gQ6MZKmihX6IEpXz7MMIIAPbB+ZtvgI61lHpSv9dpPa4fSRM19jTJG/UXDQfL943NQ9Y8JmBhRpT", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXVwZ3l5YzJ3N2V0cnBtZnloc3MzNnFhdzQ4OXRjcnk0YzdtZWx5Ei9jZWxlc3RpYTE5ZG5ldm12OTdxOGEzcXF4czh0ZThqM3B3bnMyN20wZjJkdDg0cRoRCgR1dGlhEgkzNjc4NjMyNjISZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAnf998S1jRKZtuCSpPrszaHJrskF8zFl7Fe31uOIl8jCEgQKAgh/GAUSEwoNCgR1dGlhEgUyMjYxMBCW8wYaQMvQvIKdnR7qjISgQnDUpwYb3ixOab531Lyw/qT+GglYR1W5obGmDQa8r4QidKghMUsHEdP1Kmq0NGjj/HKoLPM=", - "CqIBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMXQ0NXZwYWZ1Z3dydnRqM2x1Y3RkZHRqMjA5MHZzejd5aG16OTRjEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choPCgR1dGlhEgcxMDAwMDAwEgoxOTM0NzUyODA2EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJemtBa04OPSU5JLq4o9MJgl1fvh+qgQrUYZYPbT+3a4xIECgIIfxITCg0KBHV0aWESBTIxODQyEJbVBhpA1JBsvN0QmOnq5hJ3g70VlgV9XHK4cPnIoT1JtxK3tAEpawiDe0/E4UU1RRX0ROF09kzbCZw9017CnhI1PlIn+A==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWh4emF2cjJyenhzMjc2emQ1N3hheHZ1ZzY3dm02NXZ4dzYzeDdqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjExNDU3NTQSCTEwMjM2NDkxNRJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDXzvXI+bWThOCm0xvgI0y3bEPqbjIA8NyGgX+9Lah8c0SBAoCCH8YARITCg0KBHV0aWESBTIwNTA0EPSgBhpASU5WHOmod3/CU8a6jD0B5i7Rx4ZyaVRPzbJU7ojWA5l1c++NUroZCBBzHEmFJKk3kGYcFKV95yu+f8OXT31qqQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXloMzlzbnVtY2RkdnlxNXZleWg0a3d1NXd6ZjlzeG5wanI3d2d1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTU4MDAwMDASCTEwMTI3ODE0MBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDaIp6w34imScv+RRS/YxdFUuA3izMvCRTDNAjpeL+frgSBAoCCH8YAxITCg0KBHV0aWESBTIwNTA0EPSgBhpAeJY7M3VvpBp+pO0NhE4lR7dG6/h8r1Y0Vn2972/qLOkw2wfn58tC08I+WR/Z75HpUNGuGXpWJoqbTmQ1ba1ykQ==", - "CqEBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWRhZHlqazVlNW13cWFqcnVyY3VnM3J6Z2s1bWRjMHJ1eDNzbmxyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoPCgR1dGlhEgcxMDAwMDAwEgkxMDI3MzAzODISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA2BjT25I7WxfRIJRc27goK89t5WvUbu8RglKpO/Avq+nEgQKAgh/EhMKDQoEdXRpYRIFMjE4NTkQ69UGGkB3DqSuEHKObTj/LyulmnEqSq0W8gTD5zjB/XjZjyKxMCeRXalH1F5utmLoI6QTMk07iugH4ET22L2uzJTC3nBW", - "CqABCpEBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnEKL2NlbGVzdGlhMW1kbDlkMmthMzA4a3Z3czV6MzIybmpsMGcycm5qMGtqMGFzNXU1Ei9jZWxlc3RpYTFhOW1xOXFjaDYzbGw1dTVsa3AzY2d2NzM0eXdscHg5MGhhOWdhehoNCgR1dGlhEgUxMDAwMBIKMTQwMTU5OTEwMRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDr4KaTRQOYUPF8ilYpOq9NJK8Y3AIgcXglt8oc68uTsESBAoCCH8SEwoNCgR1dGlhEgUyMTgxMRD70wYaQMbNAIuwujcm8I3rwjozheTXrArlmC+QTEuiqzCXTvouJ2VWl2ljRm33+HsQRLfoIgTdTCiOURu0D8e1+c8ZPIM=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpwZjN3Nno0N3h4dTZ6cmEzaGV6aGhoMzU4MDJjcWsyOHptZTRmEi9jZWxlc3RpYTF2NnNzZTlrYWQ4NHY3NG1ncG04M2R5eGVxNjhocHpuMGF1NXRlcBoRCgR1dGlhEgkxNDgwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAlKDS3QTJeLyYQ+3CLtN1FAxZ2Dka/rMr1y3lAev2pjiEgQKAgh/GAESEwoNCgR1dGlhEgUyMDIyNBD8lQYaQB2C+RWA1nIf5j+TsMCvrPFWMyXihTRb/qipXglILzW0HTlGuxPhzSutcSu4xDvkNQGh8RpsYYr+JVbaPRlnRXs=", - "CqIBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTRzZXJ1ZGxhZjhkOW5oZ3VlcmRuNW52dHp0eHlqbnhlcTh5ZGV1Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choPCgR1dGlhEgcxMDAwMDAwEgoxOTM0ODEzMTExEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIGifsuKh3iY5aHXJ1qhG51RW2rS2i5xs2mOSuLJAKExhIECgIIfxITCg0KBHV0aWESBTIxODQyEJbVBhpAjqJS689nMOa/cl7cS+/dEoumyWG5zcSY6v32sKYmubYWCz5xdk7ZSb2/EQ6u1WAn2LAZSmOTniWNMBEBMhttaQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXFjbDhjeDlxZnIybWR2am1uc3F2cWFyNWRnOWw5YXA3ZTk3YTg4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMwMDg3MDMSCTEwMjIzNTI0ORJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECf0L8ilQXVAa7PZt62F35vH4+vKF5CdbGY7m2KtuknvISBAoCCH8SEwoNCgR1dGlhEgUyMTI5NxDxvwYaQFiSRMzdM3N+PZkDyM2WYMrKB67dABlu+q2B+E1yjrMmLV89ScYfglBGQaqr0G/UiaJPI/lGoB75DoF+jpXik6E=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTR3MzdwdDUzcG1xa2tkZWF1OWNrajl5NHMyeWc1czhtYWtoOW5tEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxMTMxNDU3NTESCTEwMjU3NDc4MxJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECp1aN52opZ41y7oawUIg81u9bf9GFk5FobMe2VlLSircSBAoCCH8YARITCg0KBHV0aWESBTIwNTA0EPSgBhpAtEOXsvrmJvco7bG4+ha1+YtVeZQyNtQjvgGy+kk/f0N8tHvwMhR9am3Z9T/XRwwO2oXjMsVGyuaPnVMSUn+RwA==", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXZncm1oNHJ5NW02eTI1d21qd2VxNGhyZThmZHltbnQ1OTU4bTB6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggxMDAwMDAwMBIJMTAyNjQ3NTk3EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLDrm8QECNfvusyzwYJJu/ffmKDe7NucbsK1xV6EmkL6xIECgIIfxITCg0KBHV0aWESBTIxODM2EPjUBhpAtIQp5GINXbrtdz6ePTj5IHoUbMoNuNiY55A4Tqn8pKUIa3CnjvKJi9AAHudo9Re5CaooZYquOqENX6R5UfNeaQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTNoNGR0c3I5MjN1cDY4ajZqcnNkZHgzcmZqcnBwam41NHF0NTBzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg3MjQSCTEwMDUxMTg1NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECk2pfqqwMx6r0xR9Xdr8V87ooFDEqCqI5EBTWhZR2iGQSBAoCCH8SEwoNCgR1dGlhEgUyMTI3NhCIvwYaQPVQQkxro3VQLVAcbaq9JT/YnWCu1slyCkOySUD0LgjjBH/P3Q0mRm7pJ1lhC8f1BjF0R1j4O98zUtbn4xjm+9c=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTAzMnh5dDhtMmx3amdsdHJydGs3ZHhyenR5Z3h1cTVta2hha2V4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NTg3MjQSCTEwMDM2MzYwMhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECX5mco8C4uBI2Nh2f70sYTX2cciiQRHwDT63KLfi0ZNASBAoCCH8SEwoNCgR1dGlhEgUyMTI3NhCIvwYaQGfyybLMXa+k+abZFe0ZFS0RGt/YN+8NwFNzUPPJmexPelbFwUeYXwJJqwjIJHAJHl5EX6L3m3aU+FGFsG3nS2c=", - "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", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXp1cm1uZDQzNmw5emE5a3V5bnJydzhtbTZrOTRydXdmNXJ2bWQ0Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMwMDAwMDASCjE5MTI4MzIzOTMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAv/P5PqcYML5kIS4bEdtUAqjIaRJYT6JR/yR8ijokQD2EgQKAgh/EhMKDQoEdXRpYRIFMjE4NDIQltUGGkBtAI0QmLYiF5dLwZUgUnfWrcu9NaEKh9rT+zJhH0HSlUuoYl7EAkmBe+31ZWGeJPyAz5brnIt0NKQPzRTHUuPm", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTY1NTAwMDAiL2NlbGVzdGlhMXdycnBybTdoYTdnczd2eWFnd2RhdG1ydHVxOTRsZGZscThlcXBqKitvc21vMXdycnBybTdoYTdnczd2eWFnd2RhdG1ydHVxOTRsZGZsZWttcWRkMgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPLutVGN9y6JIFZnOp6NtUXuV/JszArIZXE5SU4ejBXCxIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MjEQ6b0HGkCPsNga1xQHtnQGuDyRq2BCf1FdtH2pAyeD/F5ZK/YT/AaoXlDLES6MU5tSNXVc3oZEMcJX6q3H7Mxhkhf0QpGX", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNTUwMDAwMDAiL2NlbGVzdGlhMXZhZjdjOW1zNHR4dmhmc3pjODZudTZxeXltNjM4NzlocnN3end0Kitvc21vMXZhZjdjOW1zNHR4dmhmc3pjODZudTZxeXltNjM4NzloNnB2eno1MgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKHykAyZvWLaUeTHQA8/d9FmYXU402ggYXQ6D0nXW5KCxIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1NDgQ8L4HGkABaXLY+/GGPbo8Pq1j+KApnhnzxI9x3NDd6Ha6sYd1hyE0iivNw6hM1kNn5Pl9m4yhVED91BXZylurkoraqX7B", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXU2a2dtNHAyemh3eGFlY3FyNGxsYzR0cDRoajdtNnBsdWU4cmg3Ei9jZWxlc3RpYTE4Z3NsdjUzcjloeXZ3d2E2eXR4ejVyaDZnMHlwcjh6NWp6c3VsdBoRCgR1dGlhEgkyOTQ2MjAwMDASCTEzNzg3NTM0NBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDPTTt3CQ2tRZ6Fj+c0nuSmbEOmpasXKek/ma6iSwlkYwSBAoCCH8SEwoNCgR1dGlhEgUyNTcxNhDA7AcaQEOBnFnPWypmSiCBLrSxFxM9igf98TafJXNGa3mvaFsETC5u2+FJoQuCTXkMHgjaik3V7rErHvSBuPSe5qqtPrw=", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTcwMDAwMDAiL2NlbGVzdGlhMW55ZjNqOHJmcXlhMzlycmw1eTVuMzB3aG1kc2Y1dmVzeG55ZmtnKitvc21vMW55ZjNqOHJmcXlhMzlycmw1eTVuMzB3aG1kc2Y1dmVzbHp4ZjZoMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJwqEgBCrJUasSL67tEifgA3xuoekHz/3bjSyYtYOGOZhIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzkQw74HGkAISPis0koFhHLnNe+5mdimIDcGxeqftOtdMYkMUf5cXi/ApK7P/Z1jiMp7quMzxrnkoV8l7g6CbmY58EPgu/9t", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNTcwMDAwMDAiL2NlbGVzdGlhMWVzNG1mN3ZxbjVndWM2emdneGEzZ21qNzk3Nm40ZmR3NXloY3J2Kitvc21vMWVzNG1mN3ZxbjVndWM2emdneGEzZ21qNzk3Nm40ZmR3ZDQ0YzBuMgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNKccDMy/jQlAV48LhnS+otfGXoms5C5Hv75yqIZPih8BIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzkQw74HGkB2g2PK94S3LWVDBVpBjRPUtXJgJYuSg0zDg0h9r9bmZXSCnzCvWL9Ww9Ey8Nb11eqIGxtrEmZFRjpQrBVqZLs7", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXlmeHB1NjllZTRscnJwbDh1eWh6ZnB2bHRma3MycGtqY3Q3bWZmEi9jZWxlc3RpYTFhOW1xOXFjaDYzbGw1dTVsa3AzY2d2NzM0eXdscHg5MGhhOWdhehoRCgR1dGlhEgkxMDAwMDAwMDASCjExNTA1MzcxNjQSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA3Bp2EmKMF99oO0eiYgcIcyDNk7j79shtJp8Kfpy/ROAEgQKAgh/GAISEwoNCgR1dGlhEgUxOTIxNxDS7gUaQBxL1ZEKzpqbip850gJy9lZX1+o2v0KAi3q2ugedGiHvfFBX1qiIFpGmgHrTc1fbBkNDTLVmqQ/rnc5GgF489Mc=", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNjIwMDAwMDAiL2NlbGVzdGlhMXN4NXY4eGw5NjBnZ25zdDk0Zjhza2U5bXA4OXh5aDJtazdoNXYyKitvc21vMXN4NXY4eGw5NjBnZ25zdDk0Zjhza2U5bXA4OXh5aDJtMDA0NXE0MgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJxDdOrlxD9x+obrJzrrnBbJxHrBdI7O+2eB+Cihj3m8xIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1NDgQ8L4HGkCaZfroaBAhcpMwFGbEq8+ZDbuspEaCAYc1QN0byIMCmyKJlYFgcDToCCNS6oo0yXMAecCpdm0hxeKTPd8hPiVN", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTI4NjgzNzgiL2NlbGVzdGlhMW12aGU4ZTd3czZjazgzZmo0MGVuazh6emEydHVkbDh4d2ZmODAyKitvc21vMW12aGU4ZTd3czZjazgzZmo0MGVuazh6emEydHVkbDh4aGN0OHI0MgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKTSetQ8gLwQD8vvCTuyLj1kYxTBvE0zdwC5vkqUvsylRIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzAQlr4HGkAUSROgSXwDRC95XM35J514Mw14CNwk1tfcxAxPCiBR0DBG203gAV/xA3/Iq3r2C/MeH1ldr1FfNWf27nOjeCYV", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTAwMDAwMDAiL2NlbGVzdGlhMW5ka2d3ajg2cHk2eWx2ZmY0cHZ0ajZ0bXNyYWZ6emd6a2s3ajB0Kitvc21vMW5ka2d3ajg2cHk2eWx2ZmY0cHZ0ajZ0bXNyYWZ6emd6MDh1anI1MgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKi8hO02RyOsfglZnjSpNqgMGYC7U6frPMP3Yjrp4VsHBIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1NDgQ8L4HGkAbn6pns7dhEGpFKGNyWtfN5Zh0W+PdQ69K2qBHlSyA9yG+Klxim42uEJQ5+BFPspP3Cs+P2/oWhWXtFLQzp+mK", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxMDAwMDAwMDAiL2NlbGVzdGlhMTV6NWxydmF1MHZrbmplNGh4N3V4bTR3NWE2NnN6ZWc3amsyZDN4Kitvc21vMTV6NWxydmF1MHZrbmplNGh4N3V4bTR3NWE2NnN6ZWc3dDhnZGFlMgcIARCwjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPAcSC0OZMKy4/rSAaCrzYb31ohJS3icIEv6OTgC9juSRIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzkQw74HGkBOMn3GTq9EnUIe50soOwj8utWifjAzrC7EfnfKZkvKLFOHEC03AvRtpa8IjdZURBzUukV+LxRltg6HPxhFdAcY", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNjAwMDYyNDciL2NlbGVzdGlhMXQwMGRuNTlzZ3o4dXY1dnp4Z3FydmVtNWo2NnRxZWhodWEwZXhuKitvc21vMXQwMGRuNTlzZ3o4dXY1dnp4Z3FydmVtNWo2NnRxZWhoOXZkZTJ2MgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJeGfoPwu7CVnqapvAuyYI11cLgT9e1XDyddZBJ9I2wKxIECgIIfxgBEhMKDQoEdXRpYRIFMjM5NTEQx6cHGkCh7Xtt15j//1GJKF18qPwFUePTBdjutRxbHFmVa4aFAx7lsi7/2FS18BubBUscwJdS07kxlSISHPXqprg1pmPx", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWtoNHFqam45bXJkdHI0eXUwN2swcHhzeXMwdmRrZzkydXE4cnF3Ei9jZWxlc3RpYTFtN3g1bjM3dmR2bXJwMHdwZ2N1dTM1NTB2Z3J2MHM3and2c3E3ZBoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQO5+qq+y+4LZC/rp5AoyF31WD7u3rgcMQUjp9Pc51Xa2xIECgIIfxITCg0KBHV0aWESBTI1NzEwEKLsBxpA4JpXRvra4wGOJyotHm3gIiXkCQRhkay7mmaS0qivn/U1xaROShMyjAEM4WW4bk0aXX5x6eE7cpEj7zIWTiM1Rw==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpudXFrY3I1c21xbXYzdGR0NTcweXFjeTVxc3g4dzg1NmwyeTBqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTM5Mzk0NjcSCTEwMjQwMjkwOBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECaT9+dLKlCl3b1fpuRoX0yQoolf6vuXwcvhR7e1u5M9MSBAoCCH8YARITCg0KBHV0aWESBTE4NzA5EObaBRpA/Hl/5grnnIuE5Krygnr7pb+8xEadbnupQE7aaJI9n+0fHoX/4p3EfXVzQSAf+SMUN5EyTHr92dBSovSlLUuStw==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTQ5NTAwMDAiL2NlbGVzdGlhMXhmODc5c3RwamF1ZDNjY2o1eG1sYWNzY2hyYWEzZGs1eTllZ3J5Kitvc21vMXhmODc5c3RwamF1ZDNjY2o1eG1sYWNzY2hyYWEzZGs1YTVtZzBtMgcIARCzjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMeEXrgI4ucc8Ub1J68spiG7gO1NZucMy+EWUVjqOMtsRIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MjEQ6b0HGkDZYWBflYTANgWJeGJ+KcFKX5gA+AEbebalPnz3Z5k9/B2Kt6oXhCDT38ciMBZLtZWz0dl2Oo2VFvSfxUBiVYju", - "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", - "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcxMDAwMDAwIi9jZWxlc3RpYTFlYTVzd3N5aGFlNDdnOHFqZW5heDhhc3huMnJqcGVqZHQ3Mnc3ZSorb3NtbzFlYTVzd3N5aGFlNDdnOHFqZW5heDhhc3huMnJqcGVqZGowZ3dqeDIHCAEQsozlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC02W4To/oWG2CL4mXhtX0ZW+k2ygkiEHcdufBwclNTE0SBAoCCH8SEwoNCgR1dGlhEgUyNzYxNxDhtggaQO/oT5Xp+zUAyPT/QM34XtfgDI/gW2UeGHlwYnFER3T/JZt1N2Qg1GDqNOS128Mm8Pa06V8GLM6NvShcslq67lI=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpxZTdmZjVqdHl3ZWg0bnpnZzJodDUzNmw5M2R1NjllNGR0a3JyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjYwMjYSCTEwMjIyMzE5OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDnZNboxOszp9a8JJYLFrJzmjZuneWLTVL2A6RDNuH4AsSBAoCCH8SEwoNCgR1dGlhEgUyMzcxORDAngcaQHDi0vkW/wdIBQ5YaKUDVe3URXhbIjW922TSw/fzi9BqC0df45lBbv3ic9Qnc2UnDcItCQQL/95lxdw+29SxDiI=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW53bHhydmptdzhldDVjbTJodXU0dTlnbmxnd2hsYzcwOXNrZnB2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTEzMDAwMDASCTEwMDk1MjA3NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECV1O/dptnt/GWmdDAmgC8qjFq8v5pg0meJK6B2wfdiPESBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQP9vVDZ3wl+m4Hn40r0Qdqp+mEnvhj2DMaJDllLFGF4HSH6VOnIHMSl/DXRut+k6DVLDIr6CPPYyqJNHiq8W1LQ=", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXFkbXJlMzNteWY1ZnR1M2VjZDk0cTQ4a3hrYWZhcThhOTB2dzl0Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyOTQ5MzM0ODASCjE4ODQ1MjIzNTASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAwTsFNdQJ6gEQnui08egkgtzC+2QTCZBpo+joUVMkrJbEgQKAgh/EhMKDQoEdXRpYRIFMjEzMTQQx8AGGkCHimxlv+h96vTqpeigCL8G8M/rQywQa6Nk1LdHznRtsxrPZyxw6LXdC3z3gWSY19LZB8t4opdaIQfRrxyhgyD2", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWhhandhOWVsZjc0amdldmhlajd1MDU3dHQ5eDhycjIwMDJjbXI4Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxNjg2ODYSCjE5MzA4NDM5OTUSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAzK8aFwfE0vfy78SOqd9e2xtLrY0kN8HZflgFc/UmjTZEgQKAgh/EhMKDQoEdXRpYRIFMjEzMTQQx8AGGkCMTn/FKlN/IEb9FUaXICHjdZk9wJ0QhvCVp/H0/NVruzKkpodPWqWM/Kvzzt+qVYSe8a+NrVdCjuyi3X3F/pSf", - "Cp4BCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXc3Mmdhc2tzcXpxNTcwZ3Bscmx4NXpkYWs5eTN1Mnc2NmdwenNrEi9jZWxlc3RpYTF3NzJnYXNrc3F6cTU3MGdwbHJseDV6ZGFrOXkzdTJ3NjZncHpzaxoRCgR1dGlhEgkxNjMxNjc5ODkSBGJpYW4SZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA6yyOgYWfYwzHpAebkWGOt4i0Q7Myhd51sSJnwFDr+GJEgQKAgh/EhMKDQoEdXRpYRIFMjIwMTEQ5NsGGkDXFn5bXdUwV8CiaHyoAaCzjeqQi6rEfabAuQEQ7eAfI3/mBMpaSbWXGgQJEArqpZaUymvVL6vDdUGhbg7i9hVj", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTAyODA1ejM0a2NwenZyZ3Fsa3B2d242dWMyYXl3ZTU1cWR0ZDdzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5MzM0ODASCTEwMDQ1ODI3MxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED5PIXpFlIE1bcxTSjyAXvlj88IG9r9r7ZO3dra9RIY7ISBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQDC+V+mUQswYyp+uEPkODVKGmWAlstUDWorEiKFUuS90YtMjc6ZMrlfh62DiH6ScULKfLHdKNgtdUTz/2gaDZUk=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXA1anY4bWxleWZoOWt5a25uenU1a3pocDdlMGpldHE5dGw4enY0Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2ODYSCTEwMDcwMjUxNRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECM3TcqDs+/VwmWzAhkjpftrDbfUe53mnRQLj0hcqorBcSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOtdPeLok5HyGSBlKu1OdXTNzBoBstu9JofnAoXXFsxBQERO+hJFx66i4/loQyezVZtBa3PZwZv9wvOgde9y/18=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWx0YzZhemxnZXl0cnNoaHY3emc5bDU3eHFkcDZ4bXc5amgyMDk4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjk1MTg2ODYSCTEwMjY4NjEzNRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDOxXwPepoOCW9+3Z3UcYBGeZhHrSkXciwSS93bDlfaFcSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQNuNrKnYclTv1XyYPrNmAn3lIHgsMW15AXCKKW0KwV4uaXLqQ85ZI2Vbq7g+maU9e3r9lbYJDW4AlxVVymZXUD4=", - "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", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWF0a3VqaHZ6NW5ldWUwdjJqdDhsa3NxNmZ4eDJ6amdwNDV3enZ6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg2ODYSCTEwMjc0NTc0OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDRBNU24FoonV03jiiXBO4BbyyvrSVKFMbGa2QIh8Sg6kSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOtxpQ/fEue7VTOw/tCTHYhID/hmvCcFqW/sEgdoxsSDYa6AjO7rmh0QFpD5rKmh/yNAstWyY3OhmZ91Z27O47s=", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXEyeHplZHZhdGxjbjBtd3VzYzNmZTBoaGVteDlwMDIyZ3g5bXQwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEgg2MzAwMDAwMBIJMTAyNzU3NDY2EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJQbSjwdbbqsiPQz9sbSjSTwqdTbi30zyVSWs3W7xn/qRIECgIIfxITCg0KBHV0aWESBTIzNzM0EIufBxpATdy7yzNEPFK+0KXalmN+6vLV3D8c8NjTzesNvjZKQr9YK2nekj2l0oKr16FhjylEqkIoeJIpMqRrybe9m7v3QA==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTc5ODAwMDAiL2NlbGVzdGlhMTA0bGEyeWw3d3BseWcwOGt3dmg2dnhycmt5MDdqdTdteXRkOHlkKitvc21vMTA0bGEyeWw3d3BseWcwOGt3dmg2dnhycmt5MDdqdTdtYTYwOGdqMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLvffO+7ykRMfrF2ic2IaydZJmXBOIwo02ImsvcQmlJcBIECgIIfxITCg0KBHV0aWESBTI2OTkwEKKeCBpAyv9C8yo3oMrf9QNzLsB3mVlO1CvB3ch0mult9rxwKMVXInkFe7CNrTE4SvhvsBG87KpOmu5ZdsuAJbemQhPijg==", - "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", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXI4eHRjajNtOXZtYTBudG42M3poMDlhYWEzcXAzZGFhd2pyOW5oEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTcwMDAwMDASCTEwMjc1NzI5NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDgBN5yVJ7XyxaaZeG8b9WRAPSWy9yGfOcFIk+19GvwmkSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOiqKNB4cFwW5IMKqKdaQAs6rxaHeRkv4rTzdYLguCGRaDF90Ij5/pcez/ZDPz+ffRl4yWgkDep5xorVY0DjOAY=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXlwNjg0cWR4d21rdmRhbnNjZTUyeW5hdGE1ZGQ4bmphZXlhcnhxEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2ODYSCTEwMjIxMzY0OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECWethsP+7RiK9VxA3/83A+zHX73r2wDHLDg8YkpHucYASBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQPwNnAjicGfVfWzoWX9TDIacPiEKwAKsIHqQl1agGoSaO1UsgL107gmHPcFZ7qmiQZ9r/6Kxog4TLS9wccgKp1o=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTIwYWg2ZDZtdDV3YzMwa21leThtbTJxOThqMDJtbm5zbmNxM3p4Ei9jZWxlc3RpYTFmaGxyaDJla3lzY2F6c2Vua2ZqMGZoOG1odmF1a3hnYzA5eDBzNBoRCgR1dGlhEgkyOTQ0NTg3NTASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA27rcCYxqOhZbK//iYdQLgF4ws0zylYIA4f9X3l1ncfbEgQKAgh/EhMKDQoEdXRpYRIFMjEyNTAQh74GGkCs8P78MdF1ILt5CnGF279+NrIIt4yuxoyouCZ/5A6jR3s+LvSemdpSZi94o1iPTgkQFS/9zD07kg4dz11DwMj6", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWU4ZWs1a3R2cjRrZWxrbDVoeTNuYW5hMjJucWd0NjltamVxMjNkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMwMDAwMDASCTEwMDI2MTEwMhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC1OEodmwoKX/r1sJz40ZQmhwKWLrGGPgUgIZTTvdEZ1oSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQMGvBUsY9Cl2HacXpFASpuzebY6CTG+nU43sjE9Ga85BHzxwmgtyPLO51T2LuIwvMtoJTvzGReAahizhCHQRTPQ=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTV3dTUzMzN0Zmh5cHowd3NwZjk0MnI3eDZ2dDNmNDJ5ZWtmNjA0Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQwMDAwMDASCTEwMjMwMzEyMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDCKn5b8oRuZ7+AmJoAjNWjjssvn8R4q/RlkSvsk1RwEASBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQE3JipB7lpMJ+zlfVpxw6qP/8qqzhUJ7YD4/vG4JGciOH3xd4aYOTzLiflTtpIKoLje/RltOk6lbm/gjOJ8/f2o=", - "CtoHCtcHCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKpBwoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyMTkzNjYyNDEiL2NlbGVzdGlhMXVrNnVtYXdsMnZzNzJ2MGFnc3kwdjg4d2Z2Z2FnMnd5N21zaGRlKj9vc21vMWRtczdoNWcwemxxZDgyNGFuNHU0MGR4bjBqanJ3czJuMDB4aGFzcjdrY2NndG10eGVwYXFkOHR6dTIyBwgBELOM5QVCgwZ7Indhc20iOnsiY29udHJhY3QiOiJvc21vMWRtczdoNWcwemxxZDgyNGFuNHU0MGR4bjBqanJ3czJuMDB4aGFzcjdrY2NndG10eGVwYXFkOHR6dTIiLCJtc2ciOnsic3dhcF9hbmRfYWN0aW9uIjp7InVzZXJfc3dhcCI6eyJzd2FwX2V4YWN0X2NvaW5faW4iOnsic3dhcF92ZW51ZV9uYW1lIjoib3Ntb3Npcy1wb29sbWFuYWdlciIsIm9wZXJhdGlvbnMiOlt7InBvb2wiOiIxMjQ3IiwiZGVub21faW4iOiJpYmMvRDc5RTdEODNBQjM5OUJGRkY5MzQzM0U1NEZBQTQ4MEMxOTEyNDhGQzU1NjkyNEEyQTgzNTFBRTI2MzhCMzg3NyIsImRlbm9tX291dCI6ImliYy80OThBMDc1MUM3OThBMEQ5QTM4OUFBMzY5MTEyM0RBREE1N0RBQTRGRTE2NUQ1Qzc1ODk0NTA1Qjg3NkJBNkU0In1dfX0sIm1pbl9jb2luIjp7ImRlbm9tIjoiaWJjLzQ5OEEwNzUxQzc5OEEwRDlBMzg5QUEzNjkxMTIzREFEQTU3REFBNEZFMTY1RDVDNzU4OTQ1MDVCODc2QkE2RTQiLCJhbW91bnQiOiI0NjExOTc1OTUifSwidGltZW91dF90aW1lc3RhbXAiOjE2OTg3NjYxNTkwMTQ4NTg1MjAsInBvc3Rfc3dhcF9hY3Rpb24iOnsiaWJjX3RyYW5zZmVyIjp7ImliY19pbmZvIjp7InNvdXJjZV9jaGFubmVsIjoiY2hhbm5lbC03NTAiLCJyZWNlaXZlciI6Im5vYmxlMXVrNnVtYXdsMnZzNzJ2MGFnc3kwdjg4d2Z2Z2FnMnd5OGo1MDA2IiwibWVtbyI6IiIsInJlY292ZXJfYWRkcmVzcyI6Im9zbW8xdWs2dW1hd2wydnM3MnYwYWdzeTB2ODh3ZnZnYWcyd3k4MmpocHgifX19LCJhZmZpbGlhdGVzIjpbXX19fX0SZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohApmv0Kl7MwHlRRixpfQzUJ1TY5WtafSBo2K5lE8ExF8DEgQKAgh/GAUSEwoNCgR1dGlhEgUyNzA3NBDGoQgaQNDQ8DHM3RosZA5OT1BPDX5cobHDEMnsWkZvNOR0UkZ1Rnb9qDI9bqOyYqx1R242GTDa5z6Ft5HlUba8PpdnVdM=", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWZwcDI0amh6dHNkZ2h2czVtcDB1bm1scDN4ZnoyY3J6dHdrOTRsEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxNjg2ODYSCjE5MTE2OTA5NTESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkLkqzBRz45T5DxZGcM7GXm9lthUzBH2UiMucUHzQi++EgQKAgh/EhMKDQoEdXRpYRIFMjEzMTQQx8AGGkCFh80D6xk/XwxwLjkvJ1Aiv8BoFGG0gxG4nI49kstYS0WgknIpn1pErdOC9z/CTOwRD+610CrTXm1cVlB1yaNy", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWoydTI3YXR3dzdjYW1rejNwMjRtc3BkdXF1YTc1ZHVmOWQycWN6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg2ODYSCTEwMDE5OTA2MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECfkcp/N+fMYLWcJY68QHZV3hH4dNBVjWcx2t/ROfrXwgSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQGpzEssxLeX5Nxm5fNV884uan4nycaLc9h8xopcnoS/1LEPlCyaY2yb9D6Pxr6BzP9KjyAaBTgwppXAdgqmaTH4=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXl3aDZoeHh3ZHJyNHJ1cDI1d3o1NHh0YTlwajJjajY5eXE1ZWZqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjI1NDAwMDASCTEwMjU3OTAyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDuLXOcvHsx2hulhVnGWpaHTJKopaqbdMhr+2nktC3/SoSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOZTqJW1Yz59c6l89AbIqKyjHQzmDwH9rAmGbdIWn5UkQ5Rv1NPjce7e1Ii+wMJLCvqCmxOc/QEaRH5fGFsMSAg=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWR1NW5ycmZtajU2OWg5N3g1eTR2ZmdoaHMwejlqY3o5ejh6a21wEi9jZWxlc3RpYTFla242eTlwdHBja2V0bDN0eHZwZncwMmxwdXowczh0OHkzcmt6NhoRCgR1dGlhEgkyMjcwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA9Ni69BtmeEmcUOMgfe2mp/f61qYndxaLqOKhLmahkfSEgQKAgh/GAESEwoNCgR1dGlhEgUxODY3MxCz2QUaQJdEHp1/JHYvLUav7WrHK5qhaaghW+azuJqREKLPNdGbVzD1XJjQn6WIdyXmcV0Yry35eFFVAZgnxxLpM1qdkKQ=", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTVja3Ntejk0bXNjZDlqY3VjbGNlYXpsbXpmajZkbGM5MjR0bjd2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggzMDAwMDAwMBIJMTAwOTIyODU4EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQOqHBqhu20Ex+v5XjkpbnCqAOA3v6qyRjIu+XcYMs8UnxIECgIIfxgCEhMKDQoEdXRpYRIFMTkyMjgQiu8FGkCs+GjMWC/nqXMRN8RgW0lSl6PIg9ePOTZIExJSShkganmkxG1esBzPAPjQJa5sXy7pEmm0QQtKg/X78BloOOAc", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTYwMDAwMDAiL2NlbGVzdGlhMXk3azIzNG5jNHVqcW0yZHB1NnBydDduNDZta3R2dTcwZGFqcm5wKitvc21vMXk3azIzNG5jNHVqcW0yZHB1NnBydDduNDZta3R2dTcwNXZzcmw3MgcIARCwjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMwoYVgcpLxQ7zG3VLP0xXW00jO2LlHGiezyDNgIdVVJxIECgIIfxITCg0KBHV0aWESBTI3MDg5EJKiCBpAl2Vv52IH/4VDG9T6QJvuu6Kk16MOKEF2sQcB27HIF8Fd0tNxKYBbwrvJHfLjBqrh2NIwHFBYUZ84z9dusgKd4A==", - "Cr8BCrwBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKOAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoQCgR1dGlhEgg3MDAwMDAwMCIvY2VsZXN0aWExeDZtNTg4eWxneDRuZWR5dzV4N3YwNnYzaGFmcWVyMmU3YTdkYzYqK29zbW8xeDZtNTg4eWxneDRuZWR5dzV4N3YwNnYzaGFmcWVyMmU4dnVkNTkyBwgBELGM5QUSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA5sRh8q07eYDUQIAZPWcW1o3JZYW6BfADy6NkaeKSiuJEgQKAgh/GAISEwoNCgR1dGlhEgUyNDU0NBDdvgcaQFupARhlk1ExnhrY/dBXZYquzCpFc0JW2DKuJxk70Z8hOMbaZcyi1YAgjqruYI7megmtjZWpCuKWZRaLCoYlnzc=", - "CqEBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWtrczRxdTVra2oydjdlcTk2djlqeTM5NjJ2Nmo2ODN2aGFjamo2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoPCgR1dGlhEgcxMDAwMDAwEgkxMDI3Njk1MTQSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA7XITRPFHNOcr8PG18xg4oUGclkumVSQPYXpmUs7+WtXEgQKAgh/GAESEwoNCgR1dGlhEgUxOTI0NRDf7wUaQCPMYg24wb61VL/wvs3Q9B5yN03Mza0PQ8z37+nrYoVlWB9jQcFV7sbMwsNNbt9UVhCGEp0sLgQyDokgCuh6D7A=", - "CqABCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMTkwZTYzN2g2MnNmcWh6bXVtNXNrdGF2bHdnbnIzcWM3NzBnc2xyEi9jZWxlc3RpYTE5MGU2MzdoNjJzZnFoem11bTVza3Rhdmx3Z25yM3FjNzcwZ3NschoOCgR1dGlhEgY5ODg4MDgSCTEwMDQ2NDYwNRJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC7RsCmy9G6n4/bjP7j4Mdb/WdvIFeJmx2yEAtA01QSC8SBAoCCH8YARITCg0KBHV0aWESBTE5MzU2EIr0BRpA3qErPdZrLVZtzZMOzhUxlb72WUB5giqqQYUv91Di+p06rtNqNEBVae/trgD1DlebtI7aJosz5zTTjh4s8KyIuQ==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXZqajRxeHZ6azZuaDdkMHlmeXU2bmUzMDgwenhhdW5zN24wcW04Ei9jZWxlc3RpYTFhbjQ0bDd1YTM1ZGRjNjNmOGR6eDl1YXNtMzNmdDR3NDYyZzk5axoRCgR1dGlhEgkxNjIxNDU2MTcSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA2etNYJy1tb1pIVgQV7kyM1gv9cUzqGqIiN4P318Z0W6EgQKAgh/GAESEwoNCgR1dGlhEgUxODY3MxCz2QUaQIdExZthQ9TTGA5ZJO9YueKi0IV/L7i2Vmq4PM+fWLI2bfD+k8VDvT2sBUMF5KMPJmY2aj950ZM5U/DVzWrqrwg=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXhlM3l5Yzl6ZHA2eW51NGg1MG5zOXN5eWpqODdncHc5YTNqZWpkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjc0NzU4MTgSCTEwMjcyMzE1ORJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDfUJaiKe5o6p0IT1Ss9FPzHPOnulrZBDzVc9P72dkaYgSBAoCCH8YAhITCg0KBHV0aWESBTE5MjQ1EN/vBRpAnAXKqFP/m4Z+NSs3AiGvn6q1DbG7jjaZte3VFHWdJjEZ7JEOlvboR5lix91yL6vRyP1nDRqPJcXQqmjkKftoiA==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTM4cjZoazh2MzkydzBtN21jcWhwbGsyeWxsajBtcG1nN2N4ZjdtEi9jZWxlc3RpYTFjZ3MyeDl2M3F0NjM2OXA3c3ZrN25xbGhtdjQ1dmx1c3Rma2dqNRoRCgR1dGlhEgkxNjMxNjQ4MTUSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8OJzPhi/RjBrPz4dy3+jAT5y08KQnWYQYR8NEIIsJF5EgQKAgh/EhMKDQoEdXRpYRIFMjUxODUQ4tcHGkBlJ8feyUHhq4XoL9HBj5diJdnpKWwvDgB0Z7srpwUX0lqLVICNrqDVXR5+Le/JTE5dIC3fUR7njokvEUkMykmJ", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXc0cWE2bXVneGtjemF6Z2RoeDZsZTQycDI3dzIwYzR0eHc2amE4Ei9jZWxlc3RpYTE5c2F2eWdrMnRzc2N3OWF5eno3ZnNwa3dxcmV3bDZmdXhkZnltYxoRCgR1dGlhEgkxNzAwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAxGWeBw8uu06tkcmZZQ9E7UFE0LBEn+FExU3B9J61xK+EgQKAgh/GAESEwoNCgR1dGlhEgUxODY4MxDl2QUaQBIsX5ptYRz0DbaoMi8sQ/EIBsGkKmsetVu/OOs1ICh5YMMb64kirBGNjUs7OO5n/JeqWk9bCTeF/Jong+NVKD4=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTl5YTQ3MGNsdXc0emF0MjRyMHU3ODB1NHdyZXJxbjk1aHBjeWp2Ei9jZWxlc3RpYTFmMjRkNDl3djJmZHJqOHg2eW1nOGgwNDBycm1uNTBnemF3ajJqeRoRCgR1dGlhEgkyMjQ0OTU2MTcSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAzKpdSYGlWOodFKqMAlh3WmRLPF9b3suQIqheh/jjqJpEgQKAgh/GAESEwoNCgR1dGlhEgUxODY3MxCz2QUaQBKrSwFmwJGClYxvzg46232CKTbdawZoyusg2JqnHKoWTlXj3FcYucY0asYR1Y6sdQKKwnp6iu9xYqDS9VfGTSs=", - "CqMBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMWxuMGo2NWZkajJoNGpnZXg3NjdldG5oOXFqajM2NTRzbGtsbWU2Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choQCgR1dGlhEggxNjkwMDAwMBIKMTg4ODkwNTQyOBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC0vqO2ebfWn1V4US1utc9uojhOXvupVDxWKbbmORpZqUSBAoCCH8YAhITCg0KBHV0aWESBTE5MjI4EIrvBRpA5OBzy4fY46VbxdvyC18l+m2c+kstOz6mpYPudyqbP8JNQx3hjc1hm48zkc9MdTOGB0zWuqArFW8louBZj5PegQ==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWp1Nmo3eTNkZzdzOXpobDQzZmN0NXNlM3Z5NmZzZzBucHp3dnU3Ei9jZWxlc3RpYTF6NDJ1dXhnY3E0dHZqbThnOWo3amZwY2gzdnFkOXl4M2pjam1nZBoRCgR1dGlhEgkxNjMxNjg3MTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohArUaq8JJ5EHHOBWuNZ4cqhu+fK5IgiLPGyRy6lpAU1FzEgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkCw3hb6Wbiwutu2sIwsY76Bs1aJ2Sc6otY9M99OUyhZxTHunNHzW24hYiVevm7qx0Jyby7jx4uLZdlVWYgTx9LP", - "CqYBCqMBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ8Ci9jZWxlc3RpYTFnejZ5OGtnMjJjcmNnN2QzdmEzcTkzNmxsbXVmanZocDJnN2RlcRI2Y2VsZXN0aWF2YWxvcGVyMXBuenJrN3l6eDBucjl4cmNqeXN3ajdyYW00cXhscmZ6Mjh4dm42GhEKBHV0aWESCTI1MDAwMDAwMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECepnHaEXzUsvcBHuIZ17xWOlJaDkDqrQjbC5xgMzXS9gSBAoCCH8SEwoNCgR1dGlhEgU0NDE3MhC4vQ0aQJO9duovFZG5zJyvNgV2OuREYm2QFk5fsHset7hGk4k+CcyY9tO2ZfBWNJsoLjAsbsOV/T1HobSBrqCAl57r8KU=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXlxN3NtbXYzazJzcnk3cHdqeHg2YXB2bjZsbnRjbTV6ejV3ajR2Ei9jZWxlc3RpYTE1cmxmeW0wcHZ6bTl4ZndoZHk2MncwOXd1c3hhbHI4bHBydnJlNBoRCgR1dGlhEgkxNjMxNjQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAjDjAWGwdMfhbYI/ClKiZPum/OQ5YrNs9EWQI0YMWiMkEgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkDR8c9csg2NSmmqd+sQDiqEKWMMzD0SeGOSECxSMpYCqSmbVCd6q/olciPYifFbbpE7x+s30eb5zg7Qd3gnI+5O", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWw4bWgwbjl1NzhlejZteHZnZ2NuZjRoMHI5OHRmbm55dHZjY3pyEi9jZWxlc3RpYTE3NzI1MmxzeTVlMHFqY3FoeHR3cWs2N3ltenh6aDl4NGpmcHQycBoRCgR1dGlhEgkxNjMxNjg3MTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAklnOhwPd6eQ58bGSy5ylcoKGef0IifHM+jDaFzZqLTLEgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkDdFA+DQtm8k8FxAJSIj9ys6M5iVlLKc40c2YfPLI3jeyPiTMFeOR6+qL3sVmh/F+9cPRNHOmP6MNYpxO7ER2jA", - "CqQBCpYBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnYKL2NlbGVzdGlhMTBmOGc5YWh6M25udDJoOGNleXJ3MzBzdXpwYzJzYzB4dTlmeXk2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoSCgR1dGlhEgoxMDAwMDAwMDAwEgkxMDE4NDk2OTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAgQKk8wLzFfWWfPTt0UOeoe/Q9scTEftEmhQXcbwVIvBEgQKAgh/EhMKDQoEdXRpYRIFMjE4MjkQ19QGGkBOxpNh5tE9YSby0xPcm89czypsKYN2V76otnyu+M8fK0nndfCUH6Mg20n3enntP1zlAAqy0rqJEnVdeaeZ/yGb", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTBhbjlseG56N3N0NTJzMGd1cXY4bW45MnV1ejV4cDd2dTI4eTZ3Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg3MTYSCTEwMTI2NzA4NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECklIOu8PA2xkF0cse5bMT9PLXwH7S1HCBqMs7O1QXO/8SBAoCCH8SEwoNCgR1dGlhEgUyMTI4NBCyvwYaQEl8gptCPoT34tj0IQPyfR3RSd9FQd59zMEFaeEqdqIdM4F4N0Ob5LmH4udDrDOIKUn6GishQmFXgvswoioKV8M=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWtjd2RrNnZ6bmQ1dWV5ZXlydmZhdjdkYWw2dTZwNWs4dzI5NnMwEi9jZWxlc3RpYTEwM2h4Z3hkeXJ3MjhqZTVranY3dzU5ZmZ5d2ZyMHBqd2tjc3d1dBoRCgR1dGlhEgkxNjMwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAo3UR0FsJw4JbuM6x4rqb5cO2YHKqlkPHwocJwktvGBiEgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkD2CDW3zHGb+OOp7oHyLWPhFelTmIO3M1ihvh6oQwgnxHMugN4cremLSMV5MPUi6QUPIZgEWnQ0eVZ5imdd6rkw", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWR2bHh4YzZwOGNyZHZ1ZjBqNWVrenUyOWxoY3NseGRldGphODBjEi9jZWxlc3RpYTFoZmxwN2dlcGx1dmh2ZmxtZnE5YXEyeDJ5eGVha2ZqbjN4dGxqahoRCgR1dGlhEgkyMjk1MTQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAgu3rurfpjygfOGVzJs2oh+DsQ/xgOBkBsMzDuChz8G8EgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkAxNp1KHLFP0lR8lTN9khnE8Kdo5O3w9woRCN8er0oYviE5I0gmyacggI842O/5xAXtekqX3MIhVHkIbxq/gac3", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTVucHE3eWpwdnpsMDhnZjM4eHI2NjBqNGtqcHdlbDRoeDc3cGFmEi9jZWxlc3RpYTE5a2xlZW1sdDNlMmVrMzBxazJuN2pobmNnanNyemx4cnhhenZ3NBoRCgR1dGlhEgkxNjMxNjQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8y09YN63b6vmnVRLk94cEUzSgSkOlemHi0q4J2kj0n/EgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkDXCQIvTk7cazgcWujssARqJU/v+fCNuDOvDb3Yl574RUT/TH2UrcRgEGlQn4BET6FAcCtCsfUS39dNyd6ZafaQ", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXducW10NjJ2aHl4NnhmZHpmNzRqMHNwN3poNG02bG03eGZnZGtwEi9jZWxlc3RpYTF4dGVxcmp2bWc4eWs3NTVhbnZscmNlczlhNmNtMHVqZHc3MGNqdhoRCgR1dGlhEgkyMjk1MTQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAsfXdr9Hs95xxFt9HkxpwoZV+4FR+5s0eqfJJGak+fDSEgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkAC+e6+aVDgfR7JCm5WfQi7xg0y3bXwnhDJpXj/0FXfhxQmwTsVqiii2R+xTy3BT/NLJnXD+4mcoDpcBopVqeQO", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXZoZGF1czg5bWhoZm5sbm00emMzcXJ0bHMwMmdubGM3bnQyOXFmEi9jZWxlc3RpYTFlc21qcnk5Z3ZwNDlweDZ4dWZjNXE0OWpoeWFwMnNwZjQ1cnZtaxoRCgR1dGlhEgkxNTAwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA5NNQfNwUu54vWMpff/wAT605QqoXkUaWq1WkcBiOsDaEgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkD1JDHY7Ay/Oor5YnBSJPg1CGJ+UQIoqotOQ33ZOPf+BzJrLfX7a1Y6ZUm3EA8oWJzuedmJbFmLQnnbxF032dSy", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXYwaGdsZmFzczRwbW5zdm5kMnVmNGRzNjRoancyN2xhNTN5OXJ1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkzNTY1NTg3MTISCTEwMTU2MjE0NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECZKHLjdLNgCqZz4RdqJSvS96A1kSlldNqmN7+HQbNBDkSBAoCCH8SEwoNCgR1dGlhEgUyMTI4OBDGvwYaQPKMkFCerm/ywVV8GK/gMX7EWcCK4sDOITqh0R5o/fmDKBoNLjVMmLJaK52eldnYo58ks5oZQ97cwEoH8jUDxcw=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWRoOG0zM25xNnphNXkwcmVkNHl5azZ1MzV5YWNtcHh5d2VqcG1qEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg3MTISCTEwMTU3MDc2NxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDof6vJ8dEasPcDmZOMbeA5IlzTzrsk+SoeHEa6sykcYcSBAoCCH8SEwoNCgR1dGlhEgUyMTI4OBDGvwYaQOjObjOks23sbZR6KFXY1+UheBqQftW49uOdn4SjyH2MT8aRc0rxF3mS07IQfBiyzRRetT4f4KFDXg6U3nVzLbY=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTBkancwd3pldmR6ZW4wZWM0d2xlZG1uNmQ2YXh0dmp2cHR2MGY1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg3MzMSCTEwMjA5MzY0NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED5Jv2D+lewpVuPAz6pjYMbCCiWhHQxay1W1cSjX2J6qISBAoCCH8SEwoNCgR1dGlhEgUyMTI2NxDdvgYaQNbAvChxKIORnsDJQ3v7URgByOYdqI+V4gBY4ECDql/zBYpYls/MFVvjVtEeafGU7TtF3sTlkJtRh3yqjdxNfwU=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJndDBmNjcwemhjY3c3ejV4ZHd3MzlucXpzaHRjN3RwcXFlZWV3Ei9jZWxlc3RpYTFhMjA1ZThyeHR6NzY5M2Q3dmdmM3ljbWVnZHZqcWF6NjgzZTk5MxoRCgR1dGlhEgkxNjMxNjg3MzMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAv4+zQE3HsjQ6Y//i9JHQ1sVv84yNeJ7N1zf5XdB1pN/EgQKAgh/EhMKDQoEdXRpYRIFMjEyNjcQ3b4GGkAAhdSLHnqw4Y0AXrfUOZTtzDd38ymu4YAjE1g7tlmqASgzHPt5tonKjqEgtXkDHnnd0LSCHHwiG9IvbkcIC8IP", - "Cr0BCroBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKMAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoOCgR1dGlhEgY0MDAwMDAiL2NlbGVzdGlhMWx3cTR0eXd5dW5tbHcwYzlxN2gydXJ2Mmp1N3M3YWo5aDg1Nmw4Kitvc21vMWx3cTR0eXd5dW5tbHcwYzlxN2gydXJ2Mmp1N3M3YWo5d2trNm5jMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLULF8kKYWPNnioUv41Q9a8hhVRp9cjeGSIV1Mgq5sb1RIECgIIfxgDEhMKDQoEdXRpYRIFMjQ1MTgQ3L0HGkBuJtY1sTqH3i4g7h6B/6daLj+QpKbzP5bBrLEwe7C9ukKvb6u/6TK9kDAtTNIsY+Lb0cn6w3gDn8EE5Tv4S11f", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXBhcjQ0MG5kd2d2ejJ5emp6dmUwZ200MmF4M3p2NmM3ZGowcXJzEi9jZWxlc3RpYTF6NDJ1dXhnY3E0dHZqbThnOWo3amZwY2gzdnFkOXl4M2pjam1nZBoRCgR1dGlhEgkxNjMxNjg3MTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA0GETcEkuXBfxYz1R9OiPIK7qFhc6j2y9h/v43ZcSlW4EgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkA86/EkKuTNHxwAmWZvdIb2Zn7Y63gy25VjS8baulC2BkucCZ5y0EuLgDGtjby90mdTrn3RcUOE7nW2VXTPp4Gm", - "CpkBCpYBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnYKL2NlbGVzdGlhMWV4cHpmOTlreDBtNzZud2NmbXRodzJkd3VzbWdsdHVkNmRhcWp6Ei9jZWxlc3RpYTF3c2hsMDNzMzZzbmVtOHRsbDU3MnpqbDdwbnZ4Z3kwc2ZhMnRndxoSCgR1dGlhEgozNjcxNTc4MTUzEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQI6lt067gJ1R7swx7NKIEIhIPySae3QZlztDsF4gYDTMhIECgIIfxITCg0KBHV0aWESBTIxMjg4EMa/BhpAl3TsdUmzuAaj2Ore9ePN/mLC9rUVfcfs/cUCPIaLGyVLuHBUYHrPovjh02aoBf64QBwATUGVnsVSJ7XkSuOGIA==", - "CqIBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTltODM2cDdtdjZueXljbWV0NDljYzYwYzBzYTZsZTlwYWQ0OXd4Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choPCgR1dGlhEgcxMTI3NDI0EgoxOTM0NzI1NjU1EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKjipHFduOgqMSQP8ni+gvy8I2Gb50U7qLIg8V/GJ59kRIECgIIfxgCEhMKDQoEdXRpYRIFMjI1NzAQ0PEGGkAYsqs6CJI17jbrhR82Qxq3WSh9MKEftLVZU9glUDqGchOeLIalIU2sKkDEva54QhmjEdQiGJfdWAdDDqLUe7a5", - "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTF1aGM4bW15ajdwZDA4c2MwanFtcDk3c3ZqMnlwcXVzODdoaDZhehI2Y2VsZXN0aWF2YWxvcGVyMTV1cnEyZHRwOXFjZTRmeWM4NW02dXB3bTl4dWwzMDQ5Z3dkejB4GhAKBHV0aWESCDE0OTM0NDQ4EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKR90jn9ve7b1q7vxIPqNFAru5au2PhkzwgmwMFoxUTchIECgIIfxITCg0KBHV0aWESBTQ1NTUyEKzzDRpAfbF/W8mKVZZkJEhNKrkU4Nk/xVYOdpxur9oP4AvOZTBkLSSOg2ucV28A9uQ6UPoO+vDuQGVfkiD1hZCJioe6tQ==", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTBsMHlqem5ncnlycXJ6bXY3c21ubjg0Y20zMndncmQzcDB3anQwEi9jZWxlc3RpYTFyZmRobjJ2cDl4dzY1bnZwNXE4MGo1dHRqZWZ6cHVzOGQ0dG5wehoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLqfLc0oXLkZTw9jPcPrvVE4tIqL4cE8FqyVrl+6k2aXhIECgIIfxITCg0KBHV0aWESBTI1Njk3EOPrBxpAjHkPlL05qNqnu4bdjOVNQL4S2O4JllBzbGiBsOURGLZlB0IlzBS+Om9b8R8oDPvNzsO7mr2lxDrcwz88Zwbr3Q==", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTVjbjI2Y2c3eXdmNTdqazk3eGs4aDA0YzUzYTJ1OTRmZng2ZDN4Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choPCgR1dGlhEgcxMDAwMDAwEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPbhqnMAzj7O7rBo/jQRCs67LERjunnkz22kx39QXviAxIECgIIfxgBEhMKDQoEdXRpYRIFMTkyNDUQ4O8FGkDOMe5MENRNcyESwMF2xMuwJ57lmL1UzPXy7evaGUMjRC3eFPReSqpblegUZIFjadvTwqqp+j3nMD2gfsLwCkg+", - "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgc1MDAwMDAwIi9jZWxlc3RpYTFqeWMyZ3g3Mmp0MGgwcHV3Y2s1bjlyM2FnNzRxM3Y2ZWRkdWc0bSorb3NtbzFqeWMyZ3g3Mmp0MGgwcHV3Y2s1bjlyM2FnNzRxM3Y2ZTV1N2dleTIHCAEQsYzlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC5Etb+vG+E2BqhW1dfrgwE5NtdNiZ5iydAEbJg04nf/USBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQDWnkR1ur0GbzU+/KzsQKRmg78aSVGYkw6SqrsZQKXZYGUaPfbkphbGsRQtIdBBvUjCtmxLbBMjQcShkQVLgSHU=", - "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcyMDAwMDAwIi9jZWxlc3RpYTEzdXpjcnpwbmszeWVwY3JybXhqazg3NDBrajV6NHAyemt5cDRhMyorb3NtbzEzdXpjcnpwbmszeWVwY3JybXhqazg3NDBrajV6NHAyejA0cjQzdzIHCAEQsYzlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECqRyd7vVpcuKO53RPljo0PWnGbL5bgc84GNl2Jem3sn4SBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQMK+KN35PU+jWh9yPvJ3gjllY8ooWL0s58fJU2A5Q2AAWE2+EZ/6exxdkskc3gokUQhGT5lzleY+3LsOxkD9Xx8=", - "CqABCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMWwwZDRmanQzaGhrdWNhbXdrZ2NsYTR4eGVqbG1hazgwM3AyajQyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoOCgR1dGlhEgY0NjAwMDASCTEwMjM1Mzk4NxJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECfnHPALloQNVWrPJttES70w1KM76D8bJeEc5+QSIPex0SBAoCCH8YAxITCg0KBHV0aWESBTE5MTgzEKrtBRpA6X965UuD1WUafxcnoDj8PmeKN81ar1HmsIzOP0iNPTwWBtzHRYctxp/JD6No746YZSHaz7GeNUjMsl6ja3FpDA==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTY0OTYwMDAiL2NlbGVzdGlhMW52bXhjeHczbHUyNHp5cXV3cnJ1ZzIwaDZzYWd3c2Q2cDh3dXNsKitvc21vMW52bXhjeHczbHUyNHp5cXV3cnJ1ZzIwaDZzYWd3c2Q2Y2t2dXVxMgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMsLPlFqbpSPiAm6sWWoJl05EXv21L1f03q/+RppRJD4RIECgIIfxITCg0KBHV0aWESBTI3NTkyEOa1CBpACQLxf/HgqkzpARc6tfFxGlefi9dd53ebJ3PTTkZ+c2onreZxIE1+cTqG6kmlu/o4e30LBH+Ey/yrYEub/GgLsw==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgk0ODYwMDAwMDAiL2NlbGVzdGlhMWhqaHR4ZWFlOGZuNnJ1cnpod216NXdjcXJxZmNocDdtcnM1NXpoKitvc21vMWhqaHR4ZWFlOGZuNnJ1cnpod216NXdjcXJxZmNocDdtNnBrNXdnMgcIARCwjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQOLuvJNGdyZyvWRdXTF9x8WqPnMx+cfgZGJq0AQ+H1hLRIECgIIfxITCg0KBHV0aWESBTI3NjAxEJO2CBpA9yQ5Tg177o+ApoSVT5oCO8XrcXITLW3BA96BmDauy1g1zIMuAoR4Z433VFvIWFqni6ShK7af+bVQ6OUz4tkEUQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTk0eXB0bW1tYXlyZmMya3hxeGV1NXBnZnl5bTUwbm53ajdwYXlsEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjIxMDAwMDASCTEwMjY2MjgzORJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECwi7N32325LePuyKZf2GZVBAUk71SXzmZbo333sg78tsSBAoCCH8YARITCg0KBHV0aWESBTE5MjQ1EODvBRpA0ZPVDDZ1r+bU/c2P+6227uaxBbVvi63aodIx6JvARJoDS5LVQtPga0x3XE/LH/M05TxO7lxBiwrW3zGgV7UD8A==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTMwMDAwMDAiL2NlbGVzdGlhMXMycnlwdHg4bGE2dGdyOWdxODA4dnpwcnVrNnJqemZ2OWU4NTU0Kitvc21vMXMycnlwdHg4bGE2dGdyOWdxODA4dnpwcnVrNnJqemZ2dWc5NWMyMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNv8+xdHT+nBednvIyRKPusBrgVHpzcu+Oz9rwbxHp6nBIECgIIfxITCg0KBHV0aWESBTI3NjEwEMC2CBpA/FyZWTBVuAaH0f9POPc5ZwWFaR0mWoaXM83HVsYvicpwsoD4u0v5h3pmU0W94LPzC0Az9sUj8PN9XgjrxgvLPA==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTc5ODAwMDAiL2NlbGVzdGlhMW1meTA5cGEydTIwbHd3MjZmMnd1OWxjc3hlZW45dnMwbWNlZHA4Kitvc21vMW1meTA5cGEydTIwbHd3MjZmMnd1OWxjc3hlZW45dnMwemZtZGRjMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKHKyLU9HlD9/212zQeg4YI2bwqndIGiN8bGGmrx2jiyRIECgIIfxITCg0KBHV0aWESBTI3MDEzEJefCBpA4LlL+/Nl0gdR2TXyiAyx2mEQceRVpzA/DzEKoPWP0TZtAgITwsGnamXmdWB80SN7dtpKYm+YajD7NdQyja1mjA==", - "Cr8BCrwBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKOAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoQCgR1dGlhEgg1NzAwMDAwMCIvY2VsZXN0aWExemM0eDQ2OWtweTVqbmo2djB5NjU0OWVmZXBxeWZuYXFkaDV4M3AqK29zbW8xemM0eDQ2OWtweTVqbmo2djB5NjU0OWVmZXBxeWZuYXE1eGt4YTcyBwgBELKM5QUSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAym4Jc1h2MV23NpSidwP1/hwdJiWd2qEZnHKyq38AzO+EgQKAgh/EhMKDQoEdXRpYRIFMjc2MjUQi7cIGkAMtV/G2/4yx6xVzAab7IDbjuzfOACi+mCL7BdzhX+TA2mL0oR1tHEfLUf0cQ1ok3dKrUQO6M20OESGqq1/y2wH", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTQ5ODAwMDAiL2NlbGVzdGlhMXAyODNrc3Yzcmw2a3Bkc3IwODBubTR4ZGRwamE5anFhdjdlYzJhKitvc21vMXAyODNrc3Yzcmw2a3Bkc3IwODBubTR4ZGRwamE5anFhNDBtY3h6MgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLOd068Uvbmb2nVk2HN0ayoeyDPxqEwiosUxzbuDBXJrhIECgIIfxITCg0KBHV0aWESBTI3MDEzEJefCBpAxxPGA7rRwk+OgDhP5bZg/9/K0V9QJo2T8XBXFqIpqEkaTOlhKkK/YIZtWUicS7kb6VR4PejmU8ug/Nw52zFLxQ==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgk0ODcwMDAwMDAiL2NlbGVzdGlhMXdtbGxqc2F6a2Vrenp6dHNtajdyN2VwM256emRwNnYwZjk5cjQyKitvc21vMXdtbGxqc2F6a2Vrenp6dHNtajdyN2VwM256emRwNnYwczU4cmU0MgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJyikxXPysCXujxI9vmL2mQMkkoRbYrNXCKPhWINeDfBBIECgIIfxITCg0KBHV0aWESBTI3NjAxEJO2CBpA+rLxb8pbN8ZIufMAffd0tfVkDV9IB/rdLt0e9x4P23Ux3elR/sZQDZqkEaYeYNCecaevj/igPdNbdt6pnW6p4g==", - "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcxMDAwMDAwIi9jZWxlc3RpYTF6MmdnN3ZteTd5Y3hmN2E4ZzBzN2hnemdsemx6bGRnY3ZrZjhsOCorb3NtbzF6MmdnN3ZteTd5Y3hmN2E4ZzBzN2hnemdsemx6bGRnYzQ4dDhuYzIHCAEQsozlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDSElGZBkru0CydktVWPHIAwXNNQrB2nSXF0gbstXQTRESBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQC4xaHSBw+kiG+sj6c7alP5DCVyJRqKRsPDt5XooyI+bbgK0MiXqtDbl4mixTJUPsqAjRTIP/NvbFVc9gvcOJUo=", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTYwMDAwMDAiL2NlbGVzdGlhMW5nN251MHlxZzR2bDc0N2toaGV6NGozODNkOGU5ZWhoNWxyMHY0Kitvc21vMW5nN251MHlxZzR2bDc0N2toaGV6NGozODNkOGU5ZWhoZHdwMHEyMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIJEL8Twu0Kvx+p+GjSqak00PcBxOMvvVdgRfPcUtNRxhIECgIIfxITCg0KBHV0aWESBTI3NjAxEJO2CBpAQn92pafS4ZYw1x5yhbWzeEPbloLJqITy5iY2eituz613FiQf2Zkj6w29lJWvCMP04RClnnE+AS5H47hXOkDswg==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTAwMDAwMDAiL2NlbGVzdGlhMWo5N3Y1MjNlcGhmaHM5NGxrZnE0ajVsN2UwNGh5d3E4NWhzeXE1Kitvc21vMWo5N3Y1MjNlcGhmaHM5NGxrZnE0ajVsN2UwNGh5d3E4ZHhqeXZ0MgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMe7SFzeKGI0YJAHw54yvU7yLYWusXUsq3jVTvelTi4QBIECgIIfxITCg0KBHV0aWESBTI3NjEwEMC2CBpAsDhZPKYuJYvn9s0PuKavVowtU6c9j/IBtUD64p/Tnh40r6daXWFRTSUfr+4EzjQHy1VTlUPBa7OSm+6CMvRjMA==", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMWhxcGozZWtjY243cWQ5eDBjcGgwZTd1Z3g1MHUwbW16dnZqZThhEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggyMDAwMDAwMBIJMTAyNDUxMDI3EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPGnAgEC7/zoaZNPMU2hXoalCLAMTR0XNVa583KPu7XXxIECgIIfxgCEhMKDQoEdXRpYRIFMTkyNDUQ4O8FGkCODMfyXfikVArgMnlLqE7CLpgzrjoORGTS85a9SI/JqH9CsWydvUQxEEiGR06QCzOLbxMeYdyiZaMC7s6JY9r7", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpyZGwydmM3eTk4aGYwMHBzZWN1dTg2YWV3dHdra2ZjMHJuY2tqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxMDAwMDASCTEwMDEyODAyMRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDeC474+u1TA2b8MBSLPMM5mFqNIKimqUYkcnGDftDKTQSBAoCCH8SEwoNCgR1dGlhEgUzMzU1MBDEngoaQBU3vJ6+6YZzYJydQZVwb0Z7lRr7qFqfXmt0wkcANMGfN0y9WdQjRhKxKkyslL+cNwEPFIgurbet8JQhPgK+mT4=", - "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcxMDAwMDAwIi9jZWxlc3RpYTF6bGszNHNhcnU4dzZ3NjY3cjd1MG52dGtma3IyZzRyd2VtajNlNCorb3NtbzF6bGszNHNhcnU4dzZ3NjY3cjd1MG52dGtma3IyZzRyd3EyczM0MjIHCAEQs4zlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDLctNrn6HD1FintXoU3DahV9YzeYG836Pl5CiYR30ydYSBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQLq6omcqEQYuFqzQpPEdcrgM2el+JAcEtzk54Gwf5dF2WghAjQTidUB88SOs5d8WfZuFhOsA+e2bm0pqn0rDxgw=", - "CqYBCqMBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ8Ci9jZWxlc3RpYTFyZ2ZzZ2prZDRzNm1zc3o0dTlyZmpzbHk0Y2Y2dnk0MjNkdDdhZxI2Y2VsZXN0aWF2YWxvcGVyMXI1eHQ3dHdxbWgzOWt5NzJmNHR4eGpyaGx0MnowcXd3bWRhbDhjGhEKBHV0aWESCTEyNTAwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDacHoHJdaAUo+Jhu3At1P7k2FLbehoc7dvqCOg/x+eqcSBAoCCH8YARITCg0KBHV0aWESBTQxNjAwEP3YDBpAnGPeuHJE0wdKZmlh7tC/sk+vS/BAm7vUfzUlUGNTbIRChCWeGHryWKW7X8NTJzU9w2YC05t+bzQxYG67HLwyow==", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWVyZ3dodGdjemNzcTB5MHdoM3UwcHM4dGF4NHJmaDZ5bWV3ZnFrEi9jZWxlc3RpYTFhczJqaDA0cXllOHR5dWpkcDVmdGtsazZyMjV4dWMzbm5zdnphZhoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQND2GR99cf9jUZo9oQ18TR1/qQWrVqAzOjHU1O/B+ue0hIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAwoIdp64K8SM8+ILjE9IhbU41goETWQJ8c0p0DoDsyCdp7qoedM4KIsOLrP+4Q0vJLN3XISOiwBED0GZsDZBrwQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXNyNjc2eWt0YXh2ZmpjcWMzbTM3MjRsOHAycXc0dTZjdnY1ZXEzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMTgxODIyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECU0gTpRo9yS9A7zd+V2t1ebwhqx85cf3UF2/kikeSsEISBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQKKIl4YFYpHGXs/D0HMDNK1V6CdomEij/KYy+t/wgRKzMAWAwjYmKDb2fEIo3kEaePLJBcD57QexUdw6byFA8XI=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWx0eWE0bTdxZTg0eXBsZXNmeDVjZXVheDIwdHFuMHZ5eDdlbTR6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjYwMjYSCTEwMjIyMzE5OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECaD+55Gz2Cn1WZb3O6mB2NH178EFKvW5UJoZwzeNEMQgSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQJK5Ix4anRdcxZu+bUYmJb9t6sYRa45U+IC4aCR2H2HQHl8OZikM8wxMlSz9Nad0MbHx4pYGAXaXlX0UoersC4o=", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWQ3aDQ1Y2FsbXlocHl0YWY1c2ZjcnhldXV1ZnM5Y3VwemM5eW5xEi9jZWxlc3RpYTFnOGZoZnE0a3AyMHdqcHM2ZzY1bGpmcXFtNTV1dDQ2bHZzcTNuYxoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLHXkT62orf0FobJifmlnT56sNtcrsgONwfDYj2E01FUxIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAVNM9qqjfJiPKKiyLd6mmNbeA4RBXuPmvt6QslFJ9q+lTZ+/H9F94NmbdWUhmbsyJT8KRLlZCq/EA5f10BfrA0Q==", - "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", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTVkOTRlMjc0ZWdxZnNxbGg4bjhjZ254MDNya2xoM2Q0OW10N2thEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNDAwMDASCTEwMjQwOTQyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECuGRudDAUbvwOMUtCxASN5wcAm/UKyASpGCfREuXpSO0SBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQNvmW0IDwC2dHYWW7fWi11UBGsxtJbSaHlihZKiaZNDYS4zGS14DIWTWHOrYcPQ005J6Vv7kUciui73bTaeVeL4=", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxMDAwMDAwMDAiL2NlbGVzdGlhMTJqejlhNjlzcjQ2Mzl1YTBsdHEwNXhzZTVrNzJjaDljczM5aDN5Kitvc21vMTJqejlhNjlzcjQ2Mzl1YTBsdHEwNXhzZTVrNzJjaDljZnE4aGFtMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQN8+g7RMAwm81KYlcTQSBFVuiVDyGC735M2vmtOUk+knxIECgIIfxgEEhMKDQoEdXRpYRIFMjQ1NDIQ1b4HGkC0DNoQVg7v0i1PYwjOsS6Kd9B82XYwOJlMLiGILXxXwVCNNv1TLHF6bp6qmPhEGQY3tQ2ae0dePnXdpmmzwuTh", - "CpcBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTRxOXJoZDJwd3czc3B3azhuazlxNGNqNndwNGYwZjNlcXk4c3EwEi9jZWxlc3RpYTF1bXYzNzc3cHAwNDU0MjlzeHRkZWRqangwa3o1c3g2cnhlejJnaxoQCgR1dGlhEggxMTAwMDAwMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECPIi6gOfSCTfwmRsJC+e9RZhTKFZAIq48y066Hg5L/7MSBAoCCH8SEwoNCgR1dGlhEgUyNTcxOBDN7AcaQKoj0Rtd0k1H3DpP/CtXi71NHtviy8/HEIAUGymNKDwaImGmskZhCfvArxagMNzvhaPQlULLNSl2eBSUvXcPoZY=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXMyNmRmajN2Y2VqNjNhczRrY254dzBncHFkMzUyY3o3OWV1bHF4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxMzYwMjYSCTEwMDk3MTA5NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECU01DWY3yS8eB0fD9mPe+IXb44yJGMNYzJnA7bHVn6FgSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQEkNOZOoDLXDw6BSt4mIGrs9UTkhatzfxX2AmDIKpcYVJeBOSsHsee70TBSe3KSuFHjGGFyUtEz/9sDFLm+73jQ=", - "CqYBCqMBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ8Ci9jZWxlc3RpYTFma3J3bHN5ejJxODl6a3RoeGd5eTNqNGV3bjQ1czM4dmtza3d5YxI2Y2VsZXN0aWF2YWxvcGVyMTV1cnEyZHRwOXFjZTRmeWM4NW02dXB3bTl4dWwzMDQ5Z3dkejB4GhEKBHV0aWESCTEwMDAwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECYvcxDu4CmrJ76EeXYJv235y5pdhdRdRFkj8Dj1/kjp0SBAoCCH8YAhITCg0KBHV0aWESBTQyMDgxEOPrDBpAgKTag5sJ5IsIltVeJhFnQYdqWwkjOMX4LUJmQyMd4T5lMPDRqxtW6iFlU7QfFLCp+d6nvW8jd15w+MM5bxeNog==", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMThjbTN0NjdlNjV1cWthdDdybG1oZ2hlaGo0M252cXpxcThkZG0wEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyOTQwMDAwMDASCjE4ODQ1MTA0NzkSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA24LMD4CO2G1tDMpqe89d+8qdAOaAq8jP7qIpXdw3r8jEgQKAgh/EhMKDQoEdXRpYRIFMjEzMDUQnMAGGkCIGIIK7yBJPKnnlFCbVHP2Q3g1+XFVhp1Zq/V3HmkXPgxJ74JNS9Bfgr6/nQ927l5PY3jGvAL5bJbp0uOw1ycN", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTRwOTd1NHFwc3k5c2N1emFxdnZkYTI4djlxZjlwN3N3ZjVhNXN5Ei9jZWxlc3RpYTE3ZHd3a3Jlbmw3ejVrMGhtcThwcTcwa3FoYXZmOGFoanNjOGtoZBoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNZCGOeNjlQT3jp9fAjnp/KFCRo2AcWLo0tAV6/GDSw1xIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAvkOpzAVwg0ddJZdH0QQiIjtatxzOTV5slrCkVBLRkg16pZtaeQD9A7HZO235AWwk4ekX2kFEvwPax0OnW6eUhA==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWw5N2htZHU3OTR2OXR3NjRkM3FsaDBzcXc0a3VleTBnbXVrcW4wEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NDAwMDASCTEwMjQzMDU1MRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC7fJSxCAYH7o5X6z22zB9Q/D7igV/3sLxYYTilXzUbSMSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQGYy49YNXMt1IsXkA3bCxf+7q/MiM5JvYLE996AbRE8ucOno34MYi9hLC6ariVUexQcrhCeIyJHWlVYy45dBZUA=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTAzeTdyNzJxand6NnduZjlhenRlZzd3MGw5M25jYXdyYXd0dGZlEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTAwMDAwMDASCTEwMjA1OTAzMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDTFMAsMZxQnBD/q7QjT+j3ltg9aBqX1lyEi6ASTojzmYSBAoCCH8YAhITCg0KBHV0aWESBTIwNDg3EKKgBhpAO1pSyNOFOakEpOMHSVs0odAYkNjzlMF4x5Ah+w6T9kI1H05Kj9w+oJCxCv1Z60HXElJL1HRGYmJo4YJMJgOsGw==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTA4M21hODJtbjlkdzhwaGo3OHFzaHUybG1lMnN2cnRjZ3lyNmVyEi9jZWxlc3RpYTF2ZHhweTN3MnowOWEwNTY1NGZkeTc5ZzM1bXk3N2ZlcTVkbGtqcBoRCgR1dGlhEgkyMjk1MTg3MzQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAmYI1TIMvf+CZFW3OsaLWc2zM4M57tedebTz8G6bJhD5EgQKAgh/EhMKDQoEdXRpYRIFMjEyNjYQ2b4GGkCsxRie3IAoLL3JSwjLgJvCfYatngNBg8Q6HDOR2T6+wxPgSfaDkJryy0FmRls5Vh9urK9/ocYfXVX4Cxg35cPS", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWozeHJoa210NWFybnBtNWVkbWZrNDcyN2xqOTNxejl4OWp6aHhxEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMjc1NDA0NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDu4Lc8AQNNHjPSFn5dZJcpJZ9xKQJXrYFVYrjoS3iC3YSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQEXz7ogZnR6gG5mo9yKKhDCp3xl5vEjwn0J3l13teUmCW3eA+//3NCoo2yZyJqEkEVBkMESQTDdPNooHxFd1Eyk=", - "CqABCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMTl3eHNnYTlzdHVjZTgyd3UzcGEwdTk5Y3VqbG5oa2pybXc5cDd3Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoOCgR1dGlhEgYxMjAwMDASCTEwMjQzNDM5MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECWvmM1ACDUWHiupLC+oWe0jykrdoxY1nzdZfKxC1w9S0SBAoCCH8SEwoNCgR1dGlhEgUyMTgxMxCI1AYaQO7MFSkcKQsacFCdpyRDU6prf3Z2XD2X4vs564n4sl5qceYBEzwznpkV7pS4acp8Wfqg6psj7H2q61FbxCpDCjA=", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWttZGRlazVjNzc0bm52N3dyM2hlZjBxNWtwNWZlcjM4ZHVtYzY2Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyMjk1MTg2OTUSCjE4ODYyNzUyMzcSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohArXDjkMankX84+Bria2U/T3YTucgMDS7tjLtfiqUEEe1EgQKAgh/EhMKDQoEdXRpYRIFMjEzMDUQnMAGGkAnL6JqWfXOLy+CY6/pSsidU2/5AnTOanuCJgF8D7D3zxQQ457hAR8rmh6RHDXbstEc8Uo+xVaNUTPBLwkyLaXj", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW01ZXl5bXEwODJmcDJxdWdxNno5a2tlNXhhZ3c3NTJuOTZta3l0Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxMjAwMDASCTEwMDE4NzA5MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDPCOmhrn5gkWR9LSIRExcol3MFGY3JkLXMsvhdTbepgwSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQBguRfSGZ432tLNhH8ey//Gatkc5DQmRrRWabY5YCACrduE7imh6d9IeTJQuBr8vmTGb9F0efpHVEwqc/IG+OJA=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJraGZseDh6NWx2dXl5Y3NjdDRmeTA4ZDA5NnN3enpsODdmOTdqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjk1MTQ4MjQSCTEwMjYyMTM2MRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECGbgtKiWR1spTY14YbgtXmnTGvUi0OLeHB4u8ZEPME4MSBAoCCH8SEwoNCgR1dGlhEgUyNTE3NhC31wcaQNEFktParx4u3xW2vNnGy2VjeKH418BDm4FerCEjhxFLB8FRqMWnpoB2gJ/EcXOhj0rNmzRCwkZx6AO+1kuz06w=", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWc0c3RoanZoanp4dHVka3d0dTBscnd0eDQ1eHlyNnd5a3BhazR0Ei9jZWxlc3RpYTFqY3N4dDVkdGRwbmwyZG1qMmtmNHhhemNxcGE4eTRoN3J2OWs3YxoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJkdjU9JlnSRa/RBGMSYrqpRZv4nTxaCYwxUpKPN8hdPxIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAt1FzLk4SyXFUMaOnXgm6GmFFl4xhnOp3L23ms0lsykQLm0G8xnHndO1LoEEOLdJfYB737bdpGmnyiJIubMaFwg==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWczdnMzbmVsdWYyaGhmN3d0dmR0Y3p2emw4OGVndXZtOHJscW02Ei9jZWxlc3RpYTEzcTQ5ajdsZXpwbnBxZzJ5Y3d1bWhmN2N1ampkYTkwbW50OHplYxoRCgR1dGlhEgkxNjMxNjYwMjYSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8x5yVvLLkaET0ZneSDRjOqru1rt44zsp2Q36ghSDijbEgQKAgh/EhMKDQoEdXRpYRIFMjM5NzQQvagHGkBZxknIGpIibGspyH+5xEUpEYd+Y4kVahZ+Mhm5zrM2A39SWNG0lPCus7vYh+4DZgNLCKxMREXE6eQBqs+qf5OS", - "CpUBCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMXZteTR6MnBhamg3aGU0Mmt5bHVyZ253ZW54bGVkdTJzd2ZlNW4wEi9jZWxlc3RpYTFkaGM5M3JmZTRjamF0azgycWMwcXA4d2s4NW1hbTQwNDB1NndndxoOCgR1dGlhEgYxOTgyMDkSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAt6smo1zVX4t8Mob2jYT+aXxOPT19FIfuUs/uf2/jF2DEgQKAgh/GAMSEwoNCgR1dGlhEgUyMjU1MBDt8AYaQOS/UejiCj2EqwH7AXjvUK94XTdtSFQ5+unxsylU9XW1JOI+jSYjh3c0KtElv8UxWcP49zQTko6D8L0+HnDYNq0=", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWoyeXVzcHJ3bmt6bXMzZTJzdGtjcnF5ZDB4dzBuYXJndzN4bnI1Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyMjgwMDAwMDASCjE5MzQ4MDg1MjESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA+hI2DXROEpTV8B23YMncTeuMxXyIC6u+okHaxT5T81VEgQKAgh/EhMKDQoEdXRpYRIFMjM5NzQQvagHGkBPPEquUnU9cgSSBcxfBA2lH402V5o5ignt2SkUyKigyl9XSYRbB/0LPwO8SW6Y6gRB/q+f7rZkgChKkhtF39nQ", - "CqMBCqABCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ5Ci9jZWxlc3RpYTFxY2NoN3JncmR3MDhlMzRwZjhyNGgwdDl5emo2dXF6ODA2dW40dRI2Y2VsZXN0aWF2YWxvcGVyMXBhdmFjOXlybGd3eXc2djl5eDg0c3R0Yzk2bjllZTl6cmphMnU3Gg4KBHV0aWESBjEwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECn8eQqQ0lTAKURpIwLgiyROB62rpL8f6p4QYSQEpku2MSBAoCCH8YARITCg0KBHV0aWESBTM4OTI4EM/wCxpAIRYgSGdKy7fCF2ZN2bu6Sk6KCRITm3xPKnyp4MxnO+UxAkaJ06bIvUxHj83sAuy68m8zQhsETvr7fE0RA7r0Ug==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWwwdW44ZXI3YXhjZnZtenQ1cXhnbHQ3OXM0NWF5NWF4a3MzenVlEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMjYzMDg1ORJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDWvemKTmZveygpI0IqfjzfRcuxfc7fp+bWctfdTOa/akSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQJxuqLq+VqEhwLVT9hwxcyfSveObXnLrstHS+jiEO5aMV53SEL/ymJaTeOv19L7iNFjW7ZRUtzwcPeW0NaPrUs0=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXVjNXJ4OWV5aDJkdWVhMGhqeHh4a2c3Nm1leTcycTR4bW16OXgzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NTYwMjYSCTEwMjcxOTU2MBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED0MBnI3n7ZZBKu6ldwXLuJAdXRHJpJDc5VQvXKEy03xQSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQFK/FWtbR3xt1emQjh9zOowBAX0Z0VTbKPX2BLSSd71EBlpV+KT/mQtGt4j7TQCj4vnAmQrposOndDX1jrrfOV0=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWp6cGZoMnNweWR0c3FubThrejNuM2Y1ajBucWt0dm1mNmV1ajMwEi9jZWxlc3RpYTF6ZTBqOWRhZDQ5ZWQ1a2FxMzU3d3VqbGpmNmczOTB1Y25rZTc3NBoRCgR1dGlhEgkyOTQ5NTg3MTMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8Ij9ejRk6EEsoQSeqqGvXF5ozwIhE034XZno0nYmXYCEgQKAgh/EhMKDQoEdXRpYRIFMjEyODcQwr8GGkB29Ubfk97xL+fKi1MaOcHO0y3iveCcfQnyA3Eg3hAzHG2wS6emhpewSsnRQ41TEQE3ljP8J8Z6h6EgL8qhEgkd", - "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTFsMnVnOXhzOHBwc2dwZzRlOTdocnpjZHBsdGZoNXk5NmdrNzZ0bBI2Y2VsZXN0aWF2YWxvcGVyMXpxanBmeHR2M3lwNmtkbGdyYTRoYzl6ZWh4Z3ZwYXc4Mmh4cjV3GhAKBHV0aWESCDE1MTAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQK4RRYhsQzBPiMSsY+zp/zv3jb0PbYg/UpD6xUs9KB0dhIECgIIfxITCg0KBHV0aWESBTQ0ODAyEIjWDRpAbtG1aGWruGZBCRKgvxkuwpZFDZBXdBPH+n2HdwVJxFk/LX0nYS2VDq7oAplhMlqFlyVbST51N6je+GR+d37zcw==", - "CpUBCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMTgyeTdseWx3djQyNjB3eDVscHlmamF3dXh2NnR3ZWFoOXQ0eXkzEi9jZWxlc3RpYTFxNXZkYThtcm5lM3c3NDc5OWxwcHRqcHNtbG5xZm1uNWR6NTY3cBoOCgR1dGlhEgYxMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAwZQkP/z9wR4LdQnOBl3+ps5/j9V5UaTmZ6sTe4SC/7cEgQKAgh/EhMKDQoEdXRpYRIFMjU2OTkQ7usHGkA5/yt6jaqgOua2WQxyeWlQmaSKL6TalR1cS+YQLdo9q10v3Z96qXx4hp5tE4quiENhxaPHZvnovfpfgmjmFclE", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWVxM200MGFrYW5rODkwc3MycDQ1ZGFxODhlZHdrbnh4dGZlNHN1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMDE1MzYyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDsq+OcgWYhYgTJtFOz0ERY2LxTwq1IUW/USYOn28tgBcSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQBwg4vkYmufVk1JYQ3u5jpzqL7kjKil8s9N2DuSStk3hE1HFZNEQl2K5JhefQ2PgSsOImDVdvUp0WIG9+0xFBJE=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWZ6bmp3Zmc4eDRkdGpqaHR3bDlseHR3cW45ZHVhbjJzYXRjbTZyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjYwMjYSCTEwMjc1NTE2NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECM4MXzyIYyxzzsU2BpPLvSi6gKdueyT2YM16r2z6IqUESBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQJzuzgxYwh+SB4njOA4e8g96pfTmWngRWrlUWgSe+DgBTLahIOHNpnlOTWG5dDyzIFD9nWyEh5Nr2fZiCq8FfqM=", - "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", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWxwbWFjOGszZ2ZyaGg2ZHdjam5sNW42dzAzdzhjcGQyeGNmd2tsEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTM5Mzk0NDESCTEwMjY4NTY2OBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECfcPgodL2eOQJekbdDNjYRRQ0A2xD6ikhIIxdCOKx9NQSBAoCCH8YARITCg0KBHV0aWESBTE4NzE3EJHbBRpA9pzMYW8MLWfusZwufIeNyEDVk6NCnY0zFiItaxz7r9FjMgQphn0r59qF4Ju4VLpElOnvAEMynWg+nAEc42sEng==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWw1eTJuanAwYzYzdXBndWh0NW50ODg0bXMzYXR2eDduZXdkcTVwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjIxMzY0NDkSCTEwMTc3MzIwMRJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECZmuBO3OrEamXo3VzKG6jJkgUd53clpVN++kE+EUTr5wSBAoCCH8YARITCg0KBHV0aWESBTE4NzE3EJHbBRpAg646Hxa6eXdvY+9Zj4bo0HI8yzC7WYOYJYTnEflvx/c/6vl1DO5HUNldbL/7Q+FIY77dZraGFrhFcfQWJMvEWg==", - "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTFtcHFudjZtcHpreTNxM3FmeHVuYWg3ZGFmcDUzOWNtcXFxMDZsbRI2Y2VsZXN0aWF2YWxvcGVyMXI1eHQ3dHdxbWgzOWt5NzJmNHR4eGpyaGx0MnowcXd3bWRhbDhjGhAKBHV0aWESCDEwMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQK61pTxp4ZLK1tQpJKq7f1EHyEB9+Oli92wlzAPC9ehJxIECgIIfxITCg0KBHV0aWESBTQ1MDY2ELHgDRpAdvzgo9mTnjO/lk69Wj/P71sNPt6M6V4+/JO901A0hD8/l/2ICdbqEyTuSt9qze4zT3Bk6eb8fyFeFvaK98SWzQ==", - "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", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJ0a3AwZGU2endxOHA0cnZ2cWFrbndleHh0eDlqeHZocnF1Z2RrEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTM5NTg3MDcSCTEwMjc1OTg0MBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZKUxZ7wH1NlcJxu/UdTncXfhDQnUCm7QHzY2pPMXh/cSBAoCCH8SEwoNCgR1dGlhEgUxMDY0NxDdvwYaQIvcaFdxTIABSS6rNnr10GJ0rgg4UeoGHV7Sr+LC5A9WQanJhZIGAIiw76feo0lGsYKkCnNJuqBDIMF4JlMHZVM=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW5tbGY2OTJqd2RhNmszMHljbWd3NWM5bHk0Y3VkeHB3bWp0OXVlEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNzkzNTESCTEwMjM5NDYyOBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDp5uzXCp9CDJIIv6DB/VyyXOCPbBCL4mKU28b32LK+WUSBAoCCH8SEwoNCgR1dGlhEgUxMDY0ORDxvwYaQJjUIPMYCYw5caOs+awbQekbLuK7q+kE0qzbZ9sQWXNmRDMzcGyCm0p2kNnTH8MGB0/XWzlV3ZY1NT/noDYnWNo=", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTUwMDAwMDAiL2NlbGVzdGlhMXlqaGNyOHJ0c3Jzcmt5Zzd6ZGtnaHBtZzVwcmtnYWVmcnptcDh4Kitvc21vMXlqaGNyOHJ0c3Jzcmt5Zzd6ZGtnaHBtZzVwcmtnYWVmNm5lcHRlMgcIARCwjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNtDe0c8O0ly5bOKgEw5gLRKAIIyJ+F0jkU48Yw0CPqJBIECgIIfxgBEhMKDQoEdXRpYRIFMTIyNzAQw74HGkDAo2RqlmHCqFqhsQtM7WpyOaxQauPTI0zyZxs9HJS0sWbmJyXSC5QcG18QUCoQJMhZ2HqXxiHXgmdU3oMmAuiE", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXkwYXZ5OXZucmdmbG15ZHpwZTN5MG5kbDhmejhkanpsZXhxZndwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEgg0ODk2OTI1ORIJMTAxMzkyNDg0EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLZ98byr2AQImfNn+cLJwRi4uoWWbZKtF9HKDi27PFeiRIECgIIfxgEEhMKDQoEdXRpYRIFMTAyNDUQqqAGGkDyeuW+uZqE0nT6/vAHXDJMlrzZx3UcYrKpDiV3tRXAIXnaOZoTeCCsa90/XiNVBVX7ZJFLfLvpDqkao4zIItFY", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNzgwMDAwMDAiL2NlbGVzdGlhMTVwZHljeWE1Zmd4Zm15bWZkcmZkbnNkODc0c2g4dzAwZzBwc3h5Kitvc21vMTVwZHljeWE1Zmd4Zm15bWZkcmZkbnNkODc0c2g4dzAwMzdyczJtMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQK0vax8/2ROV5uD91x1PLk5RsIdysjlzAgcsd5hxqdvERIECgIIfxgDEhMKDQoEdXRpYRIFMTIyNzkQnb8HGkB7hyELegTnEpzJ6yVQq5xADeS8hOB1YxegAkHlWPhagHyH/pO5+W1uTZMO0xF8B9Qe3J/DY1rpIZ7/ESjjU6sh", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXg2bjI4dHBzYWd6Mm5hNmxnNmY1OGtwa3JzeXRnY2xmNjRuZnRjEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjk0MDAwMDASCTEwMjUyNTk3MRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDduD95P+9xFU1YJiPULfsC+YzqTZeWHG+d2Y7vV8tF3ISBAoCCAESEwoNCgR1dGlhEgUxMjU4OBCv1wcaQJuRPd9360ZgfJypf/N8JOTH9/txgc0FkT3C/QKUB+4BL5ZcWw2SNeLmW64Kz/q/BqjikP0caP2v1guBreshrvI=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXNnN2pkcW1obGZnczl2NGVsOWVoNDl1ZDNzcmo0bmRhdjNlOGhjEi9jZWxlc3RpYTF4bjJ4eDM4c3l5cTJjdWZtd3FmeHI2cnYwc202enBjaHRyNjJ6dRoRCgR1dGlhEgkxNjIwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA6RIW5AgxitOzAcTILQwVX3Gun2Tapi2v6Veqx9PMPEJEgQKAggBEhMKDQoEdXRpYRIFMTQ4MzgQk4cJGkAsVcwklqNUw9ahe2nBl+LPCYPy40IGmfNDxrDyaHwL7xfmPFLx02wOgOzRrmpsnkEGKuPt6LgIIP58Qw0/XVFG", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTQ5ODAwMDAiL2NlbGVzdGlhMTdocDNqOTdzaHBhMGF4dWU1MnFjaGg3bHozeWV5azVnaDU5bW40Kitvc21vMTdocDNqOTdzaHBhMGF4dWU1MnFjaGg3bHozeWV5azVndzk4bWwyMgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJZ6EQ+Bw3vv90kXbXB3ZbWKL5ZZqgLsWvXDgZwBp+o3xIECgIIfxITCg0KBHV0aWESBTEzNTA3EJefCBpA79MxhIgwhMgnCi517OqdL8YL8qeSS5r/f6UY8JF0JAB9T2ffzMTtkNKHCTHiZwgZNXwLKlPWebJSI/2A30kVAQ==", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW5jZHV4MGVyNjlnNm1hZXA2c2RrNndmaGEweXZ3cXV2YzNlc2h3Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NjkzNDcSCTEwMjc2MzI5MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED42HoHg4+KsSUbwjLFgG7V5SoBJ8MoR36kH7dX6ayHmoSBAoCCH8SEwoNCgR1dGlhEgUxMDY1MxCcwAYaQKzpYC9RoYpkZ5mRX4CGDGkGqjDhnhW9gEFqyt4dbYOoTBzTu/o5NzIstj+nHcK89yUj74z00lYlcfp6xFUyneE=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXl1azNkaHNtOXVrY3c0MjMyOHg5NGMzeTBmZmg0cWczZHV5Y21kEi9jZWxlc3RpYTF0ZmF2aGVzY3A2Nzk0NG44ajNhNjI5cnB1NjZoemV6ZjVsanNtORoRCgR1dGlhEgkyOTAwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA/zxFzltVbNFLK1fQ2PJWGVcjpKHWOP3ARkcrZ5NlzzkEgQKAggBGAESEwoNCgR1dGlhEgUxMTA2ORDd4AYaQLYCx1XzEUSmw2mNB+4KL8G4g3AzQMJsFS6RJue7/eXtaUTbrtCtdTTLiPxz2mMo0xtWQZsl16IfLCRWHtEqQsY=", - "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW02eHAwZ2RkajB5bnFnNWtrYXV5Y2ZhY3RuNHYwdHB1OGZ5ZXhwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjAwMDAwMDASCTEwMjAxMjM1OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECzEm3tA43yRuBZhGyd9T42S//2VNEXD+lsQXkwdfnYBoSBAoCCAESEwoNCgR1dGlhEgUxMjU5MhDc1wcaQIAxK8Q+Ia365RuvFuvwRk06cIGRcC3UOqg2e2t6hfQFAGu/S4wvuGyrbMXezCF4/RtAQq6BpDtNuP5US8jTgXk=", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWdnbm1jYWZmOHNhODVmaHUyZ2Ezem11dTBlNjUwZ3pheGN3aDAwEi9jZWxlc3RpYTFjNnZsN2VnbXdnN3ZndDM3YXZlNThzdzY4Nng1a3c4bGF0c2dxaxoRCgR1dGlhEgkxNjMwMDQ4MDMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAx8GxxOWZ5JeoeB2G0VFqhnhLs46R0rRHXwcGyG9h/lGEgQKAgh/EhMKDQoEdXRpYRIFMTI1OTkQodgHGkACX04hswLeYFBPynwkI17RziddBPgAxvzpzB45CedB/HgGNTIsR0XHsEmaStx7TT6wmZV/Mneg75LwJTqCpsNY", - "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTBsajd2OWozeTBjZjQ2a2oyZGo2dzZnNWxoMHhseWZldWdnbGthEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxMzcyODcSCjE5MzQ3MTU2MjMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAxYvKxOdeUz4a+oc7J2BEbAn/mt3knkylb4EH0bc9Mh2EgQKAggBEhMKDQoEdXRpYRIFMTI1NjYQ19UHGkDF9m5As/1aV98iIelipASZzm1PvTRnqfgoT7HpcCrcg1Cb3gFtIdWvJDKfp76TNY5YEuOfbq3G0VSIsQ3ET7uf", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTc4Njg5ODkiL2NlbGVzdGlhMTlhZTI5YTVuYTI4Y3llZTI1NDhjYXd4MnUydnFlMDRldGhncXZ3Kitvc21vMTlhZTI5YTVuYTI4Y3llZTI1NDhjYXd4MnUydnFlMDRlangycXEzMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIh2zJlzW2gjTziGHZBkV79OczrYnMwbD/7ok0us7yvhhIECgIIfxgBEhMKDQoEdXRpYRIFMTIyNjUQlr4HGkBSu0ZiESLd1iq0kknIwpiAmMsVX8lVa676shjFUQMkaGyy080Z5BsvoLMIRTAcQ/q9ba1XNBZvIEPTeAUC1Q4D", - "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMWFuaGpxcW1xcjV2bHprcnN1ODBkMnBreHg1cTNzOWx4djNndG43Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggzMDAwMDAwMBIJMTAyNzI0MjY3EmYKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJout2TwsIxX3skbzypF1nJQO3LwBcwMqyxeHeH0sRr8hIECgIIfxgCEhIKDAoEdXRpYRIEOTYxNBCK7wUaQGsVRdTxRnRcgRJgH8Nl+qIwNzX0wUKAODe7xuFoRxNWUCFBh/IPfa8C04/miw91j6kY/I6wgIUr+If9KwJU2fs=", - "Cr8BCrwBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKOAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoQCgR1dGlhEgg2MDAwMDAwMCIvY2VsZXN0aWExOGY0cnF5ZDgwM3cwbWhyeTUyOXV3dndnd3J6bmt6NHZkam1sODcqK29zbW8xOGY0cnF5ZDgwM3cwbWhyeTUyOXV3dndnd3J6bmt6NHY1cmVsdHAyBwgBELKM5QUSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAtYTIMFyK52jX7oZdlzTih+U9WtysypDJ0CVDrTtln9BEgQKAgh/GAESEwoNCgR1dGlhEgUxMjI3MhDdvgcaQCUjJk6RVZue1dwBeXgkvHX9+Ztl6hZc0kH1PK0Nn/Q6PvQhHYbmfRbhu4Q/haxegyVzpKGKhXc+YbjlKD7wj6M=", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyMjgwMDAwMDAiL2NlbGVzdGlhMW50dGRxc3RybjRrN2Nud2Rjc3loZGprNThlanB2YTc0NnR2cXlyKitvc21vMW50dGRxc3RybjRrN2Nud2Rjc3loZGprNThlanB2YTc0cjZ3cWd1MgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKceM5jVEYYws9GwbyjjM6aXcORckeUn6pGiZ7TN7qd/xIECgIIfxITCg0KBHV0aWESBTEzODA1EMC2CBpATQFLZo6V1k2wQTmrW8MC8zqEbP39cdHY5dzQvc9d9rBM+Ph4Twaph+sHOSa9gnA5WEUX09tb4wtG+SXvTsh6yA==", - "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTQ5NWV6MjBrdDVyYXI4bnR6NjhlN3ZoYTJsaG40NXVxMnEzZ3VlEi9jZWxlc3RpYTFraDJqanByOHA2ZXpmN25qcGFueHI5cDB2NWpleTc1NWVlczQ2bRoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLy77tGvn/YFUhm8QMa2L4O144Rf7yE9lYn5m187tvfFRIECgIIfxITCg0KBHV0aWESBTEyNjAzEMzYBxpAHa8B+4ccCh0YbzNaD9lnBpdr4S2+Mti6amqlkMvd4RgJ8YBgml+370NtCmKkpzWc3PKjvn6Eb5GmAAGTXAqggQ==", - "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNjMwMDAwMDAiL2NlbGVzdGlhMW5mcHF6dGt4dmFhNGhtbmFxZ2ZwMjMyeXBsNjh5dDc3MmxrcHloKitvc21vMW5mcHF6dGt4dmFhNGhtbmFxZ2ZwMjMyeXBsNjh5dDc3bnc1cGdnMgcIARCwjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIZ4TJotB00C5eJ/dGA4GkEJViM5jXIrqAKI++gACWMzxIECgIIfxITCg0KBHV0aWESBTEzNzk2EOa1CBpAaTy02W4IXwjtDw9xUw2uziXxUAN6h8M6NaUknVikLXZZvBH9q8pkVMN9RJmdo3gs5ljYqT6ARnH04EuaYKw6wA==", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWpzbDJtcWVjdmNyN25neDB2ZXN1eDdsdWh2a3lnY3dlamZsZDBjEi9jZWxlc3RpYTEwMzhmd3gybjJrbDk3a2ttdjR3dGQ4Nnc0ZzZkaHp5bXZ0czk5eRoRCgR1dGlhEgkxNjMxNzUwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA+TF4JkVFb3wXqJJLTVD7pI+ClQkXORK00afL3EgFwoWEgQKAggBEhMKDQoEdXRpYRIFMTI1NjgQ7tUHGkAVSbBaDc+V0ErHo3nv4EYNpIvtBTvN2SYJBXkILDStQ2OJ1WyOe3f/91WMqK0pOR3JvkVXhdvLgdqV07OgCWmw", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTY3d3Bqa2Nsd2x2Nmx6eWs1djdwaDAzc2s0Y3N1ZDA4dHhuam1kEi9jZWxlc3RpYTE3bjh5cDAwazNtbDB5a3B6cXRtZ2xjOGVhdGNwc2hnZHRhNGY0cBoRCgR1dGlhEgkyNTc4MDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAzoDmw6+uK16/CwX7WOto6Ah25BCXTEnhW+hbeg71dBtEgQKAgh/EhMKDQoEdXRpYRIFMTA2NDQQxr8GGkA1cYlKKmFPsjh9HQA0yVzCLR7my2+JVCTHhnHy7EKLzjcbn+oPuzJpG09wXtEj8YQn+ek2Pr5Isj7lhaE97/3o", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXp5NDc2NjZxenIyMnFrZW54ZmZlaGp4bmR0bWgwOXljampobnNhEi9jZWxlc3RpYTFyY3U2anpyNXRhY3d5bGw0NHduMGpmeGd5enJlaDc0dnlrbGhqdxoRCgR1dGlhEgkyMjk1MjUwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAuhRbrGSARCH3Lt8MJeBUngJXj8FWiLaxTD+W4sePB4mEgQKAggBEhMKDQoEdXRpYRIFMTI5ODUQuPYHGkCjIT1INS+XIkwjFl9yl5LD7w0RDcK/owPbDqBOK4/Wmj6BK8DsLpVMUNd3XbdSHWc/kqvYndylMdeYFhm3JOM2", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMThlZTc1bGwybnFlNjJ5NDJ1cjdtcHhjc2RheXl4bXB2NGczaGVuEi9jZWxlc3RpYTEzNTYwNXR0YWN5ZzNxNDJjMDYyZHhnNjZnODZ5OHd0NWRsMHk3MhoRCgR1dGlhEgkyNTc5NjkzNTYSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkusY9NPsu/dpJiMYkO12ne6GuX3YtepyXtUaqsEl6EbEgQKAgh/EhMKDQoEdXRpYRIFMTA2NDQQxr8GGkDk6EJLAx2/CajElMc5oyw9cB6zo3Jh1RdXwm+iGL6eZ1BhC/+Jre1yJg8sDR36+ahNHhK5TBPsbQRqZKOcaOvZ", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXdzYW5mNWNkejZjd2doZjZjNGdrOHFqdXd6eGVqNWcwZ3lhZzU5Ei9jZWxlc3RpYTFyMmM0eXJ2OTBjbHpmcG1ma3g0c242NnJ3MnRmcmhjc2xocnF2eBoRCgR1dGlhEgkxNjMxMzcyOTYSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAghntZfGeKEvc/y3TF8GHZCyKPPaJDax/1HrwDJId0azEgQKAggBEhMKDQoEdXRpYRIFMTUwMDAQ8JMJGkDI/M+2iM7o0Cu7EypjBjPXp2j40hLEbaNi4bz7xJs43EyLh+Fe35gz+9yknESXDWqL5LmOCtV9lEwNuA4z/OI9", - "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTFxcmszNTQ2ZnA4bGtndHZlaGtoanBqa2tzenIzbWhwdXd4MGZtORI2Y2VsZXN0aWF2YWxvcGVyMWRsc2w0dTQyeWNhaHpqZndjNnRkNnVwZ3N1cDl0dDdjejh2cW00GhAKBHV0aWESCDg0OTIwMDAwEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIYSDXV4/+3MZ/ZbVhXe+RvEto7Id2HPf6AjrFuNvAqRBIECgIIfxgCEhMKDQoEdXRpYRIFMTgyMTgQpI8LGkBPiaYclVlRMvliRpIxeca7iPtdoN59NOfpQ8B34GQvMXQSCMUkcR3ppYC1Py9asWu3zEzgv+ZgiUvz+tQtD7Wq", - "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXgycHI1dmE5dTJobTNqZndzZnhjd2hqanI4eWdjYzNuY2RoZGFtEi9jZWxlc3RpYTF2cHZsYzZrcGdhdmRzMDd4NDJjOG40YTl5a3R0dnAwOWdjbTlxeRoRCgR1dGlhEgkyOTQ5ODAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohArr6IG+7imLVNmKT4KmQ2rNHzHK6uYzqG+RV31TWaFjvEgQKAggBGAESEwoNCgR1dGlhEgUxNTAwMBDwkwkaQNKi+RjKee0fQiGlMW6vEA9/bfgL0wfsPZ9JgefoxzwiQD2MG4BNy5Ou1KFk71gcsnh3ZEgxIvLZqB2+rfhgke4=", - "CtACCqEBCp4BCiAvY2VsZXN0aWEuYmxvYi52MS5Nc2dQYXlGb3JCbG9icxJ6Ci9jZWxlc3RpYTE4eTN5ZHluN3VzbGh1eHU0bGNtMng4M2drZGhycmN5YXF2ZzZnaxIdAAAAAAAAAAAAAAAAAAAAAAAAAAAACOX2eb9xFssaA7uqCiIg4XsmYi/c5bsBWqT1oeCk/65PVIDyAZlcGFzKUTqhnrFCAQASaApQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA7D2Sad13Zq2W5ImfITzxUOB2F68P9ymaAXa2pS/6UQkEgQKAggBGAMSFAoOCgR1dGlhEgYxNTE3NTAQtM9cGkD5Rmt5KbCUAE+GL/iGgw3FQiXaj1EvffAPWhPxD0/ZADG7cZHnCdy3SfbHZcsta0efPwdc6ylnLunPSf0WMwxdEt2qCgocAAAAAAAAAAAAAAAAAAAAAAAAAAAI5fZ5v3EWyxK7qgr/2P/gABBKRklGAAEBAQBIAEgAAP/bAEMABwUFBgUEBwYGBggHBwgLEgsLCgoLFg8QDRIaFhsaGRYZGBwgKCIcHiYeGBkjMCQmKistLi0bIjI1MSw1KCwtLP/bAEMBBwgICwkLFQsLFSwdGR0sLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLP/AABEIBQAEKwMBIgACEQEDEQH/xAAcAAEAAQUBAQAAAAAAAAAAAAAAAQIDBAUGBwj/xABcEAABAwMBBQQGBgYJAgUAARUBAAIDBAURIQYSMUFRE2FxgQcUIjKRoRUjQlKxwTNicoKS0QgWJENTorLh8GPxJTREc8KDFzVUk9IYJ0V0s8PiJtM3RlWElKS0/8QAGgEBAAMBAQEAAAAAAAAAAAAAAAECAwQFBv/EADMRAAICAQQBAwIGAQQCAwEAAAABAhEDBBIhMUETIlEyYQUUQnGBkaEjUrHwYsEVM9Hh/9oADAMBAAIRAxEAPwDw9ERekQERQUAREwhIU4REBGFKkIgH2UREJCIiAKWoiAIiIAiIpJCIiAKVClAMIiKwCIiEhThMIUIJUFSqUAREQkIiqQFKKpUoAqlGFKAIiIWCIiFQiIrAIiYQsETClARhMKUQBERAEREAREUgIiIAiIgCIiAIiIAiIoAREQBE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" - ], - "square_size": "32", - "hash": "l7prxH6ZB/63PBYZ0Y2d0p5n0GTPIm4ZXGjazp0P6mY=" - }, - "evidence": { - "evidence": [] - }, - "last_commit": { - "height": "407", - "round": 0, - "block_id": { - "hash": "cRLIkUkIlw2UeyPve1aSEO57zuHiIgsa8jSSgU2XCGA=", - "part_set_header": { - "total": 2, - "hash": "Mn1TmmyxpsI42IV2S8xt1tgrzYuLWpQov+9l+Hs37gQ=" - } - }, - "signatures": [ - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Q0ribtCJqnJWVjr436BJBtJ3iRY=", - "timestamp": "2023-10-31T15:24:10.468224161Z", - "signature": "/H5Ev+gstJHk33t45nqWHKexqpFWsLK0Kdz7WMqmzF3nWOnezCH6wHSMGWD1j9sKdQcs2/jUODnDt/PItASiCg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "2DhJUZpctz5KnjvN8ETG7ooyFWs=", - "timestamp": "2023-10-31T15:24:10.428950139Z", - "signature": "AtAB9ubh+iLZiGbzOsUVnUu6+SHAXMVp5P/UkyeqOXxG2/OFELaQJNYG/J3HQFvkLoE0SkZIIaXUue9vMkHWBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "BdLiLBIWzTAQS822sSKx5/Gstc0=", - "timestamp": "2023-10-31T15:24:10.445491441Z", - "signature": "BHfIhsk5TpMuAVuF06Y6LMIGZ+g4pcMVrd/swWcnWJfRJWZEkruvtJb7YgLq42+YymJ84EbjbngHuXGH1cITCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "L33o2hRWe4awJvBF2spF9VdOfkA=", - "timestamp": "2023-10-31T15:24:10.517867939Z", - "signature": "PzquYYkLwfD6lUHfVHxTziaAurAbKoye2FmcKh9dP4SMe1JD8ack3fPnNIR4WnJiW7pX+HoUNFI1ka4LPyWIBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "BxvkzS8EhvKXxlMJGIBCYQNMj3w=", - "timestamp": "2023-10-31T15:24:10.509576453Z", - "signature": "h4ZE/yEh3BRGw63oGL+bmKP3oGzxthr/69dgDv5ygM8GFwZ5njngTwmh81tDjIoxrX/xUVy8Y0xXg7DcyjqBAw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "y2EzwoKZHDKYWsJ3nqJ37ol4rGM=", - "timestamp": "2023-10-31T15:24:10.450940301Z", - "signature": "1OmJzMNdvDKcEnp7ndlfANVWUl9cSv1iL6GsTRcRxJp7UBQZHCXk1XidzEVZkDz9PViJuQTq6xVs3C/ElaXOBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "4r1PiV+d4LRrLtS6oS7i3mpBVFA=", - "timestamp": "2023-10-31T15:24:10.440160480Z", - "signature": "Q655LvlceKNHuJ1hyIYFf6HJg8/I88bIeAMz4g2cZ3UYgdpjzNFUIahHCzMKgqHjxa7F0e8CCIeiIhGRkJ6CDg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "107Cnm5Fl5Q5Qufpex9RmgYV47Q=", - "timestamp": "2023-10-31T15:24:10.406061289Z", - "signature": "Tm1hz4pJAeCQdgJ1oQGonb4PX756L2FHtswGEcQHg8O8gmJJ/goXxWNw2IYprX9UqAiXHP4/EzLC0yurF6tnDQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "YzJSeVFcHDqR1+LbGvjRvyAZSPs=", - "timestamp": "2023-10-31T15:24:10.410975096Z", - "signature": "3Rfyjc69LfFurl5lnslcjbF0v9CJEbK8gMFl7BYGh3E85n1+YChgBfnxhIHpX9ru2kHe9JfvrcjgI38ST8NQCQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "HnuiCqz37yzepBzf+Nzt+88S82M=", - "timestamp": "2023-10-31T15:24:10.483534525Z", - "signature": "9C6kTnSnwR4ylTYPzL33Rt1AYFSMeNGGMfart9f8fWuz1u6LAnbAhrqpIk2SKIdNRS4zJzxRVwSWMCq5ssF1CQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Za+gYDqtb4VPjsO/jxAw5tBWhIY=", - "timestamp": "2023-10-31T15:24:10.404091915Z", - "signature": "7HvWtAd8cfK6v1OKUx61cO7errcJmTmBcQi0RP7YGUhfJfiZGEMZtvifYGWoBi9dg5bAisrYfluglPLI+WQSBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "ezpsaDi5DFZjy1Toe5U1lBqH0ns=", - "timestamp": "2023-10-31T15:24:10.455368079Z", - "signature": "FxomxoaZgz1H0PPMGx2Rt22jJC9AQN7m+PGKM4WMuB8fU9+8yDIpFKYvd1oNnT1L7L9m2y/Q1ohTfNfPUaevBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "67wjo15D5qJGC947zQJNlkaX//o=", - "timestamp": "2023-10-31T15:24:10.439581475Z", - "signature": "d3H+vqeGNQSmQP/tKfsZDr1N3Ko15/02RZbMum+LHZ9IU0h8PRGw/ctaY6uYmn3CHJdzjqcrEKDsDZ5z/MXGDQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "n25/MFjM79c2+o1vHC/nNyYjBng=", - "timestamp": "2023-10-31T15:24:10.414045948Z", - "signature": "bfQhhQRqM1L/dqKScnB/JPD3/7HXmMZM+qkNB4Q+IZoD9MVNzHrHhymODWF/YHTTIyaDESyTVJZbTOol3HqNBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "cMa9AO5k211g9azItGKc1hA0aIk=", - "timestamp": "2023-10-31T15:24:10.541091272Z", - "signature": "5Qlj8nbPkn2QH28V7RjBuxJEcs5+gd8b5qZyyZVua9HTeOUCk4vbMOjYxghNZhLadDmDabklr3xpmjudnb0MCA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Sdn61HMptBiub/9B+OVIxNGrcAM=", - "timestamp": "2023-10-31T15:24:10.453553176Z", - "signature": "qBurjnfsnSlllAzAuSgA7i5F3tJA5DwAurOmIaJtGSFrERKzzE6PJNXRD91H4tHIjxsou8m0oK5JaR18h525CA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Mmepq9+ox0ljwFm2s++bxooHTK4=", - "timestamp": "2023-10-31T15:24:10.523622951Z", - "signature": "20afpH4lFy/ak6VGAZiw4A4Gla/TLPk15a94vIzIyVwxtapOOsMjLO6Wmqo4/LcFCOeIRD+T2mhUSRn6d+NqDg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "y/uRP8lnkyJgZnkJcnZ2dg+o+iQ=", - "timestamp": "2023-10-31T15:24:10.466416058Z", - "signature": "0NoKUjVWwnNNFvsERx0vIWYtqVg6TVun9RlS9tEO1Q/PgIqDLQdD6nQowYM7JSpV0oVG0iN7jLaRYeHIbfkjBg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "5kHHoslkgz5Vau+TT78Wa3EodLY=", - "timestamp": "2023-10-31T15:24:10.445512414Z", - "signature": "lE49OPXbgEl/R9wPq0y/NtRFT7poA9XrtY507e73VUbikrzlLVOz5506xdrr8VGypaHh/QsUkxY8jMLhmdz2AA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "isjueULXm6wntbOM7dJATF4Ni70=", - "timestamp": "2023-10-31T15:24:10.443259299Z", - "signature": "h/5ikzMHLQ9er8x68y6u1KVgSoyJ0wNii+kORwB6rG1l8R0aFoW71DLHnqI41wCIylQAH2NQ3KVf2Rd2GTgaCQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "F+Ag/JLe5W8y5lLOrL2N6CDj2HI=", - "timestamp": "2023-10-31T15:24:10.497792090Z", - "signature": "bJVAehukuCmkRv9ijiYmRdg7CJsO90JMqpMlkK+CKHvEhKvH8YkEVzG2pi3yuQAEHf/UzsODA4tWm6LDtVbSCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "4Dsd5wZwxkWDIu9ZYdZjWXTAk1s=", - "timestamp": "2023-10-31T15:24:10.418971453Z", - "signature": "Mih+gvk9ylSKOGXH15/tO2BFFGSpLuGl2ebPrjrtxl6n+Y8ncqSSWFnO2CtEPmVC/77SOeP0/bj6gyswhEf3AQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "B+Xq/uAzuYl+QTbd8w2XFeasY64=", - "timestamp": "2023-10-31T15:24:10.507987332Z", - "signature": "uYf21MZwfWQ8Uq87XFcOaEkuLGdwxwrMGkGG76JVIaubyeYgfqldYD/lgKFf1MKG/kvtjE4LfQTIpTDyZ5sCAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "3pTzUcPfxZsXO7crrEU00jfS6JU=", - "timestamp": "2023-10-31T15:24:10.490869655Z", - "signature": "5c7YHyrdVIDaLidqJvIYETBltcwlbtsQ+TG/MiYF5+1c1uW77imS0pqbSn9J/+9SbSToqR1CcL9eiwOIbmYJDA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "z7dEXyp9e2g1e9ojWCJu0mKF6Ck=", - "timestamp": "2023-10-31T15:24:10.503883183Z", - "signature": "HbeT/x5d1f0uiq1xYWKMyA0hXZVhhsvY4KXaJ+Q4gAYFoJSqJYkbw+3nnmGjfrTyC2nefQ0yw60h5ub6su94Dg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "qzsUqcbEWmKuwh8PjeZr5MUmjYY=", - "timestamp": "2023-10-31T15:24:10.651984219Z", - "signature": "3F2pohlyn5/a82ElGuv+6YTfwIzkrVqmDP3/FEW3hXAsgMQz/1aP7yW9iCyx94eF9W9mB9xlVOxIGcAoM2JRBQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "tvrukfzGH52OF7ZiW2d37CV19LQ=", - "timestamp": "2023-10-31T15:24:10.453433366Z", - "signature": "y/1sBa0uum7Sq/hdlKcfVPthHbVhgxIg+RRYaPUknQ8q2z8jvXRSAA05hA4JUar9TRihrdmEJcGoXcys7hDXAQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "7OffCQCGuTJc2xyOmurLTfX/+3U=", - "timestamp": "2023-10-31T15:24:10.466367071Z", - "signature": "5xjnUXKZ082VPrlqZy/Y8y8IOnrAM/Y1OH5ddeGZ3KHcMoRR/3ICzKMsZz4IGJriEtmQih9Yl5L6cc7xiJq6Bg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "2TR01hmM281W4O7UJVvYUcLmQCM=", - "timestamp": "2023-10-31T15:24:10.476785060Z", - "signature": "pvADZnTrjI7N7KLNMcnjqBLJffAzg0a55nHr3SowBZTmBKAWf8WSZtFLenQmTdGdKctzWnzKQ+fzz3LImtrdBQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "sDghrNwKTp82/EJbhUSX8lERb2o=", - "timestamp": "2023-10-31T15:24:10.446614238Z", - "signature": "KKEl8hUrxfSGq3xpEmMZFmg5MJ3HbLgTk6ntQnNG5UA919pFu5DRYMuUucdjBkOU641T1EwKhMO/9JWQ1v+7Dw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "e89GcMp8/UN8lZV9BlpR5E6V6fU=", - "timestamp": "2023-10-31T15:24:10.502134351Z", - "signature": "JIFDMj7OQBvPRO+fcdEM+nfoWEb1NP1855nGx6xvO7QgWdl2th2RFf/jj1ZgH6vKntNsc1tF2e/d1CjiIzGRAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "l+EImAd5uWOemBcpcUbH1fAWrw0=", - "timestamp": "2023-10-31T15:24:10.443049968Z", - "signature": "iEvCwkfcjR4DP+BfUj+oyUzJaXySUVV47piw/E5sWdO4RAClEen/vA4lcp6qGIFeua1Ew6tHZJr7Oe3O0pSQAA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "7omTDMkayHI7gJujMPJzCET8h/Q=", - "timestamp": "2023-10-31T15:24:10.524384388Z", - "signature": "c5D75N8YHnvClQeXmJJeYa5kytcwZsPxOdvJ/EPqb8cI1eHgKR4He3jpfKJYr3geG9gj7TT2fGPinHssJvQWCA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Wv/4jj4laoSgyes0iwRMrbkSGXs=", - "timestamp": "2023-10-31T15:24:10.536311937Z", - "signature": "UFBfZb+azJXMM2O/t/UIZkF7dh/y/R8AC1Gan1z0HJ6EwiY83JS8S8PYAZ6Y5aGxbMNHjL37Y44n1OmF7OLUAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "ZKaZB9auGEUCUMeCD3xndsLAb8Y=", - "timestamp": "2023-10-31T15:24:10.492787427Z", - "signature": "rXWt9iZP58EdXsAo7NpMYolvDt+zdm0WXxlSo02raijH8NDA4MDc2LeQqB9MwuZgar3kxFfox9lc6nyeXDOZAA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "ao2tkiBeujSzc+j30qLVAGD/23g=", - "timestamp": "2023-10-31T15:24:10.449664759Z", - "signature": "ac8ylMh+s6sVEuVkWmBoQDh331y8PTXZNNSmpkfuHJCWDpQdV/2tHlQztJdNRReHbdznQU3Pyi4oYoouFlNaBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "kWXw41M+Bm1XSgazKsVOf653HYw=", - "timestamp": "2023-10-31T15:24:10.467041480Z", - "signature": "KAmGNl7Oysw9GvXmtOp0YUhI79o73LLv7UNHWVKPfnwWop03WYulIa8qmzOlMjsO40kopnue3ldfgQljbA1hAw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Y6YkRFpxpeGHMIVM5b4dnJPcrW4=", - "timestamp": "2023-10-31T15:24:10.582334952Z", - "signature": "AbVpmkqLtPitDaWKciyaPPdXCAntb8ruQvZ5zwzQkXAiEMFX+MeZX8oguQyCEclmnTJ46s3W5kCOO+KtINQ8BQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "FfehumsHcAsfU3yvyQdzfUPP9I8=", - "timestamp": "2023-10-31T15:24:08.506787980Z", - "signature": "YATLkIgbcQrQa5hVmniQsS9NPrnQ2j+VpiHZL7GOKPVIopJFKjCsy92ZKakuAWXEFKmTKsHn0tGNhbNR29khDw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "MYwYoiZUq1HWXwhZhTvEhdHhfyE=", - "timestamp": "2023-10-31T15:24:10.509900253Z", - "signature": "YOaZUi26DiOP1XGLdqauXuIe06jYLLsPW7lQMUXgKEev4W4W81t0adVQ/JFcc9uqhhVVgpqKA+0pv5aHLdaQAA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "rxV+9kQFXJhH+Q/4lslahIZ07Dg=", - "timestamp": "2023-10-31T15:24:10.405976137Z", - "signature": "yA4cjYoMDW2OXZAaq5JoEXpQnu3h6NBXY8BUtbvuiYqDBKSDRAU0VNtDxjw7rlQrzXwRu9dQmNZG8k4r48mYCg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "VP1QpV/twNkzhCGrMvCMmprWbL4=", - "timestamp": "2023-10-31T15:24:10.438795348Z", - "signature": "cP5OnDkvHzpf4ByMNPw5OcQjcmpWsCU8zdpvd5SGxxLBUH2ZVvX2VthWF9uXz98BNKFWlsNA4OkXqTjeNiBKCA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "UqkqDULZ2jXPl2tEEcOUBy5qee8=", - "timestamp": "2023-10-31T15:24:10.482381123Z", - "signature": "k5i6XdeEOdgVtWnc7AZcP6263didGSoxbZai/cCTuIsxTiGYJZsp/p7s2zmVA8ZaauXdGXcgCMTI2AKn1GaJBQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "o5MIWoskAc2d0BhcejVD0NlDIZM=", - "timestamp": "2023-10-31T15:24:10.461989240Z", - "signature": "ZF0fHO/JIImH1mqnK/KJKDk6juZn0oGTgbuGM8bnJBs2Zef8VkdsxG3/2l6QjaoeLPplxHjOQUdWK1EFkzINAQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_ABSENT", - "validator_address": null, - "timestamp": "0001-01-01T00:00:00Z", - "signature": null - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "XvSscAwxItw8UnOMh8Vd2pUyZFo=", - "timestamp": "2023-10-31T15:24:10.583700920Z", - "signature": "WM3VdE1yYAVamcAoFqMsvDzB7wkQO9FaEjtV/YGVDmr1EXzQSZGvedoErGaF+nvguyyn9GrQZHBUaj54NArTBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "98OoKsieARSxNrmTUulNok6XJDY=", - "timestamp": "2023-10-31T15:24:10.470245155Z", - "signature": "Gr7P0VRXR5jMFiUqkF8aaTPudJYX90rYRAXVC9WHlD9BRbLB8TNdeMMG1eLArAHVh37+o70LjaNqOUZvM58QDA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "oLTUnWNrNgVPxclHvJuTRmMzI5E=", - "timestamp": "2023-10-31T15:24:10.368800486Z", - "signature": "cEb+3D8DwkMBqc3BapCtxI2ocWa/QEEXI3eRt9tt9Q+IKYAkWuF28TDYSf8FbT9uCmZURJnMxlMJTHgA/zdUCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "t+IxG/lJOreT8eQ2aaPRWANCzGk=", - "timestamp": "2023-10-31T15:24:10.492178975Z", - "signature": "M2wkoeQWEP0XzXBchdVq1wgVkP5tfkRvq2m+hT8rRWrHjT0lIVjL61THApInADxve/HBMOQs6pyv5q+v5xfjBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "OPvFKLiCGi4dkkKk4uJvHUUjx24=", - "timestamp": "2023-10-31T15:24:10.559976693Z", - "signature": "3hoNiLVrRT28EukjEPoB8KgojHhvDQ975281P1dbbvRoDGQ2jJn1gjRTvdlE7731oyneRrs7J8sQ3mjkOdF4Bw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "mUUy9+0e+XJrL324YTt3vFpMjK4=", - "timestamp": "2023-10-31T15:24:10.519096528Z", - "signature": "BXeZMNodmgCCivRfr2lRauqqyDDjyn4eLX/3jpEtqPVlEdUo/WYjFsBjNZ0yJ5FfV3Rr1Rb+wMF5zsIlByVzCQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "1nLP7vanrmBdNx5zYQB9h/McWU0=", - "timestamp": "2023-10-31T15:24:10.495770653Z", - "signature": "vWKmw5juPbrH0i2papnjHKY0PSSxMI6o2J7HBiFoC9KhX+tYWjJC79bvvtp8b9R8tzd0u44sowwAXkOuxKDyAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "+iiIgJ10syyUdL/kinaAHWSmnKY=", - "timestamp": "2023-10-31T15:24:10.473277021Z", - "signature": "x8fd0oIlH+SVPL6ZMrFJAO2AVRC06JemsF5T0xtYry1womOQT2I1p9zfekzxwEgsyHlECkrhR+K3kt6NmulNAQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "g1Ls9i7899us3oUubZ/BoVg8FNM=", - "timestamp": "2023-10-31T15:24:10.454471431Z", - "signature": "jzx9nxYt65gxVJ2c7ePtLxbDw0mzZ6z6J29WP/dcBVlXgKdpNtB3UEiqTmqrwVnUODH9Ov1GdJD5liSUxWh1Bw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "P4nkVlnJZDyoMh7IpQlFU8ULbEw=", - "timestamp": "2023-10-31T15:24:10.480465343Z", - "signature": "8dQPsT6yxDlsDbsihI3nJblay/PiX0uS3PSUkAIXs//pKBhenHYU3nIq3Ay0XPwKKzMEqnmWAyEYj7jqKyYCCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "d3HZqvjMvvqnVA6GL0LUHCw0Ao0=", - "timestamp": "2023-10-31T15:24:10.451756276Z", - "signature": "lFEd3eUcN4Hcs6Uuqm1RvG3CPnM3ChPqlmLvPxxCy3tcL+BySVqEDAmaIllJlADNpCfhedDUuhfOWy4oO1seAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "JWBYtlcy7Hxri8RMX9JQIhE3mt8=", - "timestamp": "2023-10-31T15:24:10.453279371Z", - "signature": "4cvaJGg+hGGKeFuNLe/CP5FxzmKkrcXodXGG2hakHDJPMM8XsrTkE/nUwQ7XfMIyIKKcUItTQeFerjrNHobqBQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "m4rFXdOLGYXMKfo7sWpJyK1x810=", - "timestamp": "2023-10-31T15:24:10.504380355Z", - "signature": "vx4baMOaVdUluiNJN3Pb9SW7CGQhg7WDbi8Rw35coykz6YYkA/aB99wkF2qqHB1V784bEx1gw7EliGUXQer4AA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Ioh+9fP99KBDrFtpgxDEXo/H/GI=", - "timestamp": "2023-10-31T15:24:10.504272141Z", - "signature": "Uh2ke3OYiBwR4VD7YAgrFtrF969lXajXTfIwhHSc+8Vz8eClX15uhr04zeXJ3WMEKer8Rd8kv9Hgh2YIK+/8Bg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "Nl0dboaw3mYobqYkwXzgnU2I2gE=", - "timestamp": "2023-10-31T15:24:10.477033796Z", - "signature": "vL4clrc5S/xWkuHVWQxR7lDEBPUnTSnyPQ28wjKrW7CIRX5GVglC7gpIsGAcKucQsQIzAZ3txG3hsHC/K4JWBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "NvN1An1BvNMoyvyJprduOUmYvnQ=", - "timestamp": "2023-10-31T15:24:10.499483915Z", - "signature": "MjQFx1yxQeBb0XCRSuTv3NkAM9K2Wox9SYUySyORADNpk0vphG25EMqDYJ9ayoistrT3ZmUvkPADQp0PB7c2CA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "YuSHApmlH9MJK8Ds1SIrwYluuos=", - "timestamp": "2023-10-31T15:24:10.485839171Z", - "signature": "UY+CoSKvN5EwxkPPKKPPS/RlM3ZPsByDu1ognnrNFlllh3vPamSjoFk0qCgmKTPT+3POtXhGtxhoOEBqnM4YBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "ayxjhy9tNAKutbYWtjroOYLWtfY=", - "timestamp": "2023-10-31T15:24:10.451214075Z", - "signature": "NLdnhBMiJYSibiGKDbsSd+FnvXyMwwHcTLoJGDzYgIKGZnKxT1X90r7tRETkdSlyhnYNpVGmp6YGmV9iIdwJDw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "GcYzcCsCUggqQQyBREMzrWv4FN8=", - "timestamp": "2023-10-31T15:24:10.488433591Z", - "signature": "mQXNiOSLSDUZFmec5rMVUJL3Yu5tSdnHgI8h25NiSKmtQevxs7soMhv0geldYkesbqFScu1/vxtCFKY8diE+Bg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "reA42PZ+OIcQwB9j/aV0MvMC4Ik=", - "timestamp": "2023-10-31T15:24:10.585367155Z", - "signature": "8pZ5Rb7afU9OG+dEcDlhOa8FACAPEaW6eex1BiMuwxzSd6n6UN8l4PgGomj5Vjh5zAgDnlw4vM22te3wfkGOBQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "x0tw4y/Dp74KSTlOJ5pfoCNRavc=", - "timestamp": "2023-10-31T15:24:10.529528450Z", - "signature": "6niorpE3J4bkmylK/iKJr41LZhAQjaRontknTNxLwjEfzd7J8IouGx14d9TGWGQ9hP3lOgWwj/2Ke4kQ7iSODw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "csaN7GzroqkNSs/BCX3TnscWanI=", - "timestamp": "2023-10-31T15:24:10.474462406Z", - "signature": "2dQIuUfVetl0wzi84p7MNhJo9YZj8SmqgR6JMpOiNSg4uBztFGmUwtzAWsz+vTEcs6lfoq9ebKx2IEcjietrAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "03l8gutjvKaeEkCx/8eslC1tQyc=", - "timestamp": "2023-10-31T15:24:10.404978212Z", - "signature": "irV8b+QqNvXOA0lCzAhJ1pcXdJa9Z0DXPAl2L++wGSpH3rNrWigNGFsd3UICs5Klzz/jy0W2xfR1uX2G7yBTCA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "pGD3qYaOPDGPvo9ClmWi6BrkRzE=", - "timestamp": "2023-10-31T15:24:10.543490359Z", - "signature": "5p3qgY16ShAv/RAxD/DG42MwHzSKzVBUYF1oCIMlXVwiCL2Wr8ynqsufqGQEI3sNOSAIdrmBpFoMpv9S5RQBCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "KviULpBzi/bUVb5JDhdq1CCpwNQ=", - "timestamp": "2023-10-31T15:24:10.412231383Z", - "signature": "ZtMx5KB7ag/aQpOlUweaztJCdtBz4NNW3LvpQORLEj3uvc7rMSIj3Ti4dh84QD5Z8fFMxge+382ErV3jJ8p6Dw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "UG2vcGsU6sU7B8rKdJuhaIfdz4A=", - "timestamp": "2023-10-31T15:24:10.417035850Z", - "signature": "yAimFfHW12tPsfi/NcDwEX4Q5a7/4YpBAV65wR2tJIFp2BxB0LRjzS2rGV+SAKXl2pHQmG8YeQ1n0Tnsu+ZoDg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "EmQDosqjbb3g+2SnrnLtgpeTZvc=", - "timestamp": "2023-10-31T15:24:10.459811131Z", - "signature": "QDZAMMNV3p4leqddtPBlLeo9Fg9O5WoBlaP+7rBFQvTNn2Ci6msqGXjyHtPuvCt0uEd+5ANNeT72b/2sS647Ag==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "/CteRs4eqYw9QCPXTN/CBPAnuCc=", - "timestamp": "2023-10-31T15:24:10.454033411Z", - "signature": "6o9vZbozBo63kYUewoWiJQJsOsmGb2N/pqogmgq4DOw50Qz4cELUNT9gP2/aG5lX7YvYgvBa4tf2Os1liH/+Bg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "ot1ek5Hlvcfy24maeFZPrAwHo8o=", - "timestamp": "2023-10-31T15:24:10.565205293Z", - "signature": "IndTPFggfyn2It4bdjYD/Gnv4VfCFRBCA2zm8N6F7jnMrI+YlZsV6Xs3sr6zziBA01+xVJchsQPkZyXQ/TgyCQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "g0BkH0iF8pBPcz8IDP/XSbddm5M=", - "timestamp": "2023-10-31T15:24:10.518935595Z", - "signature": "V0EmXLPm41HEgXqL5dR7t3ZzndbONQMZ9YOh1XH7KKmr4nOB+gF8ptQnWOg+DsQh545M8TBJbYo1G/E0ZL1aCg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "JvnQvD9BWW0qhXmEtl3IXQMJROI=", - "timestamp": "2023-10-31T15:24:10.612709776Z", - "signature": "ueQkua4em5tv2uwCDic29nvgvd+ARaEm/SqvQ2JzIMekAx5tE1xUioeerx4pmRp3pLVqmDTu5lGsmBco5sh8Bg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "5l1yuJy++ab0Gcm95sl1qgvyGpc=", - "timestamp": "2023-10-31T15:24:10.497913501Z", - "signature": "wHLHFudWP4cKp1bbQr8mdbrW7/UVW0g0QX7EZ0P6zs2UG9irq5NQSxBUK+MZ+ozh2HTbABFPctk6+W/iy8UsAw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "INGg+avF6+4WBQfmuXlIZwZHG6E=", - "timestamp": "2023-10-31T15:24:10.421017415Z", - "signature": "A8HJMwhE2gfRNY7T1WQmifCQwQQuaADyk7mos1azztZHEz7zZNIddo5lUGcddGJMODKmn3f5ICT8rIOPYcOYCQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "0pFREoO+6ae5G9Ii5A8Jp01K9Vg=", - "timestamp": "2023-10-31T15:24:10.502984812Z", - "signature": "dL3QQIdTLP2weLB3KJJ+ncpWpZ93TOM+it6jUao5lg0Xuv/cRxqSOekW1E8zHp3IFijY15FMw8OmXq/RAeVkAg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "4t3FDes/VqpY8p6x67RjGmhPdoQ=", - "timestamp": "2023-10-31T15:24:10.500609319Z", - "signature": "Hi+/CnC/MA5TgBKXRqeyfoyByoYzw7fy4P/PDAkiS9O3BLvHvKlxTaiaQPN0fhcClzs6KPvwiwIt3TF0gFOlCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "VAfMBR7R9/W+jsyFawYRIbsXDXk=", - "timestamp": "2023-10-31T15:24:10.460851029Z", - "signature": "1qTKQ1Q10ZoCuEoVM/2pySMfwXGP2RtjHOhMyYjJgePpHBDKi59t93B9ct+GtCUiWg31xrG5dO8ggK2oNwoWBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "0LVTNfZSTNztPT8IUt0rXyIEffA=", - "timestamp": "2023-10-31T15:24:10.477415126Z", - "signature": "a7hwFi6ujqCtSq4EpIJonWGWYJQe2wdXeh4px5o660eD5tYXMORHPuLQpKzqV8l6TtrHGRU3VcZFtsfQrq6tBw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "V+y15rtM++CFQblx3CQPM+7IgL0=", - "timestamp": "2023-10-31T15:24:10.585263544Z", - "signature": "havhksUs3zU6Ym0qHA8pfa1K6nPRw1kkV9cqtMAO6FNTtcOUjnpYj028AzIqHpGTvCxqUOpwCMX0g2zHhV+kDA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "0uf5m1aGmEQRA9fFJ+nRFvBcmZk=", - "timestamp": "2023-10-31T15:24:10.556882998Z", - "signature": "pxXkJmHWdy5icNFLgFgLSok5mi3PeEwkkQ0Pxrxt/26JgeSav8Zuy10aru0rDsjsy/L+wQUgVbo8P2cTb0eEAQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "DYpkS/WM/GDP+/xarDoNYbLX7WE=", - "timestamp": "2023-10-31T15:24:10.442343312Z", - "signature": "ZPJFFzy3HctggO5WY/QbrqO/YyCAI8jUItmM94Ognrw3YZ0z2GcVu704NuCItw6w6E1ZAHK1dXkIPzFy6bSSDw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "IKzh8ZwGXIYFmsXDZRUPcFECzcI=", - "timestamp": "2023-10-31T15:24:10.462043126Z", - "signature": "/L/uX5GLCJTpkb5G6g+ninBfv84hSSITddKikgKdJBCWbgquWA5zkIl+WtVjKukj/IYVIMPST/blLNsQ7/fdBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "FlAUb0eKYJbk+YCANkb8juPDYQM=", - "timestamp": "2023-10-31T15:24:10.446018907Z", - "signature": "IuZyCCIjPbnI6FQepIPs10iERsOKF5vEuIlYqkX5V9nkCjzStn9H84krpxoQruxBbReNVERQugNj2GpVTx0UCQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "U+4nF0WnN5xfGjVOVMXUHoDfm/Q=", - "timestamp": "2023-10-31T15:24:10.439780992Z", - "signature": "9Wd/UrdZyb5y4wD2bLtdVqxQtpMXhUQ70XYzmenfM7hNX2IjXSe01/zcySx6U8F9kz4Y4WzXhYPVbsqIe3+BBg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "H+UHbrIJC6ui9lfs+jrT8mbuP8Y=", - "timestamp": "2023-10-31T15:24:10.479177769Z", - "signature": "vhpthS9ricvyf8TAw76aqW++Xq9sW4ysvPQZaYA9tcs3PPZB3xpvLE/I06rOyC0qNZdJeZ/uMU3Wijy1mSV8Dg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "lg4RNeZYmqwM+xquZJW8C6IKhK4=", - "timestamp": "2023-10-31T15:24:10.502231555Z", - "signature": "Hh587jNlE8bZoSYwCIdfpdOdMwGDL2seWhfQFJ+9chMzjiJq5R/81aWqCaRYFhoZBGq3co6Yj3dVp66UCVZKCA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "tSww3sU64wdJkgZz7w/16Q0er/0=", - "timestamp": "2023-10-31T15:24:10.481022031Z", - "signature": "NT4e/G9stYU3uj9/58x8Usap+cCj3BL6ihgTUl+1wozFRcfenJSJbZnWKgyAP3bdB8D/UgfcPptc6EQ302sHDg==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "qm3nSGvh7KWq4pKYB7Q/U9mC35Y=", - "timestamp": "2023-10-31T15:24:10.506441168Z", - "signature": "j3eQVVdAWUirXzpHNMqr04KKQabD+63nnby+RqeOknNbuHU5+ifiU1Lvo2/39QUNtn9IZyiKIjLPUE/5mvxyBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "87nu5eEQn48fjSwOsylN8g+eGl0=", - "timestamp": "2023-10-31T15:24:10.477923220Z", - "signature": "r7fGqjzld5KyzgQ/Epd3v6S2TIA7HNlJ9cxJYGbPAs2lN/SuqnXfkzovy54BNsPH0ZOKjrZcut22MaplMDO6Dw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "QPYyBjVq/5c6YgQXjtwWD+WjMWs=", - "timestamp": "2023-10-31T15:24:10.486109179Z", - "signature": "+rHT3GuyM8Aviqwke2+Ck9Y7L6Qg+UYRWxVnSeskZE0yyDI024EoM1Acqat3wvXv9ozqzAJJR/32CXBh9MI7AQ==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "IevUUpRIaw8BCbd+PD4opUyHQ28=", - "timestamp": "2023-10-31T15:24:10.458383587Z", - "signature": "zHgLgFF/tHoBcyAwRv+twPZ0RQOeH+PUNQa/77UEKimFq3sAqnrBd+85W7Dskic5h6TST5ntEiex/0py7bQkCw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "J2o1WsZ7bb0aRTNcKFRDacwMHuY=", - "timestamp": "2023-10-31T15:24:10.517722577Z", - "signature": "sjc9bKZ6PLgiL2DmluJhrCoHBxVH1Jz9WJxivOjvJpOs/uaurL3fB4wTF1VazGh2ppyDLtN2qrkZgc88g18QBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "i8pn0pK7hrzW44igdRAtiKRrp+s=", - "timestamp": "2023-10-31T15:24:10.467455214Z", - "signature": "SGm/7GeS9Nwspzx6X/Cq7nWabu6wIsKb2z5gZ8UN3ZRvy+P97ZcMt3yX+waAvu60RlhO95ZwCo1TZcC9rRfsBA==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "nhfbvvcp1R0vq3dII0N4NXLKKn0=", - "timestamp": "2023-10-31T15:24:10.412664423Z", - "signature": "wUvxuEX/GNLlCEB/KRKU5QtZzRNhzleBud/B3vEg4VX41nZYfp7Ohedp5eq9kxYjf0UKwJm1U9O3tZ4N8IN8Cw==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "THFXsCNNkEy9FtmT5N2OqVoHAw8=", - "timestamp": "2023-10-31T15:24:10.422253905Z", - "signature": "jaOReCBkX4wlPgaQg9bFMBDrfPyaRnWfulvw6KEVmUW3qSALocUHPc0h9zXjgImAG0jcuvjzp2ywAdQAy/04Ag==" - }, - { - "block_id_flag": "BLOCK_ID_FLAG_COMMIT", - "validator_address": "zktsysg1rTc4dR4URQAQk9t9jQ8=", - "timestamp": "2023-10-31T15:24:10.466320601Z", - "signature": "/H3JjSj7K4hNsQ6Y8nDJxKz0fa40sXsA082ORX8rHVc16V6Nl3hdbcx0h13kJn9+X1CsVVYEfMFCF1Gn0mPLDQ==" - } - ] - } - } -} diff --git a/x/blob/types/blob_tx.go b/x/blob/types/blob_tx.go deleted file mode 100644 index 249c37b574..0000000000 --- a/x/blob/types/blob_tx.go +++ /dev/null @@ -1,128 +0,0 @@ -package types - -import ( - "bytes" - - "github.com/celestiaorg/go-square/blob" - "github.com/celestiaorg/go-square/inclusion" - appns "github.com/celestiaorg/go-square/namespace" - shares "github.com/celestiaorg/go-square/shares" - "github.com/cosmos/cosmos-sdk/client" - "github.com/tendermint/tendermint/crypto/merkle" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" -) - -// NewBlob creates a new coretypes.Blob from the provided data after performing -// basic stateless checks over it. -func NewBlob(ns appns.Namespace, data []byte, shareVersion uint8) (*blob.Blob, error) { - err := ValidateBlobNamespace(ns) - if err != nil { - return nil, err - } - - if len(data) == 0 { - return nil, ErrZeroBlobSize - } - - return &blob.Blob{ - NamespaceId: ns.ID, - Data: data, - ShareVersion: uint32(shareVersion), - NamespaceVersion: uint32(ns.Version), - }, nil -} - -// ValidateBlobTx performs stateless checks on the BlobTx to ensure that the -// blobs attached to the transaction are valid. -func ValidateBlobTx(txcfg client.TxEncodingConfig, bTx *blob.BlobTx, subtreeRootThreshold int) error { - if bTx == nil { - return ErrNoBlobs - } - - sdkTx, err := txcfg.TxDecoder()(bTx.Tx) - if err != nil { - return err - } - - // TODO: remove this check once support for multiple sdk.Msgs in a BlobTx is - // supported. - msgs := sdkTx.GetMsgs() - if len(msgs) != 1 { - return ErrMultipleMsgsInBlobTx - } - msg := msgs[0] - msgPFB, ok := msg.(*MsgPayForBlobs) - if !ok { - return ErrNoPFB - } - err = msgPFB.ValidateBasic() - if err != nil { - return err - } - - // perform basic checks on the blobs - sizes := make([]uint32, len(bTx.Blobs)) - for i, pblob := range bTx.Blobs { - sizes[i] = uint32(len(pblob.Data)) - } - err = ValidateBlobs(bTx.Blobs...) - if err != nil { - return err - } - - // check that the sizes in the blobTx match the sizes in the msgPFB - if !equalSlices(sizes, msgPFB.BlobSizes) { - return ErrBlobSizeMismatch.Wrapf("actual %v declared %v", sizes, msgPFB.BlobSizes) - } - - for i, ns := range msgPFB.Namespaces { - msgPFBNamespace, err := appns.From(ns) - if err != nil { - return err - } - - // this not only checks that the pfb namespaces match the ones in the blobs - // but that the namespace version and namespace id are valid - blobNamespace, err := appns.New(uint8(bTx.Blobs[i].NamespaceVersion), bTx.Blobs[i].NamespaceId) - if err != nil { - return err - } - - if !bytes.Equal(blobNamespace.Bytes(), msgPFBNamespace.Bytes()) { - return ErrNamespaceMismatch.Wrapf("%v %v", blobNamespace.Bytes(), msgPFB.Namespaces[i]) - } - } - - // verify that the commitment of the blob matches that of the msgPFB - for i, commitment := range msgPFB.ShareCommitments { - calculatedCommit, err := inclusion.CreateCommitment(bTx.Blobs[i], merkle.HashFromByteSlices, subtreeRootThreshold) - if err != nil { - return ErrCalculateCommitment - } - if !bytes.Equal(calculatedCommit, commitment) { - return ErrInvalidShareCommitment - } - } - - return nil -} - -func BlobTxSharesUsed(btx tmproto.BlobTx) int { - sharesUsed := 0 - for _, blob := range btx.Blobs { - sharesUsed += shares.SparseSharesNeeded(uint32(len(blob.Data))) - } - return sharesUsed -} - -func equalSlices[T comparable](a, b []T) bool { - if len(a) != len(b) { - return false - } - for i := range a { - if a[i] != b[i] { - return false - } - } - return true -} diff --git a/x/blob/types/blob_tx_test.go b/x/blob/types/blob_tx_test.go deleted file mode 100644 index 1964edde33..0000000000 --- a/x/blob/types/blob_tx_test.go +++ /dev/null @@ -1,248 +0,0 @@ -package types_test - -import ( - "bytes" - "testing" - - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/blob" - "github.com/celestiaorg/go-square/inclusion" - "github.com/celestiaorg/go-square/merkle" - "github.com/celestiaorg/go-square/namespace" - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - tmrand "github.com/tendermint/tendermint/libs/rand" -) - -func TestNewBlob(t *testing.T) { - rawBlob := []byte{1} - validBlob, err := types.NewBlob(namespace.RandomBlobNamespace(), rawBlob, appconsts.ShareVersionZero) - require.NoError(t, err) - require.Equal(t, validBlob.Data, rawBlob) - - _, err = types.NewBlob(namespace.TxNamespace, rawBlob, appconsts.ShareVersionZero) - require.Error(t, err) - - _, err = types.NewBlob(namespace.RandomBlobNamespace(), []byte{}, appconsts.ShareVersionZero) - require.Error(t, err) -} - -func TestValidateBlobTx(t *testing.T) { - encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - signer, err := testnode.NewOfflineSigner() - require.NoError(t, err) - ns1 := namespace.MustNewV0(bytes.Repeat([]byte{0x01}, namespace.NamespaceVersionZeroIDSize)) - acc := signer.Account(testfactory.TestAccName) - require.NotNil(t, acc) - addr := acc.Address() - - type test struct { - name string - getTx func() *blob.BlobTx - expectedErr error - } - - validRawBtx := func() []byte { - btx := blobfactory.RandBlobTxsWithNamespacesAndSigner( - signer, - []namespace.Namespace{ns1}, - []int{10}, - )[0] - return btx - } - - tests := []test{ - { - name: "normal transaction", - getTx: func() *blob.BlobTx { - rawBtx := validRawBtx() - btx, _ := blob.UnmarshalBlobTx(rawBtx) - return btx - }, - expectedErr: nil, - }, - { - name: "invalid transaction, mismatched namespace", - getTx: func() *blob.BlobTx { - rawBtx := validRawBtx() - btx, _ := blob.UnmarshalBlobTx(rawBtx) - btx.Blobs[0].NamespaceId = namespace.RandomBlobNamespace().ID - return btx - }, - expectedErr: types.ErrNamespaceMismatch, - }, - { - name: "invalid transaction, no pfb", - getTx: func() *blob.BlobTx { - sendTx := blobfactory.GenerateManyRawSendTxs(signer, 1) - b, err := types.NewBlob(namespace.RandomBlobNamespace(), tmrand.Bytes(100), appconsts.ShareVersionZero) - require.NoError(t, err) - return &blob.BlobTx{ - Tx: sendTx[0], - Blobs: []*blob.Blob{b}, - } - }, - expectedErr: types.ErrNoPFB, - }, - { - name: "mismatched number of pfbs and blobs", - getTx: func() *blob.BlobTx { - rawBtx := validRawBtx() - btx, _ := blob.UnmarshalBlobTx(rawBtx) - blob, err := types.NewBlob(namespace.RandomBlobNamespace(), tmrand.Bytes(100), appconsts.ShareVersionZero) - require.NoError(t, err) - btx.Blobs = append(btx.Blobs, blob) - return btx - }, - expectedErr: types.ErrBlobSizeMismatch, - }, - { - name: "invalid share commitment", - getTx: func() *blob.BlobTx { - b, err := types.NewBlob(namespace.RandomBlobNamespace(), tmrand.Bytes(100), appconsts.ShareVersionZero) - require.NoError(t, err) - msg, err := types.NewMsgPayForBlobs( - addr.String(), - appconsts.LatestVersion, - b, - ) - require.NoError(t, err) - - badCommit, err := inclusion.CreateCommitment( - &blob.Blob{ - NamespaceVersion: uint32(namespace.RandomBlobNamespace().Version), - NamespaceId: namespace.RandomBlobNamespace().ID, - Data: tmrand.Bytes(99), - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - merkle.HashFromByteSlices, - appconsts.DefaultSubtreeRootThreshold, - ) - require.NoError(t, err) - - msg.ShareCommitments[0] = badCommit - - rawTx, err := signer.CreateTx([]sdk.Msg{msg}) - require.NoError(t, err) - - btx := &blob.BlobTx{ - Tx: rawTx, - Blobs: []*blob.Blob{b}, - } - return btx - }, - expectedErr: types.ErrInvalidShareCommitment, - }, - { - name: "complex transaction with one send and one pfb", - getTx: func() *blob.BlobTx { - sendMsg := banktypes.NewMsgSend(addr, addr, sdk.NewCoins(sdk.NewCoin(app.BondDenom, sdk.NewInt(10)))) - tx := blobfactory.ComplexBlobTxWithOtherMsgs( - t, - tmrand.NewRand(), - signer, - sendMsg, - ) - btx, isBlob := blob.UnmarshalBlobTx(tx) - require.True(t, isBlob) - return btx - }, - expectedErr: types.ErrMultipleMsgsInBlobTx, - }, - { - name: "only send tx", - getTx: func() *blob.BlobTx { - sendtx := blobfactory.GenerateManyRawSendTxs(signer, 1)[0] - return &blob.BlobTx{ - Tx: sendtx, - } - }, - expectedErr: types.ErrNoPFB, - }, - { - name: "normal transaction with two blobs w/ different namespaces", - getTx: func() *blob.BlobTx { - rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), - blobfactory.RandBlobsWithNamespace( - []namespace.Namespace{namespace.RandomBlobNamespace(), namespace.RandomBlobNamespace()}, - []int{100, 100})) - require.NoError(t, err) - btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) - require.True(t, isBlobTx) - return btx - }, - expectedErr: nil, - }, - { - name: "normal transaction with two large blobs w/ different namespaces", - getTx: func() *blob.BlobTx { - rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), - blobfactory.RandBlobsWithNamespace( - []namespace.Namespace{namespace.RandomBlobNamespace(), namespace.RandomBlobNamespace()}, - []int{100000, 1000000}), - ) - require.NoError(t, err) - btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) - require.True(t, isBlobTx) - return btx - }, - expectedErr: nil, - }, - { - name: "normal transaction with two blobs w/ same namespace", - getTx: func() *blob.BlobTx { - ns := namespace.RandomBlobNamespace() - rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), - blobfactory.RandBlobsWithNamespace( - []namespace.Namespace{ns, ns}, - []int{100, 100}), - ) - require.NoError(t, err) - btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) - require.True(t, isBlobTx) - return btx - }, - expectedErr: nil, - }, - { - name: "normal transaction with one hundred blobs of the same namespace", - getTx: func() *blob.BlobTx { - count := 100 - ns := namespace.RandomBlobNamespace() - sizes := make([]int, count) - namespaces := make([]namespace.Namespace, count) - for i := 0; i < count; i++ { - sizes[i] = 100 - namespaces[i] = ns - } - rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), - blobfactory.RandBlobsWithNamespace( - namespaces, - sizes, - )) - require.NoError(t, err) - btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) - require.True(t, isBlobTx) - return btx - }, - expectedErr: nil, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := types.ValidateBlobTx(encCfg.TxConfig, tt.getTx(), appconsts.DefaultSubtreeRootThreshold) - if tt.expectedErr != nil { - assert.ErrorIs(t, err, tt.expectedErr, tt.name) - } - }) - } -} diff --git a/x/blob/types/codec.go b/x/blob/types/codec.go deleted file mode 100644 index ad1b11d783..0000000000 --- a/x/blob/types/codec.go +++ /dev/null @@ -1,33 +0,0 @@ -package types - -import ( - "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/msgservice" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -var ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) - -func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgPayForBlobs{}, URLMsgPayForBlobs, nil) -} - -func RegisterInterfaces(registry codectypes.InterfaceRegistry) { - registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgPayForBlobs{}, - ) - - registry.RegisterInterface( - "cosmos.auth.v1beta1.BaseAccount", - (*authtypes.AccountI)(nil), - ) - - registry.RegisterImplementations( - (*authtypes.AccountI)(nil), - &authtypes.BaseAccount{}, - ) - - msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) -} diff --git a/x/blob/types/errors.go b/x/blob/types/errors.go deleted file mode 100644 index fd97105532..0000000000 --- a/x/blob/types/errors.go +++ /dev/null @@ -1,39 +0,0 @@ -package types - -// DONTCOVER - -import ( - "cosmossdk.io/errors" -) - -var ( - ErrReservedNamespace = errors.Register(ModuleName, 11110, "cannot use reserved namespace IDs") - ErrInvalidNamespaceLen = errors.Register(ModuleName, 11111, "invalid namespace length") - ErrInvalidDataSize = errors.Register(ModuleName, 11112, "data must be multiple of shareSize") - ErrBlobSizeMismatch = errors.Register(ModuleName, 11113, "actual blob size differs from that specified in the MsgPayForBlob") - ErrCommittedSquareSizeNotPowOf2 = errors.Register(ModuleName, 11114, "committed to invalid square size: must be power of two") - ErrCalculateCommitment = errors.Register(ModuleName, 11115, "unexpected error calculating commitment for share") - ErrInvalidShareCommitment = errors.Register(ModuleName, 11116, "invalid commitment for share") - ErrParitySharesNamespace = errors.Register(ModuleName, 11117, "cannot use parity shares namespace ID") - ErrTailPaddingNamespace = errors.Register(ModuleName, 11118, "cannot use tail padding namespace ID") - ErrTxNamespace = errors.Register(ModuleName, 11119, "cannot use transaction namespace ID") - ErrInvalidShareCommitments = errors.Register(ModuleName, 11122, "invalid share commitments: all relevant square sizes must be committed to") - ErrUnsupportedShareVersion = errors.Register(ModuleName, 11123, "unsupported share version") - ErrZeroBlobSize = errors.Register(ModuleName, 11124, "cannot use zero blob size") - ErrMismatchedNumberOfPFBorBlob = errors.Register(ModuleName, 11125, "mismatched number of blobs per MsgPayForBlob") - ErrNoPFB = errors.Register(ModuleName, 11126, "no MsgPayForBlobs found in blob transaction") - ErrNamespaceMismatch = errors.Register(ModuleName, 11127, "namespace of blob and its respective MsgPayForBlobs differ") - ErrProtoParsing = errors.Register(ModuleName, 11128, "failure to parse a transaction from its protobuf representation") - ErrMultipleMsgsInBlobTx = errors.Register(ModuleName, 11129, "not yet supported: multiple sdk.Msgs found in BlobTx") - ErrMismatchedNumberOfPFBComponent = errors.Register(ModuleName, 11130, "number of each component in a MsgPayForBlobs must be identical") - ErrNoBlobs = errors.Register(ModuleName, 11131, "no blobs provided") - ErrNoNamespaces = errors.Register(ModuleName, 11132, "no namespaces provided") - ErrNoShareVersions = errors.Register(ModuleName, 11133, "no share versions provided") - ErrNoBlobSizes = errors.Register(ModuleName, 11134, "no blob sizes provided") - ErrNoShareCommitments = errors.Register(ModuleName, 11135, "no share commitments provided") - ErrInvalidNamespace = errors.Register(ModuleName, 11136, "invalid namespace") - ErrInvalidNamespaceVersion = errors.Register(ModuleName, 11137, "invalid namespace version") - // ErrTotalBlobSize is deprecated, use ErrBlobsTooLarge instead. - ErrTotalBlobSizeTooLarge = errors.Register(ModuleName, 11138, "total blob size too large") - ErrBlobsTooLarge = errors.Register(ModuleName, 11139, "blob(s) too large") -) diff --git a/x/blob/types/estimate_gas_test.go b/x/blob/types/estimate_gas_test.go deleted file mode 100644 index bfeaec94f9..0000000000 --- a/x/blob/types/estimate_gas_test.go +++ /dev/null @@ -1,110 +0,0 @@ -package types_test - -import ( - "fmt" - "testing" - - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/pkg/user" - testutil "github.com/celestiaorg/celestia-app/v2/test/util" - "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - "github.com/celestiaorg/go-square/blob" - "github.com/stretchr/testify/require" - - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" - abci "github.com/tendermint/tendermint/abci/types" - tmrand "github.com/tendermint/tendermint/libs/rand" -) - -func TestPFBGasEstimation(t *testing.T) { - encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - rand := tmrand.NewRand() - - testCases := []struct { - blobSizes []int - }{ - {blobSizes: []int{1}}, - {blobSizes: []int{100, 100, 100}}, - {blobSizes: []int{1020, 2099, 96, 4087, 500}}, - {blobSizes: []int{12074}}, - {blobSizes: []int{36908}}, - {blobSizes: []int{100, 100, 100, 1000, 1000, 10000, 100, 100, 100, 100}}, - {blobSizes: []int{1099704}}, - } - for idx, tc := range testCases { - t.Run(fmt.Sprintf("case %d", idx), func(t *testing.T) { - accnts := testfactory.GenerateAccounts(1) - testApp, kr := testutil.SetupTestAppWithGenesisValSet(app.DefaultInitialConsensusParams(), accnts...) - signer, err := user.NewSigner(kr, encCfg.TxConfig, testutil.ChainID, appconsts.LatestVersion, user.NewAccount(accnts[0], 1, 0)) - require.NoError(t, err) - blobs := blobfactory.ManyRandBlobs(rand, tc.blobSizes...) - gas := blobtypes.DefaultEstimateGas(toUint32(tc.blobSizes)) - tx, _, err := signer.CreatePayForBlobs(accnts[0], blobs, user.SetGasLimitAndGasPrice(gas, appconsts.DefaultMinGasPrice)) - require.NoError(t, err) - blobTx, ok := blob.UnmarshalBlobTx(tx) - require.True(t, ok) - resp := testApp.DeliverTx(abci.RequestDeliverTx{ - Tx: blobTx.Tx, - }) - require.EqualValues(t, 0, resp.Code, resp.Log) - require.Less(t, resp.GasUsed, int64(gas)) - }) - } -} - -func toUint32(arr []int) []uint32 { - res := make([]uint32, len(arr)) - for i, v := range arr { - res[i] = uint32(v) - } - return res -} - -func FuzzPFBGasEstimation(f *testing.F) { - var ( - numBlobs = 3 - maxBlobSize = 418 - seed = int64(9001) - ) - encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - f.Add(numBlobs, maxBlobSize, seed) - f.Fuzz(func(t *testing.T, numBlobs, maxBlobSize int, seed int64) { - if numBlobs <= 0 || maxBlobSize <= 0 { - t.Skip() - } - rand := tmrand.NewRand() - rand.Seed(seed) - blobSizes := randBlobSize(rand, numBlobs, maxBlobSize) - - accnts := testfactory.GenerateAccounts(1) - testApp, kr := testutil.SetupTestAppWithGenesisValSet(app.DefaultConsensusParams(), accnts...) - signer, err := user.NewSigner(kr, encCfg.TxConfig, testutil.ChainID, appconsts.LatestVersion, user.NewAccount(accnts[0], 1, 0)) - require.NoError(t, err) - blobs := blobfactory.ManyRandBlobs(rand, blobSizes...) - gas := blobtypes.DefaultEstimateGas(toUint32(blobSizes)) - tx, _, err := signer.CreatePayForBlobs(accnts[0], blobs, user.SetGasLimitAndGasPrice(gas, appconsts.DefaultMinGasPrice)) - require.NoError(t, err) - blobTx, ok := blob.UnmarshalBlobTx(tx) - require.True(t, ok) - resp := testApp.DeliverTx(abci.RequestDeliverTx{ - Tx: blobTx.Tx, - }) - require.EqualValues(t, 0, resp.Code, resp.Log) - require.Less(t, resp.GasUsed, int64(gas)) - }) -} - -func randBlobSize(rand *tmrand.Rand, numBlobs, maxBlobSize int) []int { - res := make([]int, numBlobs) - for i := 0; i < numBlobs; i++ { - if maxBlobSize == 1 { - res[i] = 1 - continue - } - res[i] = rand.Intn(maxBlobSize-1) + 1 - } - return res -} diff --git a/x/blob/types/event.pb.go b/x/blob/types/event.pb.go deleted file mode 100644 index 3f6b1f2019..0000000000 --- a/x/blob/types/event.pb.go +++ /dev/null @@ -1,487 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/event.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// EventPayForBlobs defines an event that is emitted after a pay for blob has -// been processed. -type EventPayForBlobs struct { - Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` - BlobSizes []uint32 `protobuf:"varint,2,rep,packed,name=blob_sizes,json=blobSizes,proto3" json:"blob_sizes,omitempty"` - // namespaces is a list of namespaces that the blobs in blob_sizes belong to. - // A namespace has length of 29 bytes where the first byte is the - // namespaceVersion and the subsequent 28 bytes are the namespaceID. - Namespaces [][]byte `protobuf:"bytes,3,rep,name=namespaces,proto3" json:"namespaces,omitempty"` -} - -func (m *EventPayForBlobs) Reset() { *m = EventPayForBlobs{} } -func (m *EventPayForBlobs) String() string { return proto.CompactTextString(m) } -func (*EventPayForBlobs) ProtoMessage() {} -func (*EventPayForBlobs) Descriptor() ([]byte, []int) { - return fileDescriptor_9d90f0a63835a06e, []int{0} -} -func (m *EventPayForBlobs) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *EventPayForBlobs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_EventPayForBlobs.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *EventPayForBlobs) XXX_Merge(src proto.Message) { - xxx_messageInfo_EventPayForBlobs.Merge(m, src) -} -func (m *EventPayForBlobs) XXX_Size() int { - return m.Size() -} -func (m *EventPayForBlobs) XXX_DiscardUnknown() { - xxx_messageInfo_EventPayForBlobs.DiscardUnknown(m) -} - -var xxx_messageInfo_EventPayForBlobs proto.InternalMessageInfo - -func (m *EventPayForBlobs) GetSigner() string { - if m != nil { - return m.Signer - } - return "" -} - -func (m *EventPayForBlobs) GetBlobSizes() []uint32 { - if m != nil { - return m.BlobSizes - } - return nil -} - -func (m *EventPayForBlobs) GetNamespaces() [][]byte { - if m != nil { - return m.Namespaces - } - return nil -} - -func init() { - proto.RegisterType((*EventPayForBlobs)(nil), "celestia.blob.v1.EventPayForBlobs") -} - -func init() { proto.RegisterFile("celestia/blob/v1/event.proto", fileDescriptor_9d90f0a63835a06e) } - -var fileDescriptor_9d90f0a63835a06e = []byte{ - // 214 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x2d, 0x4b, - 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, - 0xca, 0x0c, 0x95, 0x32, 0xb9, 0x04, 0x5c, 0x41, 0x0a, 0x02, 0x12, 0x2b, 0xdd, 0xf2, 0x8b, 0x9c, - 0x72, 0xf2, 0x93, 0x8a, 0x85, 0xc4, 0xb8, 0xd8, 0x8a, 0x33, 0xd3, 0xf3, 0x52, 0x8b, 0x24, 0x18, - 0x15, 0x18, 0x35, 0x38, 0x83, 0xa0, 0x3c, 0x21, 0x59, 0x2e, 0x2e, 0x90, 0xb6, 0xf8, 0xe2, 0xcc, - 0xaa, 0xd4, 0x62, 0x09, 0x26, 0x05, 0x66, 0x0d, 0xde, 0x20, 0x4e, 0x90, 0x48, 0x30, 0x48, 0x40, - 0x48, 0x8e, 0x8b, 0x2b, 0x2f, 0x31, 0x37, 0xb5, 0xb8, 0x20, 0x31, 0x39, 0xb5, 0x58, 0x82, 0x59, - 0x81, 0x59, 0x83, 0x27, 0x08, 0x49, 0xc4, 0xc9, 0xeb, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, - 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, - 0xe5, 0x18, 0xa2, 0x0c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x61, - 0x2e, 0xcc, 0x2f, 0x4a, 0x87, 0xb3, 0x75, 0x13, 0x0b, 0x0a, 0xf4, 0x2b, 0x20, 0x3e, 0x2a, 0xa9, - 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xfb, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x7b, - 0x9e, 0x60, 0xef, 0x00, 0x00, 0x00, -} - -func (m *EventPayForBlobs) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *EventPayForBlobs) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *EventPayForBlobs) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Namespaces) > 0 { - for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Namespaces[iNdEx]) - copy(dAtA[i:], m.Namespaces[iNdEx]) - i = encodeVarintEvent(dAtA, i, uint64(len(m.Namespaces[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.BlobSizes) > 0 { - dAtA2 := make([]byte, len(m.BlobSizes)*10) - var j1 int - for _, num := range m.BlobSizes { - for num >= 1<<7 { - dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ - } - dAtA2[j1] = uint8(num) - j1++ - } - i -= j1 - copy(dAtA[i:], dAtA2[:j1]) - i = encodeVarintEvent(dAtA, i, uint64(j1)) - i-- - dAtA[i] = 0x12 - } - if len(m.Signer) > 0 { - i -= len(m.Signer) - copy(dAtA[i:], m.Signer) - i = encodeVarintEvent(dAtA, i, uint64(len(m.Signer))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintEvent(dAtA []byte, offset int, v uint64) int { - offset -= sovEvent(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *EventPayForBlobs) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Signer) - if l > 0 { - n += 1 + l + sovEvent(uint64(l)) - } - if len(m.BlobSizes) > 0 { - l = 0 - for _, e := range m.BlobSizes { - l += sovEvent(uint64(e)) - } - n += 1 + sovEvent(uint64(l)) + l - } - if len(m.Namespaces) > 0 { - for _, b := range m.Namespaces { - l = len(b) - n += 1 + l + sovEvent(uint64(l)) - } - } - return n -} - -func sovEvent(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozEvent(x uint64) (n int) { - return sovEvent(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *EventPayForBlobs) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: EventPayForBlobs: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: EventPayForBlobs: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthEvent - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Signer = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType == 0 { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BlobSizes = append(m.BlobSizes, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthEvent - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthEvent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.BlobSizes) == 0 { - m.BlobSizes = make([]uint32, 0, elementCount) - } - for iNdEx < postIndex { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BlobSizes = append(m.BlobSizes, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field BlobSizes", wireType) - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthEvent - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthEvent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Namespaces = append(m.Namespaces, make([]byte, postIndex-iNdEx)) - copy(m.Namespaces[len(m.Namespaces)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipEvent(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEvent - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipEvent(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowEvent - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowEvent - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowEvent - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthEvent - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupEvent - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthEvent - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthEvent = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowEvent = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupEvent = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/blob/types/events.go b/x/blob/types/events.go deleted file mode 100644 index 9537ba5a3f..0000000000 --- a/x/blob/types/events.go +++ /dev/null @@ -1,16 +0,0 @@ -package types - -import ( - "github.com/cosmos/gogoproto/proto" -) - -var EventTypePayForBlob = proto.MessageName(&EventPayForBlobs{}) - -// NewPayForBlobsEvent returns a new EventPayForBlobs -func NewPayForBlobsEvent(signer string, blobSizes []uint32, namespaces [][]byte) *EventPayForBlobs { - return &EventPayForBlobs{ - Signer: signer, - BlobSizes: blobSizes, - Namespaces: namespaces, - } -} diff --git a/x/blob/types/genesis.go b/x/blob/types/genesis.go deleted file mode 100644 index 0785224ae9..0000000000 --- a/x/blob/types/genesis.go +++ /dev/null @@ -1,17 +0,0 @@ -package types - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - return gs.Params.Validate() -} diff --git a/x/blob/types/genesis.pb.go b/x/blob/types/genesis.pb.go deleted file mode 100644 index 1811495e62..0000000000 --- a/x/blob/types/genesis.pb.go +++ /dev/null @@ -1,321 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/genesis.proto - -package types - -import ( - fmt "fmt" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// GenesisState defines the capability module's genesis state. -type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` -} - -func (m *GenesisState) Reset() { *m = GenesisState{} } -func (m *GenesisState) String() string { return proto.CompactTextString(m) } -func (*GenesisState) ProtoMessage() {} -func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_c0b3a6e29bb6777c, []int{0} -} -func (m *GenesisState) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GenesisState) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenesisState.Merge(m, src) -} -func (m *GenesisState) XXX_Size() int { - return m.Size() -} -func (m *GenesisState) XXX_DiscardUnknown() { - xxx_messageInfo_GenesisState.DiscardUnknown(m) -} - -var xxx_messageInfo_GenesisState proto.InternalMessageInfo - -func (m *GenesisState) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func init() { - proto.RegisterType((*GenesisState)(nil), "celestia.blob.v1.GenesisState") -} - -func init() { proto.RegisterFile("celestia/blob/v1/genesis.proto", fileDescriptor_c0b3a6e29bb6777c) } - -var fileDescriptor_c0b3a6e29bb6777c = []byte{ - // 198 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, - 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xeb, 0x81, - 0xe4, 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, - 0x9d, 0x94, 0x2c, 0x86, 0x39, 0x05, 0x89, 0x45, 0x89, 0xb9, 0x50, 0x63, 0x94, 0xdc, 0xb8, 0x78, - 0xdc, 0x21, 0xe6, 0x06, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x99, 0x71, 0xb1, 0x41, 0xe4, 0x25, 0x18, - 0x15, 0x18, 0x35, 0xb8, 0x8d, 0x24, 0xf4, 0xd0, 0xed, 0xd1, 0x0b, 0x00, 0xcb, 0x3b, 0xb1, 0x9c, - 0xb8, 0x27, 0xcf, 0x10, 0x04, 0x55, 0xed, 0xe4, 0x75, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, - 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, - 0x72, 0x0c, 0x51, 0x06, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x30, - 0xb3, 0xf2, 0x8b, 0xd2, 0xe1, 0x6c, 0xdd, 0xc4, 0x82, 0x02, 0xfd, 0x0a, 0x88, 0xeb, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x4e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x63, - 0x14, 0xe2, 0x03, 0x01, 0x00, 0x00, -} - -func (m *GenesisState) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { - offset -= sovGenesis(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *GenesisState) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovGenesis(uint64(l)) - return n -} - -func sovGenesis(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGenesis(x uint64) (n int) { - return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *GenesisState) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGenesis(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGenesis - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGenesis - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGenesis - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/blob/types/genesis_test.go b/x/blob/types/genesis_test.go deleted file mode 100644 index 63359d58b3..0000000000 --- a/x/blob/types/genesis_test.go +++ /dev/null @@ -1,52 +0,0 @@ -package types_test - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/stretchr/testify/require" -) - -func TestGenesisState_Validate(t *testing.T) { - for _, tc := range []struct { - desc string - genState *types.GenesisState - valid bool - }{ - { - desc: "default is valid", - genState: types.DefaultGenesis(), - valid: true, - }, - { - desc: "valid genesis state", - genState: &types.GenesisState{ - Params: types.Params{ - GasPerBlobByte: 20, - GovMaxSquareSize: uint64(appconsts.DefaultSquareSizeUpperBound), - }, - }, - valid: true, - }, - { - desc: "invalid genesis state because GovMaxSquareSize", - genState: &types.GenesisState{ - Params: types.Params{ - GasPerBlobByte: 20, - GovMaxSquareSize: uint64(appconsts.DefaultSquareSizeUpperBound + 1), - }, - }, - valid: false, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - err := tc.genState.Validate() - if tc.valid { - require.NoError(t, err) - } else { - require.Error(t, err) - } - }) - } -} diff --git a/x/blob/types/keys.go b/x/blob/types/keys.go deleted file mode 100644 index e7a4aa470c..0000000000 --- a/x/blob/types/keys.go +++ /dev/null @@ -1,22 +0,0 @@ -package types - -const ( - // ModuleName defines the module name - ModuleName = "blob" - - // StoreKey defines the primary module store key - StoreKey = ModuleName - - // RouterKey is the message route for slashing - RouterKey = ModuleName - - // QuerierRoute defines the module's query routing key - QuerierRoute = ModuleName - - // MemStoreKey defines the in-memory store key - MemStoreKey = "mem_blob" -) - -func KeyPrefix(p string) []byte { - return []byte(p) -} diff --git a/x/blob/types/params.go b/x/blob/types/params.go deleted file mode 100644 index 3fc2bb724d..0000000000 --- a/x/blob/types/params.go +++ /dev/null @@ -1,95 +0,0 @@ -package types - -import ( - "fmt" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/go-square/shares" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "gopkg.in/yaml.v2" -) - -var _ paramtypes.ParamSet = (*Params)(nil) - -var ( - KeyGasPerBlobByte = []byte("GasPerBlobByte") - DefaultGasPerBlobByte uint32 = appconsts.DefaultGasPerBlobByte - KeyGovMaxSquareSize = []byte("GovMaxSquareSize") - DefaultGovMaxSquareSize uint64 = appconsts.DefaultGovMaxSquareSize -) - -// ParamKeyTable returns the param key table for the blob module -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// NewParams creates a new Params instance -func NewParams(gasPerBlobByte uint32, govMaxSquareSize uint64) Params { - return Params{ - GasPerBlobByte: gasPerBlobByte, - GovMaxSquareSize: govMaxSquareSize, - } -} - -// DefaultParams returns a default set of parameters -func DefaultParams() Params { - return NewParams(DefaultGasPerBlobByte, appconsts.DefaultGovMaxSquareSize) -} - -// ParamSetPairs gets the list of param key-value pairs -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyGasPerBlobByte, &p.GasPerBlobByte, validateGasPerBlobByte), - paramtypes.NewParamSetPair(KeyGovMaxSquareSize, &p.GovMaxSquareSize, validateGovMaxSquareSize), - } -} - -// Validate validates the set of params -func (p Params) Validate() error { - err := validateGasPerBlobByte(p.GasPerBlobByte) - if err != nil { - return err - } - return validateGovMaxSquareSize(p.GovMaxSquareSize) -} - -// String implements the Stringer interface. -func (p Params) String() string { - out, _ := yaml.Marshal(p) - return string(out) -} - -// validateGasPerBlobByte validates the GasPerBlobByte param -func validateGasPerBlobByte(v interface{}) error { - gasPerBlobByte, ok := v.(uint32) - if !ok { - return fmt.Errorf("invalid parameter type: %T", v) - } - - if gasPerBlobByte == 0 { - return fmt.Errorf("gas per blob byte cannot be 0") - } - - return nil -} - -// validateGovMaxSquareSize validates the GovMaxSquareSize param -func validateGovMaxSquareSize(v interface{}) error { - govMaxSquareSize, ok := v.(uint64) - if !ok { - return fmt.Errorf("invalid parameter type: %T", v) - } - - if govMaxSquareSize == 0 { - return fmt.Errorf("gov max square size cannot be zero") - } - - if !shares.IsPowerOfTwo(govMaxSquareSize) { - return fmt.Errorf( - "gov max square size must be a power of two: %d", - govMaxSquareSize, - ) - } - - return nil -} diff --git a/x/blob/types/params.pb.go b/x/blob/types/params.pb.go deleted file mode 100644 index ba0f2b2ff3..0000000000 --- a/x/blob/types/params.pb.go +++ /dev/null @@ -1,341 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/params.proto - -package types - -import ( - fmt "fmt" - _ "github.com/cosmos/gogoproto/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// Params defines the parameters for the module. -type Params struct { - GasPerBlobByte uint32 `protobuf:"varint,1,opt,name=gas_per_blob_byte,json=gasPerBlobByte,proto3" json:"gas_per_blob_byte,omitempty" yaml:"gas_per_blob_byte"` - GovMaxSquareSize uint64 `protobuf:"varint,2,opt,name=gov_max_square_size,json=govMaxSquareSize,proto3" json:"gov_max_square_size,omitempty" yaml:"gov_max_square_size"` -} - -func (m *Params) Reset() { *m = Params{} } -func (*Params) ProtoMessage() {} -func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_2145b82d3e5371c6, []int{0} -} -func (m *Params) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Params.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Params) XXX_Merge(src proto.Message) { - xxx_messageInfo_Params.Merge(m, src) -} -func (m *Params) XXX_Size() int { - return m.Size() -} -func (m *Params) XXX_DiscardUnknown() { - xxx_messageInfo_Params.DiscardUnknown(m) -} - -var xxx_messageInfo_Params proto.InternalMessageInfo - -func (m *Params) GetGasPerBlobByte() uint32 { - if m != nil { - return m.GasPerBlobByte - } - return 0 -} - -func (m *Params) GetGovMaxSquareSize() uint64 { - if m != nil { - return m.GovMaxSquareSize - } - return 0 -} - -func init() { - proto.RegisterType((*Params)(nil), "celestia.blob.v1.Params") -} - -func init() { proto.RegisterFile("celestia/blob/v1/params.proto", fileDescriptor_2145b82d3e5371c6) } - -var fileDescriptor_2145b82d3e5371c6 = []byte{ - // 270 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x48, 0x2c, - 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0x49, 0xeb, 0x81, 0xa4, - 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, - 0xd2, 0x32, 0x46, 0x2e, 0xb6, 0x00, 0xb0, 0x46, 0x21, 0x77, 0x2e, 0xc1, 0xf4, 0xc4, 0xe2, 0xf8, - 0x82, 0xd4, 0xa2, 0x78, 0x90, 0x9e, 0xf8, 0xa4, 0xca, 0x92, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, - 0x5e, 0x27, 0x99, 0x4f, 0xf7, 0xe4, 0x25, 0x2a, 0x13, 0x73, 0x73, 0xac, 0x94, 0x30, 0x94, 0x28, - 0x05, 0xf1, 0xa5, 0x27, 0x16, 0x07, 0xa4, 0x16, 0x39, 0xe5, 0xe4, 0x27, 0x39, 0x55, 0x96, 0xa4, - 0x0a, 0xf9, 0x72, 0x09, 0xa7, 0xe7, 0x97, 0xc5, 0xe7, 0x26, 0x56, 0xc4, 0x17, 0x17, 0x96, 0x26, - 0x16, 0xa5, 0xc6, 0x17, 0x67, 0x56, 0xa5, 0x4a, 0x30, 0x29, 0x30, 0x6a, 0xb0, 0x38, 0xc9, 0x7d, - 0xba, 0x27, 0x2f, 0x05, 0x35, 0x0a, 0x53, 0x91, 0x52, 0x90, 0x40, 0x7a, 0x7e, 0x99, 0x6f, 0x62, - 0x45, 0x30, 0x58, 0x2c, 0x38, 0xb3, 0x2a, 0xd5, 0x8a, 0x65, 0xc6, 0x02, 0x79, 0x06, 0x27, 0xaf, - 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, - 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x48, 0xcf, 0x2c, 0xc9, 0x28, - 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xf9, 0x3a, 0xbf, 0x28, 0x1d, 0xce, 0xd6, 0x4d, 0x2c, - 0x28, 0xd0, 0xaf, 0x80, 0x04, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0xef, 0xc6, - 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x2d, 0x7d, 0x23, 0x44, 0x01, 0x00, 0x00, -} - -func (m *Params) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Params) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.GovMaxSquareSize != 0 { - i = encodeVarintParams(dAtA, i, uint64(m.GovMaxSquareSize)) - i-- - dAtA[i] = 0x10 - } - if m.GasPerBlobByte != 0 { - i = encodeVarintParams(dAtA, i, uint64(m.GasPerBlobByte)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func encodeVarintParams(dAtA []byte, offset int, v uint64) int { - offset -= sovParams(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Params) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.GasPerBlobByte != 0 { - n += 1 + sovParams(uint64(m.GasPerBlobByte)) - } - if m.GovMaxSquareSize != 0 { - n += 1 + sovParams(uint64(m.GovMaxSquareSize)) - } - return n -} - -func sovParams(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozParams(x uint64) (n int) { - return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Params) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Params: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field GasPerBlobByte", wireType) - } - m.GasPerBlobByte = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.GasPerBlobByte |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field GovMaxSquareSize", wireType) - } - m.GovMaxSquareSize = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.GovMaxSquareSize |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipParams(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthParams - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipParams(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthParams - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupParams - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthParams - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/blob/types/params_test.go b/x/blob/types/params_test.go deleted file mode 100644 index 5e77f9bc7d..0000000000 --- a/x/blob/types/params_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package types - -import ( - "testing" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/stretchr/testify/assert" -) - -func Test_validateGovMaxSquareSize(t *testing.T) { - type test struct { - name string - input interface{} - expectErr bool - } - tests := []test{ - { - name: "valid", - input: uint64(appconsts.DefaultGovMaxSquareSize), - expectErr: false, - }, - { - name: "not a power of 2", - input: uint64(appconsts.DefaultSquareSizeUpperBound - 1), - expectErr: true, - }, - { - name: "wrong type", - input: int64(appconsts.DefaultGovMaxSquareSize), - expectErr: true, - }, - { - name: "zero", - input: uint64(0), - expectErr: true, - }, - } - for _, tt := range tests { - err := validateGovMaxSquareSize(tt.input) - if tt.expectErr { - assert.Error(t, err) - } - } -} diff --git a/x/blob/types/payforblob.go b/x/blob/types/payforblob.go deleted file mode 100644 index 2ea0e07834..0000000000 --- a/x/blob/types/payforblob.go +++ /dev/null @@ -1,258 +0,0 @@ -package types - -import ( - fmt "fmt" - - "cosmossdk.io/errors" - - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/go-square/blob" - "github.com/celestiaorg/go-square/inclusion" - "github.com/celestiaorg/go-square/merkle" - appns "github.com/celestiaorg/go-square/namespace" - appshares "github.com/celestiaorg/go-square/shares" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" - auth "github.com/cosmos/cosmos-sdk/x/auth/types" - "golang.org/x/exp/slices" -) - -const ( - URLMsgPayForBlobs = "/celestia.blob.v1.MsgPayForBlobs" - - // PFBGasFixedCost is a rough estimate for the "fixed cost" in the gas cost - // formula: gas cost = gas per byte * bytes per share * shares occupied by - // blob + "fixed cost". In this context, "fixed cost" accounts for the gas - // consumed by operations outside the blob's GasToConsume function (i.e. - // signature verification, tx size, read access to accounts). - // - // Since the gas cost of these operations is not easy to calculate, linear - // regression was performed on a set of observed data points to derive an - // approximate formula for gas cost. Assuming gas per byte = 8 and bytes per - // share = 512, we can solve for "fixed cost" and arrive at 65,000. gas cost - // = 8 * 512 * number of shares occupied by the blob + 65,000 has a - // correlation coefficient of 0.996. To be conservative, we round up "fixed - // cost" to 75,000 because the first tx always takes up 10,000 more gas than - // subsequent txs. - PFBGasFixedCost = 75000 - - // BytesPerBlobInfo is a rough estimation for the amount of extra bytes in - // information a blob adds to the size of the underlying transaction. - BytesPerBlobInfo = 70 -) - -// MsgPayForBlobs implements the `LegacyMsg` interface. -// See: https://github.com/cosmos/cosmos-sdk/blob/v0.46.15/docs/building-modules/messages-and-queries.md#legacy-amino-legacymsgs -var _ legacytx.LegacyMsg = &MsgPayForBlobs{} - -func NewMsgPayForBlobs(signer string, version uint64, blobs ...*blob.Blob) (*MsgPayForBlobs, error) { - err := ValidateBlobs(blobs...) - if err != nil { - return nil, err - } - commitments, err := inclusion.CreateCommitments(blobs, merkle.HashFromByteSlices, appconsts.SubtreeRootThreshold(version)) - if err != nil { - return nil, fmt.Errorf("creating commitments: %w", err) - } - - namespaceVersions, namespaceIDs, sizes, shareVersions := ExtractBlobComponents(blobs) - namespaces := []appns.Namespace{} - for i := range namespaceVersions { - namespace, err := appns.New(uint8(namespaceVersions[i]), namespaceIDs[i]) - if err != nil { - return nil, err - } - namespaces = append(namespaces, namespace) - } - - msg := &MsgPayForBlobs{ - Signer: signer, - Namespaces: namespacesToBytes(namespaces), - ShareCommitments: commitments, - BlobSizes: sizes, - ShareVersions: shareVersions, - } - - return msg, msg.ValidateBasic() -} - -func namespacesToBytes(namespaces []appns.Namespace) (result [][]byte) { - for _, namespace := range namespaces { - result = append(result, namespace.Bytes()) - } - return result -} - -// Route fulfills the legacytx.LegacyMsg interface -func (msg *MsgPayForBlobs) Route() string { return RouterKey } - -// Type fulfills the legacytx.LegacyMsg interface -func (msg *MsgPayForBlobs) Type() string { - return URLMsgPayForBlobs -} - -// ValidateBasic fulfills the sdk.Msg interface by performing stateless -// validity checks on the msg that also don't require having the actual blob(s) -func (msg *MsgPayForBlobs) ValidateBasic() error { - if len(msg.Namespaces) == 0 { - return ErrNoNamespaces - } - - if len(msg.ShareVersions) == 0 { - return ErrNoShareVersions - } - - if len(msg.BlobSizes) == 0 { - return ErrNoBlobSizes - } - - if len(msg.ShareCommitments) == 0 { - return ErrNoShareCommitments - } - - if len(msg.Namespaces) != len(msg.ShareVersions) || len(msg.Namespaces) != len(msg.BlobSizes) || len(msg.Namespaces) != len(msg.ShareCommitments) { - return ErrMismatchedNumberOfPFBComponent.Wrapf( - "namespaces %d blob sizes %d share versions %d share commitments %d", - len(msg.Namespaces), len(msg.BlobSizes), len(msg.ShareVersions), len(msg.ShareCommitments), - ) - } - - for _, namespace := range msg.Namespaces { - ns, err := appns.From(namespace) - if err != nil { - return errors.Wrap(ErrInvalidNamespace, err.Error()) - } - err = ValidateBlobNamespace(ns) - if err != nil { - return err - } - } - - for _, v := range msg.ShareVersions { - if v != uint32(appconsts.ShareVersionZero) { - return ErrUnsupportedShareVersion - } - } - - _, err := sdk.AccAddressFromBech32(msg.Signer) - if err != nil { - return err - } - - for _, commitment := range msg.ShareCommitments { - if len(commitment) != appconsts.HashLength() { - return ErrInvalidShareCommitment - } - } - - return nil -} - -func (msg *MsgPayForBlobs) Gas(gasPerByte uint32) uint64 { - return GasToConsume(msg.BlobSizes, gasPerByte) -} - -// GasToConsume works out the extra gas charged to pay for a set of blobs in a PFB. -// Note that transactions will incur other gas costs, such as the signature verification -// and reads to the user's account. -func GasToConsume(blobSizes []uint32, gasPerByte uint32) uint64 { - var totalSharesUsed uint64 - for _, size := range blobSizes { - totalSharesUsed += uint64(appshares.SparseSharesNeeded(size)) - } - - return totalSharesUsed * appconsts.ShareSize * uint64(gasPerByte) -} - -// EstimateGas estimates the total gas required to pay for a set of blobs in a PFB. -// It is based on a linear model that is dependent on the governance parameters: -// gasPerByte and txSizeCost. It assumes other variables are constant. This includes -// assuming the PFB is the only message in the transaction. -func EstimateGas(blobSizes []uint32, gasPerByte uint32, txSizeCost uint64) uint64 { - return GasToConsume(blobSizes, gasPerByte) + (txSizeCost * BytesPerBlobInfo * uint64(len(blobSizes))) + PFBGasFixedCost -} - -// DefaultEstimateGas runs EstimateGas with the system defaults. The network may change these values -// through governance, thus this function should predominantly be used in testing. -func DefaultEstimateGas(blobSizes []uint32) uint64 { - return EstimateGas(blobSizes, appconsts.DefaultGasPerBlobByte, auth.DefaultTxSizeCostPerByte) -} - -// ValidateBlobNamespace returns an error if the provided namespace is an -// invalid user-specifiable blob namespace (e.g. reserved, parity shares, or -// tail padding). -func ValidateBlobNamespace(ns appns.Namespace) error { - if ns.IsReserved() { - return ErrReservedNamespace - } - - if !slices.Contains(appns.SupportedBlobNamespaceVersions, ns.Version) { - return ErrInvalidNamespaceVersion - } - - return nil -} - -// GetSignBytes fulfills the legacytx.LegacyMsg interface by returning a deterministic set -// of bytes to sign over -func (msg *MsgPayForBlobs) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) -} - -// GetSigners fulfills the sdk.Msg interface by returning the signer's address -func (msg *MsgPayForBlobs) GetSigners() []sdk.AccAddress { - address, err := sdk.AccAddressFromBech32(msg.Signer) - if err != nil { - panic(err) - } - return []sdk.AccAddress{address} -} - -// ValidateBlobs performs basic checks over the components of one or more PFBs. -func ValidateBlobs(blobs ...*blob.Blob) error { - if len(blobs) == 0 { - return ErrNoBlobs - } - - for _, blob := range blobs { - if blob.NamespaceVersion > appconsts.NamespaceVersionMaxValue { - return fmt.Errorf("namespace version %d is too large", blob.NamespaceVersion) - } - ns, err := appns.New(uint8(blob.NamespaceVersion), blob.NamespaceId) - if err != nil { - return err - } - err = ValidateBlobNamespace(ns) - if err != nil { - return err - } - - if len(blob.Data) == 0 { - return ErrZeroBlobSize - } - - if !slices.Contains(appconsts.SupportedShareVersions, uint8(blob.ShareVersion)) { - return ErrUnsupportedShareVersion - } - } - - return nil -} - -// ExtractBlobComponents separates and returns the components of a slice of -// blobs. -func ExtractBlobComponents(pblobs []*blob.Blob) (namespaceVersions []uint32, namespaceIDs [][]byte, sizes []uint32, shareVersions []uint32) { - namespaceVersions = make([]uint32, len(pblobs)) - namespaceIDs = make([][]byte, len(pblobs)) - sizes = make([]uint32, len(pblobs)) - shareVersions = make([]uint32, len(pblobs)) - - for i, pblob := range pblobs { - namespaceVersions[i] = pblob.NamespaceVersion - namespaceIDs[i] = pblob.NamespaceId - sizes[i] = uint32(len(pblob.Data)) - shareVersions[i] = pblob.ShareVersion - } - - return namespaceVersions, namespaceIDs, sizes, shareVersions -} diff --git a/x/blob/types/payforblob_test.go b/x/blob/types/payforblob_test.go deleted file mode 100644 index b7aac4a4aa..0000000000 --- a/x/blob/types/payforblob_test.go +++ /dev/null @@ -1,410 +0,0 @@ -package types_test - -import ( - "bytes" - "testing" - - sdkerrors "cosmossdk.io/errors" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - "github.com/celestiaorg/celestia-app/x/blob/types" - "github.com/celestiaorg/go-square/blob" - "github.com/celestiaorg/go-square/inclusion" - appns "github.com/celestiaorg/go-square/namespace" - shares "github.com/celestiaorg/go-square/shares" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/crypto/merkle" - tmrand "github.com/tendermint/tendermint/libs/rand" -) - -func TestMsgTypeURLParity(t *testing.T) { - require.Equal(t, sdk.MsgTypeURL(&types.MsgPayForBlobs{}), types.URLMsgPayForBlobs) -} - -func TestValidateBasic(t *testing.T) { - type test struct { - name string - msg *types.MsgPayForBlobs - wantErr *sdkerrors.Error - } - - validMsg := validMsgPayForBlobs(t) - - // MsgPayForBlobs that uses parity shares namespace - paritySharesMsg := validMsgPayForBlobs(t) - paritySharesMsg.Namespaces[0] = appns.ParitySharesNamespace.Bytes() - - // MsgPayForBlobs that uses tail padding namespace - tailPaddingMsg := validMsgPayForBlobs(t) - tailPaddingMsg.Namespaces[0] = appns.TailPaddingNamespace.Bytes() - - // MsgPayForBlobs that uses transaction namespace - txNamespaceMsg := validMsgPayForBlobs(t) - txNamespaceMsg.Namespaces[0] = appns.TxNamespace.Bytes() - - // MsgPayForBlobs that uses intermediateStateRoots namespace - intermediateStateRootsNamespaceMsg := validMsgPayForBlobs(t) - intermediateStateRootsNamespaceMsg.Namespaces[0] = appns.IntermediateStateRootsNamespace.Bytes() - - // MsgPayForBlobs that uses the max primary reserved namespace - maxReservedNamespaceMsg := validMsgPayForBlobs(t) - maxReservedNamespaceMsg.Namespaces[0] = appns.MaxPrimaryReservedNamespace.Bytes() - - // MsgPayForBlobs that has an empty share commitment - emptyShareCommitment := validMsgPayForBlobs(t) - emptyShareCommitment.ShareCommitments[0] = []byte{} - - // MsgPayForBlobs that has an invalid share commitment size - invalidShareCommitmentSize := validMsgPayForBlobs(t) - invalidShareCommitmentSize.ShareCommitments[0] = bytes.Repeat([]byte{0x1}, 31) - - // MsgPayForBlobs that has no namespaces - noNamespaces := validMsgPayForBlobs(t) - noNamespaces.Namespaces = [][]byte{} - - // MsgPayForBlobs that has no share versions - noShareVersions := validMsgPayForBlobs(t) - noShareVersions.ShareVersions = []uint32{} - - // MsgPayForBlobs that has no blob sizes - noBlobSizes := validMsgPayForBlobs(t) - noBlobSizes.BlobSizes = []uint32{} - - // MsgPayForBlobs that has no share commitments - noShareCommitments := validMsgPayForBlobs(t) - noShareCommitments.ShareCommitments = [][]byte{} - - tests := []test{ - { - name: "valid msg", - msg: validMsg, - wantErr: nil, - }, - { - name: "parity shares namespace", - msg: paritySharesMsg, - wantErr: types.ErrReservedNamespace, - }, - { - name: "tail padding namespace", - msg: tailPaddingMsg, - wantErr: types.ErrReservedNamespace, - }, - { - name: "tx namespace", - msg: txNamespaceMsg, - wantErr: types.ErrReservedNamespace, - }, - { - name: "intermediate state root namespace", - msg: intermediateStateRootsNamespaceMsg, - wantErr: types.ErrReservedNamespace, - }, - { - name: "max reserved namespace", - msg: maxReservedNamespaceMsg, - wantErr: types.ErrReservedNamespace, - }, - { - name: "empty share commitment", - msg: emptyShareCommitment, - wantErr: types.ErrInvalidShareCommitment, - }, - { - name: "incorrect hash size share commitment", - msg: invalidShareCommitmentSize, - wantErr: types.ErrInvalidShareCommitment, - }, - { - name: "no namespace ids", - msg: noNamespaces, - wantErr: types.ErrNoNamespaces, - }, - { - name: "no share versions", - msg: noShareVersions, - wantErr: types.ErrNoShareVersions, - }, - { - name: "no blob sizes", - msg: noBlobSizes, - wantErr: types.ErrNoBlobSizes, - }, - { - name: "no share commitments", - msg: noShareCommitments, - wantErr: types.ErrNoShareCommitments, - }, - { - name: "invalid namespace version", - msg: invalidNamespaceVersionMsgPayForBlobs(t), - wantErr: types.ErrInvalidNamespaceVersion, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.wantErr != nil { - require.Error(t, err) - assert.Contains(t, err.Error(), tt.wantErr.Error()) - space, code, log := sdkerrors.ABCIInfo(err, false) - assert.Equal(t, tt.wantErr.Codespace(), space) - assert.Equal(t, tt.wantErr.ABCICode(), code) - t.Log(log) - } - }) - } -} - -// totalBlobSize subtracts the delimiter size from the desired total size. this -// is useful for testing for blobs that occupy exactly so many shares. -func totalBlobSize(size int) int { - return size - shares.DelimLen(uint64(size)) -} - -func validMsgPayForBlobs(t *testing.T) *types.MsgPayForBlobs { - signer, err := testnode.NewOfflineSigner() - require.NoError(t, err) - ns1 := appns.NamespaceVersionZeroPrefix - ns1 = append(ns1, bytes.Repeat([]byte{0x01}, appns.NamespaceVersionZeroIDSize)...) - data := bytes.Repeat([]byte{2}, totalBlobSize(appconsts.ContinuationSparseShareContentSize*12)) - - pblob := &blob.Blob{ - Data: data, - NamespaceId: ns1, - NamespaceVersion: uint32(appns.NamespaceVersionZero), - ShareVersion: uint32(appconsts.ShareVersionZero), - } - - addr := signer.Account(testfactory.TestAccName).Address() - pfb, err := types.NewMsgPayForBlobs(addr.String(), appconsts.LatestVersion, pblob) - assert.NoError(t, err) - - return pfb -} - -func invalidNamespaceVersionMsgPayForBlobs(t *testing.T) *types.MsgPayForBlobs { - signer, err := testnode.NewOfflineSigner() - require.NoError(t, err) - ns1 := appns.NamespaceVersionZeroPrefix - ns1 = append(ns1, bytes.Repeat([]byte{0x01}, appns.NamespaceVersionZeroIDSize)...) - data := bytes.Repeat([]byte{2}, totalBlobSize(appconsts.ContinuationSparseShareContentSize*12)) - - pblob := &blob.Blob{ - Data: data, - NamespaceId: ns1, - NamespaceVersion: uint32(255), - ShareVersion: uint32(appconsts.ShareVersionZero), - } - - blobs := []*blob.Blob{pblob} - - commitments, err := inclusion.CreateCommitments(blobs, merkle.HashFromByteSlices, appconsts.DefaultSubtreeRootThreshold) - require.NoError(t, err) - - namespaceVersions, namespaceIDs, sizes, shareVersions := types.ExtractBlobComponents(blobs) - namespaces := []appns.Namespace{} - for i := range namespaceVersions { - namespace, err := appns.New(uint8(namespaceVersions[i]), namespaceIDs[i]) - require.NoError(t, err) - namespaces = append(namespaces, namespace) - } - - namespacesBytes := make([][]byte, len(namespaces)) - for idx, namespace := range namespaces { - namespacesBytes[idx] = namespace.Bytes() - } - - addr := signer.Account(testfactory.TestAccName).Address() - pfb := &types.MsgPayForBlobs{ - Signer: addr.String(), - Namespaces: namespacesBytes, - ShareCommitments: commitments, - BlobSizes: sizes, - ShareVersions: shareVersions, - } - - return pfb -} - -func TestNewMsgPayForBlobs(t *testing.T) { - type testCase struct { - name string - signer string - blobs []*blob.Blob - expectedErr bool - } - ns1 := appns.MustNewV0(bytes.Repeat([]byte{1}, appns.NamespaceVersionZeroIDSize)) - ns2 := appns.MustNewV0(bytes.Repeat([]byte{2}, appns.NamespaceVersionZeroIDSize)) - - testCases := []testCase{ - { - name: "valid msg PFB with small blob", - signer: testfactory.TestAccAddr, - blobs: []*blob.Blob{ - { - NamespaceVersion: uint32(ns1.Version), - NamespaceId: ns1.ID, - Data: []byte{1}, - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - }, - expectedErr: false, - }, - { - name: "valid msg PFB with large blob", - signer: testfactory.TestAccAddr, - blobs: []*blob.Blob{ - { - NamespaceVersion: uint32(ns1.Version), - NamespaceId: ns1.ID, - Data: tmrand.Bytes(1000000), - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - }, - expectedErr: false, - }, - { - name: "valid msg PFB with two blobs", - signer: testfactory.TestAccAddr, - blobs: []*blob.Blob{ - { - NamespaceVersion: uint32(ns1.Version), - NamespaceId: ns1.ID, - Data: []byte{1}, - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - { - NamespaceVersion: uint32(ns2.Version), - NamespaceId: ns2.ID, - Data: []byte{2}, - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - }, - }, - { - name: "unsupported share version returns an error", - signer: testfactory.TestAccAddr, - blobs: []*blob.Blob{ - { - NamespaceVersion: uint32(ns1.Version), - NamespaceId: ns1.ID, - Data: tmrand.Bytes(1000000), - ShareVersion: uint32(10), // unsupported share version - }, - }, - expectedErr: true, - }, - { - name: "msg PFB with tx namespace returns an error", - signer: testfactory.TestAccAddr, - blobs: []*blob.Blob{ - { - NamespaceVersion: uint32(appns.TxNamespace.Version), - NamespaceId: appns.TxNamespace.ID, - Data: tmrand.Bytes(1000000), - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - }, - expectedErr: true, - }, - { - name: "msg PFB with invalid signer returns an error", - signer: testfactory.TestAccAddr[:10], - blobs: []*blob.Blob{ - { - NamespaceVersion: uint32(ns1.Version), - NamespaceId: ns1.ID, - Data: []byte{1}, - ShareVersion: uint32(appconsts.ShareVersionZero), - }, - }, - expectedErr: true, - }, - } - for _, tc := range testCases { - t.Run(tc.name, func(t *testing.T) { - msgPFB, err := types.NewMsgPayForBlobs(tc.signer, appconsts.LatestVersion, tc.blobs...) - if tc.expectedErr { - assert.Error(t, err) - return - } - - for i, blob := range tc.blobs { - assert.Equal(t, uint32(len(blob.Data)), msgPFB.BlobSizes[i]) - ns, err := appns.From(msgPFB.Namespaces[i]) - assert.NoError(t, err) - assert.Equal(t, ns.ID, blob.NamespaceId) - assert.Equal(t, uint32(ns.Version), blob.NamespaceVersion) - - expectedCommitment, err := inclusion.CreateCommitment(blob, merkle.HashFromByteSlices, appconsts.DefaultSubtreeRootThreshold) - require.NoError(t, err) - assert.Equal(t, expectedCommitment, msgPFB.ShareCommitments[i]) - } - }) - } -} - -func TestValidateBlobs(t *testing.T) { - type test struct { - name string - blob *blob.Blob - expectError bool - } - - tests := []test{ - { - name: "valid blob", - blob: &blob.Blob{ - Data: []byte{1}, - NamespaceId: appns.RandomBlobNamespace().ID, - ShareVersion: uint32(appconsts.DefaultShareVersion), - NamespaceVersion: uint32(appns.NamespaceVersionZero), - }, - expectError: false, - }, - { - name: "invalid share version", - blob: &blob.Blob{ - Data: []byte{1}, - NamespaceId: appns.RandomBlobNamespace().ID, - ShareVersion: uint32(10000), - NamespaceVersion: uint32(appns.NamespaceVersionZero), - }, - expectError: true, - }, - { - name: "empty blob", - blob: &blob.Blob{ - Data: []byte{}, - NamespaceId: appns.RandomBlobNamespace().ID, - ShareVersion: uint32(appconsts.DefaultShareVersion), - NamespaceVersion: uint32(appns.NamespaceVersionZero), - }, - expectError: true, - }, - { - name: "invalid namespace", - blob: &blob.Blob{ - Data: []byte{1}, - NamespaceId: appns.TxNamespace.ID, - ShareVersion: uint32(appconsts.DefaultShareVersion), - NamespaceVersion: uint32(appns.NamespaceVersionZero), - }, - expectError: true, - }, - } - - for _, tt := range tests { - err := types.ValidateBlobs(tt.blob) - if tt.expectError { - assert.Error(t, err) - } else { - assert.NoError(t, err) - } - } -} diff --git a/x/blob/types/query.pb.go b/x/blob/types/query.pb.go deleted file mode 100644 index c28b5b01ed..0000000000 --- a/x/blob/types/query.pb.go +++ /dev/null @@ -1,534 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/query.proto - -package types - -import ( - context "context" - fmt "fmt" - _ "github.com/cosmos/gogoproto/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// QueryParamsRequest is the request type for the Query/Params RPC method. -type QueryParamsRequest struct { -} - -func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } -func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryParamsRequest) ProtoMessage() {} -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_29ba8a4248383b64, []int{0} -} -func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsRequest.Merge(m, src) -} -func (m *QueryParamsRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo - -// QueryParamsResponse is the response type for the Query/Params RPC method. -type QueryParamsResponse struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` -} - -func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } -func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } -func (*QueryParamsResponse) ProtoMessage() {} -func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_29ba8a4248383b64, []int{1} -} -func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsResponse.Merge(m, src) -} -func (m *QueryParamsResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo - -func (m *QueryParamsResponse) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "celestia.blob.v1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "celestia.blob.v1.QueryParamsResponse") -} - -func init() { proto.RegisterFile("celestia/blob/v1/query.proto", fileDescriptor_29ba8a4248383b64) } - -var fileDescriptor_29ba8a4248383b64 = []byte{ - // 275 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x2c, 0x4d, - 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, - 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, - 0x4c, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x7e, 0x62, 0x41, 0xa6, 0x7e, 0x62, 0x5e, 0x5e, 0x7e, - 0x49, 0x62, 0x49, 0x66, 0x7e, 0x5e, 0x31, 0x54, 0x56, 0x16, 0xc3, 0x8e, 0x82, 0xc4, 0xa2, 0xc4, - 0x5c, 0xa8, 0xb4, 0x92, 0x08, 0x97, 0x50, 0x20, 0xc8, 0xce, 0x00, 0xb0, 0x60, 0x50, 0x6a, 0x61, - 0x69, 0x6a, 0x71, 0x89, 0x92, 0x2f, 0x97, 0x30, 0x8a, 0x68, 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, - 0x90, 0x19, 0x17, 0x1b, 0x44, 0xb3, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xb7, 0x91, 0x84, 0x1e, 0xba, - 0x13, 0xf5, 0x20, 0x3a, 0x9c, 0x58, 0x4e, 0xdc, 0x93, 0x67, 0x08, 0x82, 0xaa, 0x36, 0x2a, 0xe7, - 0x62, 0x05, 0x1b, 0x27, 0x94, 0xc7, 0xc5, 0x06, 0x51, 0x20, 0xa4, 0x82, 0xa9, 0x15, 0xd3, 0x1d, - 0x52, 0xaa, 0x04, 0x54, 0x41, 0xdc, 0xa5, 0x24, 0xde, 0x74, 0xf9, 0xc9, 0x64, 0x26, 0x41, 0x21, - 0x7e, 0x34, 0x3f, 0x3a, 0x79, 0x9d, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, - 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, - 0x41, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xcc, 0x8e, 0xfc, 0xa2, - 0x74, 0x38, 0x5b, 0x37, 0xb1, 0xa0, 0x40, 0xbf, 0x02, 0x62, 0x5e, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0x38, 0xc0, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x7e, 0x20, 0x5f, 0xb5, - 0x01, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - // Params queries the parameters of the module. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) -} - -type queryClient struct { - cc grpc1.ClientConn -} - -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} -} - -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/celestia.blob.v1.Query/Params", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// QueryServer is the server API for Query service. -type QueryServer interface { - // Params queries the parameters of the module. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) -} - -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { -} - -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") -} - -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) -} - -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/celestia.blob.v1.Query/Params", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.blob.v1.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "celestia/blob/v1/query.proto", -} - -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipQuery(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthQuery - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupQuery - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthQuery - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/blob/types/query.pb.gw.go b/x/blob/types/query.pb.gw.go deleted file mode 100644 index 5ee1f38d19..0000000000 --- a/x/blob/types/query.pb.gw.go +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/blob/v1/query.proto - -/* -Package types is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package types - -import ( - "context" - "io" - "net/http" - - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join - -func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := server.Params(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". -// UnaryRPC :call QueryServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. -func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterQueryHandler(ctx, mux, conn) -} - -// RegisterQueryHandler registers the http handlers for service Query to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) -} - -// RegisterQueryHandlerClient registers the http handlers for service Query -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "QueryClient" to call the correct interceptors. -func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"blob", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) -) - -var ( - forward_Query_Params_0 = runtime.ForwardResponseMessage -) diff --git a/x/blob/types/tx.pb.go b/x/blob/types/tx.pb.go deleted file mode 100644 index 35860ed8a0..0000000000 --- a/x/blob/types/tx.pb.go +++ /dev/null @@ -1,875 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/tx.proto - -package types - -import ( - context "context" - fmt "fmt" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// MsgPayForBlobs pays for the inclusion of a blob in the block. -type MsgPayForBlobs struct { - // signer is the bech32 encoded signer address. See - // https://en.bitcoin.it/wiki/Bech32. - Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` - // namespaces is a list of namespaces that the blobs are associated with. A - // namespace is a byte slice of length 29 where the first byte is the - // namespaceVersion and the subsequent 28 bytes are the namespaceId. - Namespaces [][]byte `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` - // blob_sizes is a list of blob sizes (one per blob). Each size is in bytes. - BlobSizes []uint32 `protobuf:"varint,3,rep,packed,name=blob_sizes,json=blobSizes,proto3" json:"blob_sizes,omitempty"` - // share_commitments is a list of share commitments (one per blob). - ShareCommitments [][]byte `protobuf:"bytes,4,rep,name=share_commitments,json=shareCommitments,proto3" json:"share_commitments,omitempty"` - // share_versions are the versions of the share format that the blobs - // associated with this message should use when included in a block. The - // share_versions specified must match the share_versions used to generate the - // share_commitment in this message. - ShareVersions []uint32 `protobuf:"varint,8,rep,packed,name=share_versions,json=shareVersions,proto3" json:"share_versions,omitempty"` -} - -func (m *MsgPayForBlobs) Reset() { *m = MsgPayForBlobs{} } -func (m *MsgPayForBlobs) String() string { return proto.CompactTextString(m) } -func (*MsgPayForBlobs) ProtoMessage() {} -func (*MsgPayForBlobs) Descriptor() ([]byte, []int) { - return fileDescriptor_9157fbf3d3cd004d, []int{0} -} -func (m *MsgPayForBlobs) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgPayForBlobs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgPayForBlobs.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgPayForBlobs) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgPayForBlobs.Merge(m, src) -} -func (m *MsgPayForBlobs) XXX_Size() int { - return m.Size() -} -func (m *MsgPayForBlobs) XXX_DiscardUnknown() { - xxx_messageInfo_MsgPayForBlobs.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgPayForBlobs proto.InternalMessageInfo - -func (m *MsgPayForBlobs) GetSigner() string { - if m != nil { - return m.Signer - } - return "" -} - -func (m *MsgPayForBlobs) GetNamespaces() [][]byte { - if m != nil { - return m.Namespaces - } - return nil -} - -func (m *MsgPayForBlobs) GetBlobSizes() []uint32 { - if m != nil { - return m.BlobSizes - } - return nil -} - -func (m *MsgPayForBlobs) GetShareCommitments() [][]byte { - if m != nil { - return m.ShareCommitments - } - return nil -} - -func (m *MsgPayForBlobs) GetShareVersions() []uint32 { - if m != nil { - return m.ShareVersions - } - return nil -} - -// MsgPayForBlobsResponse describes the response returned after the submission -// of a PayForBlobs -type MsgPayForBlobsResponse struct { -} - -func (m *MsgPayForBlobsResponse) Reset() { *m = MsgPayForBlobsResponse{} } -func (m *MsgPayForBlobsResponse) String() string { return proto.CompactTextString(m) } -func (*MsgPayForBlobsResponse) ProtoMessage() {} -func (*MsgPayForBlobsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9157fbf3d3cd004d, []int{1} -} -func (m *MsgPayForBlobsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgPayForBlobsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgPayForBlobsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgPayForBlobsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgPayForBlobsResponse.Merge(m, src) -} -func (m *MsgPayForBlobsResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgPayForBlobsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgPayForBlobsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgPayForBlobsResponse proto.InternalMessageInfo - -func init() { - proto.RegisterType((*MsgPayForBlobs)(nil), "celestia.blob.v1.MsgPayForBlobs") - proto.RegisterType((*MsgPayForBlobsResponse)(nil), "celestia.blob.v1.MsgPayForBlobsResponse") -} - -func init() { proto.RegisterFile("celestia/blob/v1/tx.proto", fileDescriptor_9157fbf3d3cd004d) } - -var fileDescriptor_9157fbf3d3cd004d = []byte{ - // 352 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xcd, 0x4a, 0xc3, 0x40, - 0x14, 0x85, 0x3b, 0x8d, 0x14, 0x3b, 0xda, 0x52, 0x83, 0x94, 0xb4, 0x68, 0x0c, 0x01, 0x21, 0x28, - 0x26, 0x56, 0x77, 0x2e, 0x2b, 0xb8, 0x10, 0x0a, 0x12, 0xc1, 0x85, 0x9b, 0x32, 0x09, 0x63, 0x1a, - 0x48, 0x72, 0x87, 0xdc, 0xb1, 0xb4, 0xdd, 0xe9, 0x13, 0x08, 0x3e, 0x8e, 0x2f, 0xe0, 0xb2, 0xe0, - 0xc6, 0xa5, 0xb4, 0x3e, 0x88, 0x24, 0xfd, 0xb1, 0x75, 0xe3, 0x2e, 0xf7, 0x3b, 0x87, 0x73, 0x6e, - 0xe6, 0xd2, 0x86, 0xcf, 0x23, 0x8e, 0x32, 0x64, 0x8e, 0x17, 0x81, 0xe7, 0xf4, 0x5b, 0x8e, 0x1c, - 0xd8, 0x22, 0x05, 0x09, 0x6a, 0x6d, 0x21, 0xd9, 0x99, 0x64, 0xf7, 0x5b, 0xcd, 0xbd, 0x00, 0x20, - 0x88, 0xb8, 0xc3, 0x44, 0xe8, 0xb0, 0x24, 0x01, 0xc9, 0x64, 0x08, 0x09, 0xce, 0xfc, 0xe6, 0x1b, - 0xa1, 0xd5, 0x0e, 0x06, 0x37, 0x6c, 0x78, 0x05, 0x69, 0x3b, 0x02, 0x0f, 0xd5, 0x3a, 0x2d, 0x61, - 0x18, 0x24, 0x3c, 0xd5, 0x88, 0x41, 0xac, 0xb2, 0x3b, 0x9f, 0x54, 0x9d, 0xd2, 0x84, 0xc5, 0x1c, - 0x05, 0xf3, 0x39, 0x6a, 0x45, 0x43, 0xb1, 0xb6, 0xdd, 0x15, 0xa2, 0xee, 0x53, 0x9a, 0x75, 0x76, - 0x31, 0x1c, 0x71, 0xd4, 0x14, 0x43, 0xb1, 0x2a, 0x6e, 0x39, 0x23, 0xb7, 0x19, 0x50, 0x8f, 0xe9, - 0x0e, 0xf6, 0x58, 0xca, 0xbb, 0x3e, 0xc4, 0x71, 0x28, 0x63, 0x9e, 0x48, 0xd4, 0x36, 0xf2, 0x94, - 0x5a, 0x2e, 0x5c, 0xfe, 0x72, 0xf5, 0x90, 0x56, 0x67, 0xe6, 0x3e, 0x4f, 0x31, 0x5b, 0x57, 0xdb, - 0xcc, 0xf3, 0x2a, 0x39, 0xbd, 0x9b, 0x43, 0x53, 0xa3, 0xf5, 0xf5, 0xe5, 0x5d, 0x8e, 0x02, 0x12, - 0xe4, 0x67, 0x4f, 0x84, 0x2a, 0x1d, 0x0c, 0xd4, 0x11, 0xdd, 0x5a, 0xfd, 0x37, 0xc3, 0xfe, 0xfb, - 0x3e, 0xf6, 0x7a, 0x40, 0xd3, 0xfa, 0xcf, 0xb1, 0xa8, 0x30, 0x0f, 0x9e, 0x3f, 0xbe, 0x5f, 0x8b, - 0x0d, 0x73, 0x77, 0x79, 0x05, 0xc1, 0x86, 0x0f, 0x90, 0x66, 0x13, 0x5e, 0x90, 0xa3, 0xf6, 0xf5, - 0xfb, 0x44, 0x27, 0xe3, 0x89, 0x4e, 0xbe, 0x26, 0x3a, 0x79, 0x99, 0xea, 0x85, 0xf1, 0x54, 0x2f, - 0x7c, 0x4e, 0xf5, 0xc2, 0xfd, 0x69, 0x10, 0xca, 0xde, 0xa3, 0x67, 0xfb, 0x10, 0x3b, 0x8b, 0x3a, - 0x48, 0x83, 0xe5, 0xf7, 0x09, 0x13, 0xc2, 0x19, 0xcc, 0x72, 0xe5, 0x50, 0x70, 0xf4, 0x4a, 0xf9, - 0xb9, 0xce, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x82, 0x67, 0x80, 0x6a, 0xfb, 0x01, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// MsgClient is the client API for Msg service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type MsgClient interface { - // PayForBlobs allows the user to pay for the inclusion of one or more blobs - PayForBlobs(ctx context.Context, in *MsgPayForBlobs, opts ...grpc.CallOption) (*MsgPayForBlobsResponse, error) -} - -type msgClient struct { - cc grpc1.ClientConn -} - -func NewMsgClient(cc grpc1.ClientConn) MsgClient { - return &msgClient{cc} -} - -func (c *msgClient) PayForBlobs(ctx context.Context, in *MsgPayForBlobs, opts ...grpc.CallOption) (*MsgPayForBlobsResponse, error) { - out := new(MsgPayForBlobsResponse) - err := c.cc.Invoke(ctx, "/celestia.blob.v1.Msg/PayForBlobs", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// MsgServer is the server API for Msg service. -type MsgServer interface { - // PayForBlobs allows the user to pay for the inclusion of one or more blobs - PayForBlobs(context.Context, *MsgPayForBlobs) (*MsgPayForBlobsResponse, error) -} - -// UnimplementedMsgServer can be embedded to have forward compatible implementations. -type UnimplementedMsgServer struct { -} - -func (*UnimplementedMsgServer) PayForBlobs(ctx context.Context, req *MsgPayForBlobs) (*MsgPayForBlobsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method PayForBlobs not implemented") -} - -func RegisterMsgServer(s grpc1.Server, srv MsgServer) { - s.RegisterService(&_Msg_serviceDesc, srv) -} - -func _Msg_PayForBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgPayForBlobs) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).PayForBlobs(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/celestia.blob.v1.Msg/PayForBlobs", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).PayForBlobs(ctx, req.(*MsgPayForBlobs)) - } - return interceptor(ctx, in, info, handler) -} - -var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.blob.v1.Msg", - HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "PayForBlobs", - Handler: _Msg_PayForBlobs_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "celestia/blob/v1/tx.proto", -} - -func (m *MsgPayForBlobs) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgPayForBlobs) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgPayForBlobs) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ShareVersions) > 0 { - dAtA2 := make([]byte, len(m.ShareVersions)*10) - var j1 int - for _, num := range m.ShareVersions { - for num >= 1<<7 { - dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j1++ - } - dAtA2[j1] = uint8(num) - j1++ - } - i -= j1 - copy(dAtA[i:], dAtA2[:j1]) - i = encodeVarintTx(dAtA, i, uint64(j1)) - i-- - dAtA[i] = 0x42 - } - if len(m.ShareCommitments) > 0 { - for iNdEx := len(m.ShareCommitments) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.ShareCommitments[iNdEx]) - copy(dAtA[i:], m.ShareCommitments[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.ShareCommitments[iNdEx]))) - i-- - dAtA[i] = 0x22 - } - } - if len(m.BlobSizes) > 0 { - dAtA4 := make([]byte, len(m.BlobSizes)*10) - var j3 int - for _, num := range m.BlobSizes { - for num >= 1<<7 { - dAtA4[j3] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j3++ - } - dAtA4[j3] = uint8(num) - j3++ - } - i -= j3 - copy(dAtA[i:], dAtA4[:j3]) - i = encodeVarintTx(dAtA, i, uint64(j3)) - i-- - dAtA[i] = 0x1a - } - if len(m.Namespaces) > 0 { - for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Namespaces[iNdEx]) - copy(dAtA[i:], m.Namespaces[iNdEx]) - i = encodeVarintTx(dAtA, i, uint64(len(m.Namespaces[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if len(m.Signer) > 0 { - i -= len(m.Signer) - copy(dAtA[i:], m.Signer) - i = encodeVarintTx(dAtA, i, uint64(len(m.Signer))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgPayForBlobsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgPayForBlobsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgPayForBlobsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *MsgPayForBlobs) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Signer) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if len(m.Namespaces) > 0 { - for _, b := range m.Namespaces { - l = len(b) - n += 1 + l + sovTx(uint64(l)) - } - } - if len(m.BlobSizes) > 0 { - l = 0 - for _, e := range m.BlobSizes { - l += sovTx(uint64(e)) - } - n += 1 + sovTx(uint64(l)) + l - } - if len(m.ShareCommitments) > 0 { - for _, b := range m.ShareCommitments { - l = len(b) - n += 1 + l + sovTx(uint64(l)) - } - } - if len(m.ShareVersions) > 0 { - l = 0 - for _, e := range m.ShareVersions { - l += sovTx(uint64(e)) - } - n += 1 + sovTx(uint64(l)) + l - } - return n -} - -func (m *MsgPayForBlobsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *MsgPayForBlobs) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgPayForBlobs: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgPayForBlobs: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Signer = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Namespaces = append(m.Namespaces, make([]byte, postIndex-iNdEx)) - copy(m.Namespaces[len(m.Namespaces)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType == 0 { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BlobSizes = append(m.BlobSizes, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.BlobSizes) == 0 { - m.BlobSizes = make([]uint32, 0, elementCount) - } - for iNdEx < postIndex { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BlobSizes = append(m.BlobSizes, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field BlobSizes", wireType) - } - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ShareCommitments", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ShareCommitments = append(m.ShareCommitments, make([]byte, postIndex-iNdEx)) - copy(m.ShareCommitments[len(m.ShareCommitments)-1], dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 8: - if wireType == 0 { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ShareVersions = append(m.ShareVersions, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.ShareVersions) == 0 { - m.ShareVersions = make([]uint32, 0, elementCount) - } - for iNdEx < postIndex { - var v uint32 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.ShareVersions = append(m.ShareVersions, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field ShareVersions", wireType) - } - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgPayForBlobsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgPayForBlobsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgPayForBlobsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipTx(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthTx - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupTx - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthTx - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/blob/types/tx.pb.gw.go b/x/blob/types/tx.pb.gw.go deleted file mode 100644 index f74689d3aa..0000000000 --- a/x/blob/types/tx.pb.gw.go +++ /dev/null @@ -1,169 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/blob/v1/tx.proto - -/* -Package types is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package types - -import ( - "context" - "io" - "net/http" - - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join - -func request_Msg_PayForBlobs_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgPayForBlobs - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.PayForBlobs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Msg_PayForBlobs_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MsgPayForBlobs - var metadata runtime.ServerMetadata - - newReader, berr := utilities.IOReaderFactory(req.Body) - if berr != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) - } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.PayForBlobs(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterMsgHandlerServer registers the http handlers for service Msg to "mux". -// UnaryRPC :call MsgServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMsgHandlerFromEndpoint instead. -func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MsgServer) error { - - mux.Handle("POST", pattern_Msg_PayForBlobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Msg_PayForBlobs_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_PayForBlobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterMsgHandlerFromEndpoint is same as RegisterMsgHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterMsgHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterMsgHandler(ctx, mux, conn) -} - -// RegisterMsgHandler registers the http handlers for service Msg to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterMsgHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterMsgHandlerClient(ctx, mux, NewMsgClient(conn)) -} - -// RegisterMsgHandlerClient registers the http handlers for service Msg -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MsgClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MsgClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "MsgClient" to call the correct interceptors. -func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MsgClient) error { - - mux.Handle("POST", pattern_Msg_PayForBlobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Msg_PayForBlobs_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Msg_PayForBlobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Msg_PayForBlobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"blob", "v1", "payforblobs"}, "", runtime.AssumeColonVerbOpt(false))) -) - -var ( - forward_Msg_PayForBlobs_0 = runtime.ForwardResponseMessage -) From bf454e9dea89ec5c9fc9f1f9f418e9b0eac47373 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:24 -0400 Subject: [PATCH 021/140] Revert "feat: remove x/blob in favor of rootulp/blob" This reverts commit c8abd649b449e29eaa5dd4dbdf873be1671e0312. --- go.mod | 3 +- go.sum | 10 +- node/go.mod | 19 +- node/go.sum | 22 +- x/blob/README.md | 206 ++ x/blob/ante/ante.go | 52 + x/blob/ante/ante_test.go | 115 + x/blob/ante/blob_share_decorator.go | 83 + x/blob/ante/blob_share_decorator_test.go | 178 ++ x/blob/ante/max_total_blob_size_ante.go | 83 + x/blob/ante/max_total_blob_size_ante_test.go | 139 ++ x/blob/client/cli/payforblob.go | 291 +++ x/blob/client/cli/query.go | 25 + x/blob/client/cli/query_params.go | 34 + x/blob/client/cli/tx.go | 24 + x/blob/client/cli/util.go | 32 + x/blob/client/testutil/integration_test.go | 194 ++ x/blob/doc.go | 4 + x/blob/genesis.go | 20 + x/blob/go.mod | 208 ++ x/blob/go.sum | 2025 ++++++++++++++++++ x/blob/handler.go | 28 + x/blob/keeper/gas_test.go | 85 + x/blob/keeper/genesis_test.go | 21 + x/blob/keeper/grpc_query.go | 7 + x/blob/keeper/grpc_query_params.go | 19 + x/blob/keeper/grpc_query_params_test.go | 20 + x/blob/keeper/keeper.go | 57 + x/blob/keeper/keeper_test.go | 107 + x/blob/keeper/msg_server.go | 17 + x/blob/keeper/params.go | 31 + x/blob/keeper/params_test.go | 18 + x/blob/module.go | 165 ++ x/blob/test/decode_blob_tx_test.go | 102 + x/blob/test/testdata/block_response.json | 925 ++++++++ x/blob/types/blob_tx.go | 128 ++ x/blob/types/blob_tx_test.go | 248 +++ x/blob/types/codec.go | 33 + x/blob/types/errors.go | 39 + x/blob/types/estimate_gas_test.go | 110 + x/blob/types/event.pb.go | 487 +++++ x/blob/types/events.go | 16 + x/blob/types/genesis.go | 17 + x/blob/types/genesis.pb.go | 321 +++ x/blob/types/genesis_test.go | 52 + x/blob/types/keys.go | 22 + x/blob/types/params.go | 95 + x/blob/types/params.pb.go | 341 +++ x/blob/types/params_test.go | 44 + x/blob/types/payforblob.go | 258 +++ x/blob/types/payforblob_test.go | 410 ++++ x/blob/types/query.pb.go | 534 +++++ x/blob/types/query.pb.gw.go | 153 ++ x/blob/types/tx.pb.go | 875 ++++++++ x/blob/types/tx.pb.gw.go | 169 ++ 55 files changed, 9691 insertions(+), 30 deletions(-) create mode 100644 x/blob/README.md create mode 100644 x/blob/ante/ante.go create mode 100644 x/blob/ante/ante_test.go create mode 100644 x/blob/ante/blob_share_decorator.go create mode 100644 x/blob/ante/blob_share_decorator_test.go create mode 100644 x/blob/ante/max_total_blob_size_ante.go create mode 100644 x/blob/ante/max_total_blob_size_ante_test.go create mode 100644 x/blob/client/cli/payforblob.go create mode 100644 x/blob/client/cli/query.go create mode 100644 x/blob/client/cli/query_params.go create mode 100644 x/blob/client/cli/tx.go create mode 100644 x/blob/client/cli/util.go create mode 100644 x/blob/client/testutil/integration_test.go create mode 100644 x/blob/doc.go create mode 100644 x/blob/genesis.go create mode 100644 x/blob/go.mod create mode 100644 x/blob/go.sum create mode 100644 x/blob/handler.go create mode 100644 x/blob/keeper/gas_test.go create mode 100644 x/blob/keeper/genesis_test.go create mode 100644 x/blob/keeper/grpc_query.go create mode 100644 x/blob/keeper/grpc_query_params.go create mode 100644 x/blob/keeper/grpc_query_params_test.go create mode 100644 x/blob/keeper/keeper.go create mode 100644 x/blob/keeper/keeper_test.go create mode 100644 x/blob/keeper/msg_server.go create mode 100644 x/blob/keeper/params.go create mode 100644 x/blob/keeper/params_test.go create mode 100644 x/blob/module.go create mode 100644 x/blob/test/decode_blob_tx_test.go create mode 100644 x/blob/test/testdata/block_response.json create mode 100644 x/blob/types/blob_tx.go create mode 100644 x/blob/types/blob_tx_test.go create mode 100644 x/blob/types/codec.go create mode 100644 x/blob/types/errors.go create mode 100644 x/blob/types/estimate_gas_test.go create mode 100644 x/blob/types/event.pb.go create mode 100644 x/blob/types/events.go create mode 100644 x/blob/types/genesis.go create mode 100644 x/blob/types/genesis.pb.go create mode 100644 x/blob/types/genesis_test.go create mode 100644 x/blob/types/keys.go create mode 100644 x/blob/types/params.go create mode 100644 x/blob/types/params.pb.go create mode 100644 x/blob/types/params_test.go create mode 100644 x/blob/types/payforblob.go create mode 100644 x/blob/types/payforblob_test.go create mode 100644 x/blob/types/query.pb.go create mode 100644 x/blob/types/query.pb.gw.go create mode 100644 x/blob/types/tx.pb.go create mode 100644 x/blob/types/tx.pb.gw.go diff --git a/go.mod b/go.mod index a259efbb65..8b8ed2030f 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 - github.com/celestiaorg/celestia-app v1.14.0 + github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/celestiaorg/go-square v1.1.0 github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 github.com/celestiaorg/knuu v0.14.0 @@ -246,6 +246,7 @@ require ( ) replace ( + github.com/celestiaorg/celestia-app/x/blob => ./x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/go.sum b/go.sum index ef1244506e..bf8dcf790c 100644 --- a/go.sum +++ b/go.sum @@ -318,8 +318,6 @@ github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7 h1:nxplQi8w github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7/go.mod h1:1EF5MfOxVf0WC51Gb7pJ6bcZxnXKNAf9pqWtjgPBAYc= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-app v1.14.0 h1:Av1Q8de41WRABQ+mnwHwj4a6Rd5sqEUZqrTwuA1LbBM= -github.com/celestiaorg/celestia-app v1.14.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -334,8 +332,6 @@ github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= github.com/celestiaorg/nmt v0.22.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= -github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 h1:Q8nr5SAtDW5gocrBwqwDJcSS/JedqU58WwQA2SP+nXw= -github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2/go.mod h1:s/LzLUw0WeYPJ6qdk4q46jKLOq7rc9Z5Mdrxtfpcigw= github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= @@ -831,9 +827,8 @@ github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoD github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -1188,9 +1183,8 @@ github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNw github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= diff --git a/node/go.mod b/node/go.mod index 89a243ba2f..50116bb77f 100644 --- a/node/go.mod +++ b/node/go.mod @@ -3,6 +3,8 @@ module github.com/celestiaorg/celestia-app/node go 1.22.4 require ( + github.com/celestiaorg/celestia-app v0.0.0 + github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/celestiaorg/celestia-app/v2 v2.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 @@ -33,8 +35,7 @@ require ( github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect - github.com/celestiaorg/celestia-app v1.14.0 // indirect - github.com/celestiaorg/celestia-app/x/blob v0.0.0 // indirect + github.com/celestiaorg/celestia-app v1.13.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect @@ -180,13 +181,13 @@ require ( go.opentelemetry.io/otel/sdk v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/net v0.27.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect @@ -207,11 +208,11 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app with a fork because this fork _should_ not include x/blob any more. - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.20.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.1.0 + // replace x/blob with a distinct Go module that contains x/blob. + github.com/celestiaorg/celestia-app/x/blob => github.com/rootulp/celestia-app/x/blob v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init(). github.com/celestiaorg/celestia-app/v2 => ../ - // replace x/blob with a distinct Go module that contains x/blob. - // github.com/celestiaorg/celestia-app/x/blob => github.com/rootulp/blob v1.1.0 github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/go.sum b/node/go.sum index df7b751cad..da68c151a3 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,6 +311,8 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= +github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -1128,10 +1130,6 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/blob v1.1.0 h1:ynGJrHxMeTIZ+V7eZteDGwy6WTjLA8lGq/Ostvpevkc= -github.com/rootulp/blob v1.1.0/go.mod h1:sjT47TfX4Hix+7QilHHMGV3CsgXcUZ/cksES0kcLoew= -github.com/rootulp/celestia-app v1.20.0 h1:ZBncZbbd7WjhHXot8L7qSsXj9LKIebfs10nlD42eRRA= -github.com/rootulp/celestia-app v1.20.0/go.mod h1:j5ricGhB2uiDTjuZG3X6bbNLUcugGkjyqxVrD9lbcwc= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= @@ -1369,8 +1367,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1478,8 +1476,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1633,14 +1631,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/x/blob/README.md b/x/blob/README.md new file mode 100644 index 0000000000..e72c12db44 --- /dev/null +++ b/x/blob/README.md @@ -0,0 +1,206 @@ +# `x/blob` + +## Abstract + +The `x/blob` module enables users to pay for arbitrary data to be published to +the Celestia blockchain. This module's name is derived from Binary Large Object +(blob). + +To use the blob module, users create and submit a `BlobTx` that is composed of: + +1. A single [`sdk.Tx`](https://github.com/celestiaorg/cosmos-sdk/blob/v1.15.0-sdk-v0.46.13/docs/architecture/adr-020-protobuf-transaction-encoding.md) which encapsulates a message of type `MsgPayForBlobs`. +1. Multiple `Blob`s: the data they wish to publish. + +After the `BlobTx` is submitted to the network, a block producer separates the +the `sdk.Tx` from the blob(s). Both components get included in the +[data square](../../specs/src/specs/data_square_layout.md) in different namespaces: + +1. The `sdk.Tx` and some metadata about the separated blobs gets included in the `PayForBlobNamespace` (one of the [reserved namespaces](../../specs/src/specs/namespace.md#reserved-namespaces)). +1. The blob(s) get included in the namespace specified by each blob. + +After a block has been created, the user can verify that their data was included +in a block via a blob inclusion proof. A blob inclusion proof uses the +`ShareCommitment` in the original `sdk.Tx` transaction and subtree roots of the +block's data square to prove to the user that the shares that compose their +original data do in fact exist in a particular block. + +> TODO: link to blob inclusion (and fraud) proof + +## State + +The blob module doesn't maintain it's own state outside of two params. Meaning +that the blob module only uses the params and auth module stores. + +### Params + +```proto +// Params defines the parameters for the module. +message Params { + option (gogoproto.goproto_stringer) = false; + uint32 gas_per_blob_byte = 1 + [ (gogoproto.moretags) = "yaml:\"gas_per_blob_byte\"" ]; + uint64 gov_max_square_size = 2 + [ (gogoproto.moretags) = "yaml:\"gov_max_square_size\"" ]; +} +``` + +#### `GasPerBlobByte` + +`GasPerBlobByte` is the amount of gas that is consumed per byte of blob data +when a `MsgPayForBlobs` is processed. Currently, the default value is 8. This +value is set below that of normal transaction gas consumption, which is 10. + +#### `GovMaxSquareSize` + +`GovMaxSquareSize` is a governance modifiable parameter that is used to +determine the max effective square size. See +[ADR021](../../docs/architecture/adr-021-restricted-block-size.md) for more +details. + +## Messages + +`MsgPayForBlobs` pays for a set of blobs to be included in the block. Blob transactions that contain this `sdk.Msg` are also referred to as "PFBs". + +```proto +// MsgPayForBlobs pays for the inclusion of a blob in the block. +message MsgPayForBlobs { + // signer is the bech32 encoded signer address + string signer = 1; + // namespaces is a list of namespaces that the blobs are associated with. A + // namespace is a byte slice of length 29 where the first byte is the + // namespaceVersion and the subsequent 28 bytes are the namespaceId. + repeated bytes namespaces = 2; + // blob_sizes is a list of blob sizes (one per blob). Each size is in bytes. + repeated uint32 blob_sizes = 3; + // share_commitments is a list of share commitments (one per blob). + repeated bytes share_commitments = 4; + // share_versions are the versions of the share format that the blobs + // associated with this message should use when included in a block. The + // share_versions specified must match the share_versions used to generate the + // share_commitment in this message. + repeated uint32 share_versions = 8; +} +``` + +> [!NOTE] +> The internal representation of share versions is always `uint8`. Since protobuf doesn't support the `uint8` type, they are encoded and decoded as `uint32`. + +### Generating the `ShareCommitment` + +The share commitment is the commitment to share encoded blobs. It can be used +for cheap inclusion checks for some data by light clients. More information and +rational can be found in the [data square layout +specs](../../specs/src/specs/data_square_layout.md). + +1. Split the blob into shares of size [`shareSize`](../../specs/src/specs/data_structures.md#consensus-parameters) +1. Determine the + [`SubtreeWidth`](https://github.com/celestiaorg/celestia-app/blob/v1.0.0-rc2/pkg/shares/non_interactive_defaults.go#L94-L116) + by dividing the length in shares by the `SubtreeRootThreshold`. +1. Generate each subtree root by diving the blob shares into `SubtreeWidth` + sized sets, then take the binary [namespaced merkle tree + (NMT)](https://github.com/celestiaorg/nmt/blob/v0.16.0/docs/spec/nmt.md) root + of each set of shares. +1. Calculate the final share commitment by taking the merkle root (note: not an + NMT, just a normal binary merkle root) of the subtree roots from the previous + step. + +See +[`CreateCommitment`](https://github.com/celestiaorg/celestia-app/blob/v1.0.0-rc2/x/blob/types/payforblob.go#L169-L236) +for an implementation. See [data square +layout](../../specs/src/specs/data_square_layout.md) and +[ADR013](../../docs/architecture/adr-013-non-interactive-default-rules-for-zero-padding.md) +for details on the rational of the square layout. + +## Validity Rules + +In order for a proposal block to be considered valid, each `BlobTx`, and thus +each PFB, to be included in a block must follow a set of validity rules. + +1. Signatures: All blob transactions must have valid signatures. This is + state-dependent because correct signatures require using the correct sequence + number(aka nonce). +1. Single SDK.Msg: There must be only a single sdk.Msg encoded in the `sdk.Tx` + field of the blob transaction `BlobTx`. +1. Namespace Validity: The namespace of each blob in a blob transaction `BlobTx` + must be valid. This validity is determined by the following sub-rules: + 1. The namespace of each blob must match the respective (same index) + namespace in the `MsgPayForBlobs` `sdk.Msg` field `namespaces`. + 1. The namespace is not reserved for protocol use. +1. Blob Size: No blob can have a size of 0. +1. Blob Count: There must be one or more blobs included in the transaction. +1. Share Commitment Validity: Each share commitment must be valid. + 1. The size of each of the share commitments must be equal to the digest of + the hash function used (sha256 so 32 bytes). + 1. The share commitment must be calculated using the steps specified above + in [Generating the Share + Commitment](./README.md#generating-the-sharecommitment) +1. Share Versions: The versions of the shares must be supported. +1. Signer Address: The signer address must be a valid Celestia address. +1. Proper Encoding: The blob transactions must be properly encoded. +1. Size Consistency: The sizes included in the PFB field `blob_sizes`, and each + must match the actual size of the respective (same index) blob in bytes. + +## `IndexWrappedTx` + +When a block producer is preparing a block, they must perform an extra step for +`BlobTx`s so that end-users can find the blob shares relevant to their submitted +`BlobTx`. In particular, block proposers wrap the `BlobTx` in the PFB namespace +with the index of the first share of the blob in the data square. See [Blob +share commitment +rules](../../specs/src/specs/data_square_layout.md#blob-share-commitment-rules) +for more details. + +Since `BlobTx`s can contain multiple blobs, the `sdk.Tx` portion of the `BlobTx` +is wrapped with one share index per blob in the transaction. The index wrapped +transaction is called an +[IndexWrapper](https://github.com/celestiaorg/celestia-core/blob/2d2a65f59eabf1993804168414b86d758f30c383/proto/tendermint/types/types.proto#L192-L198) +and this is the struct that gets marshalled and written to the +PayForBlobNamespace. + +## Events + +The blob module emits the following events: + +### Blob Events + +#### `EventPayForBlobs` + +| Attribute Key | Attribute Value | +|---------------|-----------------------------------------------| +| signer | {bech32 encoded signer address} | +| blob_sizes | {sizes of blobs in bytes} | +| namespaces | {namespaces the blobs should be published to} | + +## Parameters + +| Key | Type | Default | +|----------------|--------|---------| +| GasPerBlobByte | uint32 | 8 | + +### Usage + +```shell +celestia-appd tx blob PayForBlobs [flags] +``` + +For submitting PFB transaction via a light client's rpc, see [celestia-node's +documentation](https://docs.celestia.org/developers/node-tutorial#submitting-data). + +The steps in the +[`SubmitPayForBlobs`](https://github.com/celestiaorg/celestia-app/blob/v1.0.0-rc2/x/blob/payforblob.go#L15-L54) +function can be reverse engineered to submit blobs programmatically. + + + +## FAQ + +Q: Why do the PFB transactions in the response from Comet BFT API endpoints fail to decode to valid transaction hashes? + +The response of CometBFT API endpoints (e.g. `/cosmos/base/tendermint/v1beta1/blocks/{block_number}`) will contain a field called `txs` with base64 encoded transactions. In Celestia, transactions may have one of the two possible types of `sdk.Tx` or `BlobTx` (which wraps around a `sdk.Tx`). As such, each transaction should be first decoded and then gets unmarshalled according to its type, as explained below: + +1. Base64 decode the transaction +1. Check to see if the transaction is a `BlobTx` by unmarshalling it into a `BlobTx` type. + 1. If it is a `BlobTx`, then unmarshal the `BlobTx`'s `Tx` field into a `sdk.Tx` type. + 1. If it is not a `BlobTx`, then unmarshal the transaction into a `sdk.Tx` type. + +See [test/decode_blob_tx_test.go](./test/decode_blob_tx_test.go) for an example of how to do this. diff --git a/x/blob/ante/ante.go b/x/blob/ante/ante.go new file mode 100644 index 0000000000..68912bb38d --- /dev/null +++ b/x/blob/ante/ante.go @@ -0,0 +1,52 @@ +package ante + +import ( + "github.com/celestiaorg/celestia-app/x/blob/types" + + "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// MinGasPFBDecorator helps to prevent a PFB from being included in a block +// but running out of gas in DeliverTx (effectively getting DA for free) +// This decorator should be run after any decorator that consumes gas. +type MinGasPFBDecorator struct { + k BlobKeeper +} + +func NewMinGasPFBDecorator(k BlobKeeper) MinGasPFBDecorator { + return MinGasPFBDecorator{k} +} + +// AnteHandle implements the AnteHandler interface. It checks to see +// if the transaction contains a MsgPayForBlobs and if so, checks that +// the transaction has allocated enough gas. +func (d MinGasPFBDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { + if ctx.IsReCheckTx() { + return next(ctx, tx, simulate) + } + + var gasPerByte uint32 + txGas := ctx.GasMeter().GasRemaining() + for _, m := range tx.GetMsgs() { + // NOTE: here we assume only one PFB per transaction + if pfb, ok := m.(*types.MsgPayForBlobs); ok { + if gasPerByte == 0 { + // lazily fetch the gas per byte param + gasPerByte = d.k.GasPerBlobByte(ctx) + } + gasToConsume := pfb.Gas(gasPerByte) + if gasToConsume > txGas { + return ctx, errors.Wrapf(sdkerrors.ErrInsufficientFee, "not enough gas to pay for blobs (minimum: %d, got: %d)", gasToConsume, txGas) + } + } + } + + return next(ctx, tx, simulate) +} + +type BlobKeeper interface { + GasPerBlobByte(ctx sdk.Context) uint32 + GovMaxSquareSize(ctx sdk.Context) uint64 +} diff --git a/x/blob/ante/ante_test.go b/x/blob/ante/ante_test.go new file mode 100644 index 0000000000..19a33eba80 --- /dev/null +++ b/x/blob/ante/ante_test.go @@ -0,0 +1,115 @@ +package ante_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + ante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/shares" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" +) + +const ( + testGasPerBlobByte = 10 + testGovMaxSquareSize = 64 +) + +func TestPFBAnteHandler(t *testing.T) { + txConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...).TxConfig + testCases := []struct { + name string + pfb *blob.MsgPayForBlobs + txGas uint64 + gasConsumed uint64 + wantErr bool + }{ + { + name: "valid pfb single blob", + pfb: &blob.MsgPayForBlobs{ + // 1 share = 512 bytes = 5120 gas + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, + }, + txGas: appconsts.ShareSize * testGasPerBlobByte, + gasConsumed: 0, + wantErr: false, + }, + { + name: "valid pfb multi blob", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1)), uint32(shares.AvailableBytesFromSparseShares(2))}, + }, + txGas: 3 * appconsts.ShareSize * testGasPerBlobByte, + gasConsumed: 0, + wantErr: false, + }, + { + name: "pfb single blob not enough gas", + pfb: &blob.MsgPayForBlobs{ + // 2 share = 1024 bytes = 10240 gas + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1) + 1)}, + }, + txGas: 2*appconsts.ShareSize*testGasPerBlobByte - 1, + gasConsumed: 0, + wantErr: true, + }, + { + name: "pfb mulit blob not enough gas", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1)), uint32(shares.AvailableBytesFromSparseShares(2))}, + }, + txGas: 3*appconsts.ShareSize*testGasPerBlobByte - 1, + gasConsumed: 0, + wantErr: true, + }, + { + name: "pfb with existing gas consumed", + pfb: &blob.MsgPayForBlobs{ + // 1 share = 512 bytes = 5120 gas + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, + }, + txGas: appconsts.ShareSize*testGasPerBlobByte + 10000 - 1, + gasConsumed: 10000, + wantErr: true, + }, + { + name: "valid pfb with existing gas consumed", + pfb: &blob.MsgPayForBlobs{ + // 1 share = 512 bytes = 5120 gas + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(10))}, + }, + txGas: 1000000, + gasConsumed: 10000, + wantErr: false, + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + anteHandler := ante.NewMinGasPFBDecorator(mockBlobKeeper{}) + ctx := sdk.Context{}.WithGasMeter(sdk.NewGasMeter(tc.txGas)).WithIsCheckTx(true) + ctx.GasMeter().ConsumeGas(tc.gasConsumed, "test") + txBuilder := txConfig.NewTxBuilder() + require.NoError(t, txBuilder.SetMsgs(tc.pfb)) + tx := txBuilder.GetTx() + _, err := anteHandler.AnteHandle(ctx, tx, false, func(ctx sdk.Context, _ sdk.Tx, _ bool) (sdk.Context, error) { return ctx, nil }) + if tc.wantErr { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} + +type mockBlobKeeper struct{} + +func (mockBlobKeeper) GasPerBlobByte(_ sdk.Context) uint32 { + return testGasPerBlobByte +} + +func (mockBlobKeeper) GovMaxSquareSize(_ sdk.Context) uint64 { + return testGovMaxSquareSize +} diff --git a/x/blob/ante/blob_share_decorator.go b/x/blob/ante/blob_share_decorator.go new file mode 100644 index 0000000000..0879efb431 --- /dev/null +++ b/x/blob/ante/blob_share_decorator.go @@ -0,0 +1,83 @@ +package ante + +import ( + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/shares" + + "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// BlobShareDecorator helps to prevent a PFB from being included in a block but +// not fitting in a data square because the number of shares occupied by the PFB +// exceeds the max number of shares available to blob data in a data square. +type BlobShareDecorator struct { + k BlobKeeper +} + +func NewBlobShareDecorator(k BlobKeeper) BlobShareDecorator { + return BlobShareDecorator{k} +} + +// AnteHandle implements the Cosmos SDK AnteHandler function signature. It +// returns an error if tx contains a MsgPayForBlobs where the shares occupied by +// the PFB exceeds the max number of shares in a data square. +func (d BlobShareDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { + if !ctx.IsCheckTx() { + return next(ctx, tx, simulate) + } + + if ctx.BlockHeader().Version.App == v1.Version { + return next(ctx, tx, simulate) + } + + maxBlobShares := d.getMaxBlobShares(ctx) + for _, m := range tx.GetMsgs() { + if pfb, ok := m.(*blobtypes.MsgPayForBlobs); ok { + if sharesNeeded := getSharesNeeded(pfb.BlobSizes); sharesNeeded > maxBlobShares { + return ctx, errors.Wrapf(blobtypes.ErrBlobsTooLarge, "the number of shares occupied by blobs in this MsgPayForBlobs %d exceeds the max number of shares available for blob data %d", sharesNeeded, maxBlobShares) + } + } + } + + return next(ctx, tx, simulate) +} + +// getMaxBlobShares returns the max the number of shares available for blob data. +func (d BlobShareDecorator) getMaxBlobShares(ctx sdk.Context) int { + squareSize := d.getMaxSquareSize(ctx) + totalShares := squareSize * squareSize + // The PFB tx share must occupy at least one share so the number of blob shares + // is at most one less than totalShares. + blobShares := totalShares - 1 + return blobShares +} + +// getMaxSquareSize returns the maximum square size based on the current values +// for the governance parameter and the versioned constant. +func (d BlobShareDecorator) getMaxSquareSize(ctx sdk.Context) int { + // TODO: fix hack that forces the max square size for the first height to + // 64. This is due to our fork of the sdk not initializing state before + // BeginBlock of the first block. This is remedied in versions of the sdk + // and comet that have full support of PreparePropsoal, although + // celestia-app does not currently use those. see this PR for more details + // https://github.com/cosmos/cosmos-sdk/pull/14505 + if ctx.BlockHeader().Height <= 1 { + return int(appconsts.DefaultGovMaxSquareSize) + } + + upperBound := appconsts.SquareSizeUpperBound(ctx.BlockHeader().Version.App) + govParam := d.k.GovMaxSquareSize(ctx) + return min(upperBound, int(govParam)) +} + +// getSharesNeeded returns the total number of shares needed to represent all of +// the blobs described by blobSizes. +func getSharesNeeded(blobSizes []uint32) (sum int) { + for _, blobSize := range blobSizes { + sum += shares.SparseSharesNeeded(blobSize) + } + return sum +} diff --git a/x/blob/ante/blob_share_decorator_test.go b/x/blob/ante/blob_share_decorator_test.go new file mode 100644 index 0000000000..0a0ec276e3 --- /dev/null +++ b/x/blob/ante/blob_share_decorator_test.go @@ -0,0 +1,178 @@ +package ante_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + ante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/shares" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + version "github.com/tendermint/tendermint/proto/tendermint/version" +) + +const ( + mebibyte = 1_048_576 // 1 MiB + squareSize = 64 +) + +func TestBlobShareDecorator(t *testing.T) { + type testCase struct { + name string + pfb *blob.MsgPayForBlobs + appVersion uint64 + wantErr error + } + + testCases := []testCase{ + { + name: "want no error if appVersion v1 and 8 MiB blob", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{8 * mebibyte}, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 1 blob that is 1 byte", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{1}, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 1 blob that is 1 MiB", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{mebibyte}, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 1 blob that is 2 MiB", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{2 * mebibyte}, + }, + appVersion: v2.Version, + // This test case should return an error because a square size of 64 + // has exactly 2 MiB of total capacity so the total blob capacity + // will be slightly smaller than 2 MiB. + wantErr: blob.ErrBlobsTooLarge, + }, + { + name: "PFB with 2 blobs that are 1 byte each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{1, 1}, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 2 blobs that are 1 MiB each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{mebibyte, mebibyte}, + }, + appVersion: v2.Version, + // This test case should return an error for the same reason a + // single blob that is 2 MiB returns an error. + wantErr: blob.ErrBlobsTooLarge, + }, + { + name: "PFB with many single byte blobs should fit", + pfb: &blob.MsgPayForBlobs{ + // 4095 blobs each of size 1 byte should occupy 4095 shares. + // When square size is 64, there are 4095 shares available to + // blob shares so we don't expect an error for this test case. + BlobSizes: repeat(4095, 1), + }, + appVersion: v2.Version, + }, + { + name: "PFB with too many single byte blobs should not fit", + pfb: &blob.MsgPayForBlobs{ + // 4096 blobs each of size 1 byte should occupy 4096 shares. + // When square size is 64, there are 4095 shares available to + // blob shares so we expect an error for this test case. + BlobSizes: repeat(4096, 1), + }, + appVersion: v2.Version, + wantErr: blob.ErrBlobsTooLarge, + }, + { + name: "PFB with 1 blob that is 1 share", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 1 blob that occupies total square - 1", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares((squareSize * squareSize) - 1))}, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 1 blob that occupies total square", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize))}, + }, + appVersion: v2.Version, + // This test case should return an error because if the blob + // occupies the total square, there is no space for the PFB tx + // share. + wantErr: blob.ErrBlobsTooLarge, + }, + { + name: "PFB with 2 blobs that are 1 share each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{ + uint32(shares.AvailableBytesFromSparseShares(1)), + uint32(shares.AvailableBytesFromSparseShares(1)), + }, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 2 blobs that occupy half the square each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{ + uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), + uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), + }, + }, + appVersion: v2.Version, + wantErr: blob.ErrBlobsTooLarge, + }, + } + + txConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...).TxConfig + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + txBuilder := txConfig.NewTxBuilder() + require.NoError(t, txBuilder.SetMsgs(tc.pfb)) + tx := txBuilder.GetTx() + + decorator := ante.NewBlobShareDecorator(mockBlobKeeper{}) + ctx := sdk.Context{}.WithIsCheckTx(true).WithBlockHeader(tmproto.Header{Version: version.Consensus{App: tc.appVersion}}) + _, err := decorator.AnteHandle(ctx, tx, false, mockNext) + assert.ErrorIs(t, tc.wantErr, err) + }) + } +} + +func mockNext(ctx sdk.Context, _ sdk.Tx, _ bool) (sdk.Context, error) { + return ctx, nil +} + +// repeat returns a slice of length n with each element set to val. +func repeat(n int, val uint32) []uint32 { + result := make([]uint32, n) + for i := range result { + result[i] = val + } + return result +} diff --git a/x/blob/ante/max_total_blob_size_ante.go b/x/blob/ante/max_total_blob_size_ante.go new file mode 100644 index 0000000000..eedd1401f2 --- /dev/null +++ b/x/blob/ante/max_total_blob_size_ante.go @@ -0,0 +1,83 @@ +package ante + +import ( + "cosmossdk.io/errors" + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/shares" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// MaxTotalBlobSizeDecorator helps to prevent a PFB from being included in a +// block but not fitting in a data square. +type MaxTotalBlobSizeDecorator struct { + k BlobKeeper +} + +func NewMaxTotalBlobSizeDecorator(k BlobKeeper) MaxTotalBlobSizeDecorator { + return MaxTotalBlobSizeDecorator{k} +} + +// AnteHandle implements the Cosmos SDK AnteHandler function signature. It +// returns an error if tx contains a MsgPayForBlobs where the total blob size is +// greater than the max total blob size. +func (d MaxTotalBlobSizeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (sdk.Context, error) { + if !ctx.IsCheckTx() { + return next(ctx, tx, simulate) + } + + if ctx.BlockHeader().Version.App != v1.Version { + return next(ctx, tx, simulate) + } + + max := d.maxTotalBlobSize(ctx) + for _, m := range tx.GetMsgs() { + if pfb, ok := m.(*blobtypes.MsgPayForBlobs); ok { + if total := getTotal(pfb.BlobSizes); total > max { + return ctx, errors.Wrapf(blobtypes.ErrTotalBlobSizeTooLarge, "total blob size %d exceeds max %d", total, max) + } + } + } + + return next(ctx, tx, simulate) +} + +// maxTotalBlobSize returns the max number of bytes available for blobs in a +// data square based on the max square size. Note it is possible that txs with a +// total blob size less than this max still fail to be included in a block due +// to overhead from the PFB tx and/or padding shares. +func (d MaxTotalBlobSizeDecorator) maxTotalBlobSize(ctx sdk.Context) int { + squareSize := d.getMaxSquareSize(ctx) + totalShares := squareSize * squareSize + // The PFB tx share must occupy at least one share so the # of blob shares + // is at least one less than totalShares. + blobShares := totalShares - 1 + return shares.AvailableBytesFromSparseShares(blobShares) +} + +// getMaxSquareSize returns the maximum square size based on the current values +// for the relevant governance parameter and the versioned constant. +func (d MaxTotalBlobSizeDecorator) getMaxSquareSize(ctx sdk.Context) int { + // TODO: fix hack that forces the max square size for the first height to + // 64. This is due to our fork of the sdk not initializing state before + // BeginBlock of the first block. This is remedied in versions of the sdk + // and comet that have full support of PreparePropsoal, although + // celestia-app does not currently use those. see this PR for more details + // https://github.com/cosmos/cosmos-sdk/pull/14505 + if ctx.BlockHeader().Height <= 1 { + return int(appconsts.DefaultGovMaxSquareSize) + } + + upperBound := appconsts.SquareSizeUpperBound(ctx.BlockHeader().Version.App) + govParam := d.k.GovMaxSquareSize(ctx) + return min(upperBound, int(govParam)) +} + +// getTotal returns the sum of the given sizes. +func getTotal(sizes []uint32) (sum int) { + for _, size := range sizes { + sum += int(size) + } + return sum +} diff --git a/x/blob/ante/max_total_blob_size_ante_test.go b/x/blob/ante/max_total_blob_size_ante_test.go new file mode 100644 index 0000000000..afabf41bcc --- /dev/null +++ b/x/blob/ante/max_total_blob_size_ante_test.go @@ -0,0 +1,139 @@ +package ante_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + ante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/shares" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + version "github.com/tendermint/tendermint/proto/tendermint/version" +) + +func TestMaxTotalBlobSizeDecorator(t *testing.T) { + type testCase struct { + name string + pfb *blob.MsgPayForBlobs + appVersion uint64 + wantErr error + } + + testCases := []testCase{ + { + name: "want no error if appVersion v2 and 8 MiB blob", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{1}, + }, + appVersion: v2.Version, + }, + { + name: "PFB with 1 blob that is 1 byte", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{1}, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 1 blob that is 1 MiB", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{mebibyte}, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 1 blob that is 2 MiB", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{2 * mebibyte}, + }, + appVersion: v1.Version, + // This test case should return an error because a square size of 64 + // has exactly 2 MiB of total capacity so the total blob capacity + // will be slightly smaller than 2 MiB. + wantErr: blob.ErrTotalBlobSizeTooLarge, + }, + { + name: "PFB with 2 blobs that are 1 byte each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{1, 1}, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 2 blobs that are 1 MiB each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{mebibyte, mebibyte}, + }, + appVersion: v1.Version, + // This test case should return an error for the same reason a + // single blob that is 2 MiB returns an error. + wantErr: blob.ErrTotalBlobSizeTooLarge, + }, + { + name: "PFB with 1 blob that is 1 share", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(1))}, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 1 blob that occupies total square - 1", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares((squareSize * squareSize) - 1))}, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 1 blob that occupies total square", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize))}, + }, + appVersion: v1.Version, + // This test case should return an error because if the blob + // occupies the total square, there is no space for the PFB tx + // share. + wantErr: blob.ErrTotalBlobSizeTooLarge, + }, + { + name: "PFB with 2 blobs that are 1 share each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{ + uint32(shares.AvailableBytesFromSparseShares(1)), + uint32(shares.AvailableBytesFromSparseShares(1)), + }, + }, + appVersion: v1.Version, + }, + { + name: "PFB with 2 blobs that occupy half the square each", + pfb: &blob.MsgPayForBlobs{ + BlobSizes: []uint32{ + uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), + uint32(shares.AvailableBytesFromSparseShares(squareSize * squareSize / 2)), + }, + }, + appVersion: v1.Version, + wantErr: blob.ErrTotalBlobSizeTooLarge, + }, + } + + txConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...).TxConfig + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + txBuilder := txConfig.NewTxBuilder() + require.NoError(t, txBuilder.SetMsgs(tc.pfb)) + tx := txBuilder.GetTx() + + decorator := ante.NewMaxTotalBlobSizeDecorator(mockBlobKeeper{}) + ctx := sdk.Context{}.WithIsCheckTx(true).WithBlockHeader(tmproto.Header{Version: version.Consensus{App: tc.appVersion}}) + _, err := decorator.AnteHandle(ctx, tx, false, mockNext) + assert.ErrorIs(t, tc.wantErr, err) + }) + } +} diff --git a/x/blob/client/cli/payforblob.go b/x/blob/client/cli/payforblob.go new file mode 100644 index 0000000000..966d3cdddb --- /dev/null +++ b/x/blob/client/cli/payforblob.go @@ -0,0 +1,291 @@ +package cli + +import ( + "bufio" + "encoding/hex" + "encoding/json" + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/spf13/cobra" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/blob" + appns "github.com/celestiaorg/go-square/namespace" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/input" + sdktx "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +const ( + // FlagShareVersion allows the user to override the share version when + // submitting a PayForBlob. + FlagShareVersion = "share-version" + + // FlagNamespaceVersion allows the user to override the namespace version when + // submitting a PayForBlob. + FlagNamespaceVersion = "namespace-version" + + // FlagFileInput allows the user to provide the path to a JSON file for + // submitting multiple blobs. + FlagFileInput = "input-file" + + // FileInputExtension is the only file extension supported for + // FlagFileInput. + FileInputExtension = ".json" +) + +func CmdPayForBlob() *cobra.Command { + cmd := &cobra.Command{ + Use: "pay-for-blob [namespaceID blob]", + Example: "celestia-appd tx blob pay-for-blob 0x00010203040506070809 0x48656c6c6f2c20576f726c6421 \\\n" + + "\t--chain-id private \\\n" + + "\t--from validator \\\n" + + "\t--keyring-backend test \\\n" + + "\t--fees 21000utia \\\n" + + "\t--yes \n\n" + + "celestia-appd tx blob pay-for-blob --input-file path/to/blobs.json \\\n" + + "\t--chain-id private \\\n" + + "\t--from validator \\\n" + + "\t--keyring-backend test \\\n" + + "\t--fees 21000utia \\\n" + + "\t--yes \n", + Short: "Pay for data blob(s) to be published to Celestia.", + Long: `Pay for data blob(s) to be published to Celestia. +To publish a single blob, specify the namespaceID and blob via CLI arguments. +To publish multiple blobs, use the --input-file flag with the path to a JSON file. +The JSON should look like: + +{ + "Blobs": [ + { + "namespaceID": "0x00010203040506070809", + "blob": "0x48656c6c6f2c20576f726c6421" + }, + { + "namespaceID": "0x00010203040506070809", + "blob": "0x48656c6c6f2c20576f726c6421" + } + ] +} + +The namespaceID is the user-specifiable portion of a version 0 namespace. +The namespaceID must be a hex encoded string of 10 bytes. +The blob must be a hex encoded string of non-zero length. + `, + Aliases: []string{"pay-for-blobs", "PayForBlobs", "PayForBlob"}, + Args: func(cmd *cobra.Command, args []string) error { + path, err := cmd.Flags().GetString(FlagFileInput) + if err != nil { + return err + } + + if path != "" { + if filepath.Ext(path) != FileInputExtension { + return fmt.Errorf("invalid file extension %v. The only supported extension is %s", filepath.Ext(path), FileInputExtension) + } + + return nil + } + + if len(args) < 2 { + return fmt.Errorf("pay-for-blob requires two arguments if %s isn't provided: namespaceID and blob", FlagFileInput) + } + + return nil + }, + RunE: func(cmd *cobra.Command, args []string) error { + namespaceVersion, err := cmd.Flags().GetUint8(FlagNamespaceVersion) + if err != nil { + return err + } + + shareVersion, err := cmd.Flags().GetUint8(FlagShareVersion) + if err != nil { + return err + } + + path, err := cmd.Flags().GetString(FlagFileInput) + if err != nil { + return err + } + + // In case of no file input, get the namespaceID and blob from the arguments + if path == "" { + blob, err := getBlobFromArguments(args[0], args[1], namespaceVersion, shareVersion) + if err != nil { + return err + } + + return broadcastPFB(cmd, blob) + } + + paresdBlobs, err := parseSubmitBlobs(path) + if err != nil { + return err + } + + var blobs []*blob.Blob + for _, paresdBlob := range paresdBlobs { + blob, err := getBlobFromArguments(paresdBlob.NamespaceID, paresdBlob.Blob, namespaceVersion, shareVersion) + if err != nil { + return err + } + blobs = append(blobs, blob) + } + + return broadcastPFB(cmd, blobs...) + }, + } + + flags.AddTxFlagsToCmd(cmd) + cmd.PersistentFlags().Uint8(FlagNamespaceVersion, 0, "Specify the namespace version (default 0)") + cmd.PersistentFlags().Uint8(FlagShareVersion, 0, "Specify the share version (default 0)") + cmd.PersistentFlags().String(FlagFileInput, "", "Specify the file input") + _ = cmd.MarkFlagRequired(flags.FlagFrom) + return cmd +} + +func getBlobFromArguments(namespaceIDArg, blobArg string, namespaceVersion, shareVersion uint8) (*blob.Blob, error) { + namespaceID, err := hex.DecodeString(strings.TrimPrefix(namespaceIDArg, "0x")) + if err != nil { + return nil, fmt.Errorf("failed to decode hex namespace ID: %w", err) + } + namespace, err := getNamespace(namespaceID, namespaceVersion) + if err != nil { + return nil, err + } + hexStr := strings.TrimPrefix(blobArg, "0x") + rawblob, err := hex.DecodeString(hexStr) + if err != nil { + return nil, fmt.Errorf("failure to decode hex blob value %s: %s", hexStr, err.Error()) + } + + blob, err := types.NewBlob(namespace, rawblob, shareVersion) + if err != nil { + return nil, fmt.Errorf("failure to create blob with hex blob value %s: %s", hexStr, err.Error()) + } + + return blob, nil +} + +func getNamespace(namespaceID []byte, namespaceVersion uint8) (appns.Namespace, error) { + switch namespaceVersion { + case appns.NamespaceVersionZero: + if len(namespaceID) != appns.NamespaceVersionZeroIDSize { + return appns.Namespace{}, fmt.Errorf("the user specifiable portion of the namespace ID must be %d bytes for namespace version 0", appns.NamespaceVersionZeroIDSize) + } + id := make([]byte, 0, appns.NamespaceIDSize) + id = append(id, appns.NamespaceVersionZeroPrefix...) + id = append(id, namespaceID...) + return appns.New(namespaceVersion, id) + default: + return appns.Namespace{}, fmt.Errorf("namespace version %d is not supported", namespaceVersion) + } +} + +// broadcastPFB creates the new PFB message type that will later be broadcast to tendermint nodes +// this private func is used in CmdPayForBlob +func broadcastPFB(cmd *cobra.Command, b ...*blob.Blob) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + // TODO: allow the user to override the share version via a new flag + // See https://github.com/celestiaorg/celestia-app/issues/1041 + pfbMsg, err := types.NewMsgPayForBlobs(clientCtx.FromAddress.String(), appconsts.LatestVersion, b...) + if err != nil { + return err + } + + // run message checks + if err = pfbMsg.ValidateBasic(); err != nil { + return err + } + + txBytes, err := writeTx(clientCtx, sdktx.NewFactoryCLI(clientCtx, cmd.Flags()), pfbMsg) + if err != nil { + return err + } + + blobTx, err := blob.MarshalBlobTx(txBytes, b...) + if err != nil { + return err + } + + // broadcast to a Tendermint node + res, err := clientCtx.BroadcastTx(blobTx) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) +} + +// writeTx attempts to generate and sign a transaction using the normal +// cosmos-sdk cli argument parsing code with the given set of messages. It will also simulate gas +// requirements if necessary. It will return an error upon failure. +// +// NOTE: Copy paste forked from the cosmos-sdk so that we can wrap the PFB with +// a blob while still using all of the normal cli parsing code +func writeTx(clientCtx client.Context, txf sdktx.Factory, msgs ...sdk.Msg) ([]byte, error) { + if clientCtx.GenerateOnly { + return nil, txf.PrintUnsignedTx(clientCtx, msgs...) + } + + txf, err := txf.Prepare(clientCtx) + if err != nil { + return nil, err + } + + if txf.SimulateAndExecute() || clientCtx.Simulate { + _, adjusted, err := sdktx.CalculateGas(clientCtx, txf, msgs...) + if err != nil { + return nil, err + } + + txf = txf.WithGas(adjusted) + _, _ = fmt.Fprintf(os.Stderr, "%s\n", sdktx.GasEstimateResponse{GasEstimate: txf.Gas()}) + } + + if clientCtx.Simulate { + return nil, nil + } + + tx, err := txf.BuildUnsignedTx(msgs...) + if err != nil { + return nil, err + } + + if !clientCtx.SkipConfirm { + txBytes, err := clientCtx.TxConfig.TxJSONEncoder()(tx.GetTx()) + if err != nil { + return nil, err + } + + if err := clientCtx.PrintRaw(json.RawMessage(txBytes)); err != nil { + _, _ = fmt.Fprintf(os.Stderr, "%s\n", txBytes) + } + + buf := bufio.NewReader(os.Stdin) + ok, err := input.GetConfirmation("confirm transaction before signing and broadcasting", buf, os.Stderr) + + if err != nil || !ok { + _, _ = fmt.Fprintf(os.Stderr, "%s\n", "cancelled transaction") + return nil, err + } + } + + err = sdktx.Sign(txf, clientCtx.GetFromName(), tx, true) + if err != nil { + return nil, err + } + + return clientCtx.TxConfig.TxEncoder()(tx.GetTx()) +} diff --git a/x/blob/client/cli/query.go b/x/blob/client/cli/query.go new file mode 100644 index 0000000000..1c87f71530 --- /dev/null +++ b/x/blob/client/cli/query.go @@ -0,0 +1,25 @@ +package cli + +import ( + "fmt" + + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/spf13/cobra" +) + +// GetQueryCmd returns the CLI query commands for this module +func GetQueryCmd() *cobra.Command { + // Group blob queries under a subcommand + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand(CmdQueryParams()) + + return cmd +} diff --git a/x/blob/client/cli/query_params.go b/x/blob/client/cli/query_params.go new file mode 100644 index 0000000000..0fc3b95b5b --- /dev/null +++ b/x/blob/client/cli/query_params.go @@ -0,0 +1,34 @@ +package cli + +import ( + "context" + + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/spf13/cobra" +) + +func CmdQueryParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "params", + Short: "shows the parameters of the module", + Args: cobra.NoArgs, + RunE: func(cmd *cobra.Command, _ []string) error { + clientCtx := client.GetClientContextFromCmd(cmd) + + queryClient := types.NewQueryClient(clientCtx) + + res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{}) + if err != nil { + return err + } + + return clientCtx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/blob/client/cli/tx.go b/x/blob/client/cli/tx.go new file mode 100644 index 0000000000..825eb6bd0b --- /dev/null +++ b/x/blob/client/cli/tx.go @@ -0,0 +1,24 @@ +package cli + +import ( + "fmt" + + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/spf13/cobra" +) + +// GetTxCmd returns the transaction commands for this module +func GetTxCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand(CmdPayForBlob()) + + return cmd +} diff --git a/x/blob/client/cli/util.go b/x/blob/client/cli/util.go new file mode 100644 index 0000000000..6c53d0eab7 --- /dev/null +++ b/x/blob/client/cli/util.go @@ -0,0 +1,32 @@ +package cli + +import ( + "encoding/json" + "os" +) + +// Define the raw content from the file input. +type blobs struct { + Blobs []blobJSON +} + +type blobJSON struct { + NamespaceID string + Blob string +} + +func parseSubmitBlobs(path string) ([]blobJSON, error) { + var rawBlobs blobs + + content, err := os.ReadFile(path) + if err != nil { + return []blobJSON{}, err + } + + err = json.Unmarshal(content, &rawBlobs) + if err != nil { + return []blobJSON{}, err + } + + return rawBlobs.Blobs, err +} diff --git a/x/blob/client/testutil/integration_test.go b/x/blob/client/testutil/integration_test.go new file mode 100644 index 0000000000..eb20f3ffc3 --- /dev/null +++ b/x/blob/client/testutil/integration_test.go @@ -0,0 +1,194 @@ +package testutil + +import ( + "encoding/hex" + "fmt" + "os" + "strconv" + "testing" + + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/gogo/protobuf/proto" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + + clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/x/blob/types" + + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + paycli "github.com/celestiaorg/celestia-app/x/blob/client/cli" + appns "github.com/celestiaorg/go-square/namespace" + abci "github.com/tendermint/tendermint/abci/types" +) + +// username is used to create a funded genesis account under this name +const username = "test" + +type IntegrationTestSuite struct { + suite.Suite + + cfg *testnode.Config + ctx testnode.Context +} + +// Create a .json file for testing +func createTestFile(t testing.TB, s string, isValid bool) *os.File { + t.Helper() + + tempdir, err := os.MkdirTemp("", "") + require.NoError(t, err) + t.Cleanup(func() { _ = os.RemoveAll(tempdir) }) + + var fp *os.File + + if isValid { + fp, err = os.CreateTemp(tempdir, "*.json") + } else { + fp, err = os.CreateTemp(tempdir, "") + } + require.NoError(t, err) + _, err = fp.WriteString(s) + + require.Nil(t, err) + + return fp +} + +func NewIntegrationTestSuite(cfg *testnode.Config) *IntegrationTestSuite { + return &IntegrationTestSuite{cfg: cfg} +} + +func (s *IntegrationTestSuite) SetupSuite() { + s.T().Log("setting up integration test suite") + s.cfg.WithFundedAccounts(username) + + s.ctx, _, _ = testnode.NewNetwork(s.T(), s.cfg) + + _, err := s.ctx.WaitForHeight(1) + s.Require().NoError(err) +} + +func (s *IntegrationTestSuite) TestSubmitPayForBlob() { + require := s.Require() + + hexBlob := "0204033704032c0b162109000908094d425837422c2116" + + validBlob := fmt.Sprintf(` + { + "Blobs": [ + { + "namespaceID": "%s", + "blob": "%s" + }, + { + "namespaceID": "%s", + "blob": "%s" + } + ] + } + `, hex.EncodeToString(appns.RandomBlobNamespaceID()), hexBlob, hex.EncodeToString(appns.RandomBlobNamespaceID()), hexBlob) + validPropFile := createTestFile(s.T(), validBlob, true) + invalidPropFile := createTestFile(s.T(), validBlob, false) + + testCases := []struct { + name string + args []string + expectErr bool + expectedCode uint32 + respType proto.Message + }{ + { + name: "single blob valid transaction", + args: []string{ + hex.EncodeToString(appns.RandomBlobNamespaceID()), + hexBlob, + fmt.Sprintf("--from=%s", username), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(appconsts.BondDenom, sdk.NewInt(1000))).String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + }, + expectErr: false, + expectedCode: 0, + respType: &sdk.TxResponse{}, + }, + { + name: "multiple blobs valid transaction", + args: []string{ + fmt.Sprintf("--from=%s", username), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(appconsts.BondDenom, sdk.NewInt(1000))).String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", paycli.FlagFileInput, validPropFile.Name()), + }, + expectErr: false, + expectedCode: 0, + respType: &sdk.TxResponse{}, + }, + { + name: "multiple blobs with invalid file path extension", + args: []string{ + fmt.Sprintf("--from=%s", username), + fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock), + fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(appconsts.BondDenom, sdk.NewInt(1000))).String()), + fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation), + fmt.Sprintf("--%s=%s", paycli.FlagFileInput, invalidPropFile.Name()), + }, + expectErr: true, + expectedCode: 0, + respType: &sdk.TxResponse{}, + }, + } + + for _, tc := range testCases { + tc := tc + require.NoError(s.ctx.WaitForNextBlock()) + s.Run(tc.name, func() { + cmd := paycli.CmdPayForBlob() + out, err := clitestutil.ExecTestCLICmd(s.ctx.Context, cmd, tc.args) + if tc.expectErr { + require.Error(err) + return + } + require.NoError(err, "test: %s\noutput: %s", tc.name, out.String()) + + err = s.ctx.Codec.UnmarshalJSON(out.Bytes(), tc.respType) + require.NoError(err, out.String(), "test: %s, output\n:", tc.name, out.String()) + + txResp := tc.respType.(*sdk.TxResponse) + require.Equal(tc.expectedCode, txResp.Code, + "test: %s, output\n:", tc.name, out.String()) + + events := txResp.Logs[0].GetEvents() + for _, e := range events { + if e.Type == types.EventTypePayForBlob { + signer := e.GetAttributes()[0].GetValue() + _, err = sdk.AccAddressFromBech32(signer) + require.NoError(err) + blob, err := hex.DecodeString(tc.args[1]) + require.NoError(err) + blobSize, err := strconv.ParseInt(e.GetAttributes()[1].GetValue(), 10, 64) + require.NoError(err) + require.Equal(len(blob), int(blobSize)) + } + } + + // wait for the tx to be indexed + s.Require().NoError(s.ctx.WaitForNextBlock()) + + // attempt to query for the transaction using the tx's hash + res, err := testnode.QueryWithoutProof(s.ctx.Context, txResp.TxHash) + require.NoError(err) + require.Equal(abci.CodeTypeOK, res.TxResult.Code) + }) + } +} + +func TestIntegrationTestSuite(t *testing.T) { + if testing.Short() { + t.Skip("skipping integration test in short mode.") + } + suite.Run(t, NewIntegrationTestSuite(testnode.DefaultConfig())) +} diff --git a/x/blob/doc.go b/x/blob/doc.go new file mode 100644 index 0000000000..238506368b --- /dev/null +++ b/x/blob/doc.go @@ -0,0 +1,4 @@ +// blob is a Cosmos SDK module that enables users to pay for data to be +// published to the Celestia blockchain. Please see ./README.md for the full +// specification of this module. +package blob diff --git a/x/blob/genesis.go b/x/blob/genesis.go new file mode 100644 index 0000000000..f21f8514f8 --- /dev/null +++ b/x/blob/genesis.go @@ -0,0 +1,20 @@ +package blob + +import ( + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// InitGenesis initializes the capability module's state from a provided genesis +// state. +func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { + k.SetParams(ctx, genState.Params) +} + +// ExportGenesis returns the capability module's exported genesis. +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + genesis := types.DefaultGenesis() + genesis.Params = k.GetParams(ctx) + return genesis +} diff --git a/x/blob/go.mod b/x/blob/go.mod new file mode 100644 index 0000000000..3ced26aea8 --- /dev/null +++ b/x/blob/go.mod @@ -0,0 +1,208 @@ +module github.com/celestiaorg/celestia-app/x/blob + +go 1.22.4 + +require ( + cosmossdk.io/errors v1.0.1 + github.com/celestiaorg/celestia-app/v2 v2.0.0 + github.com/celestiaorg/go-square v1.1.0 + github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 + github.com/cosmos/cosmos-sdk v0.46.16 + github.com/cosmos/gogoproto v1.5.0 + github.com/gogo/protobuf v1.3.3 + github.com/golang/protobuf v1.5.4 + github.com/gorilla/mux v1.8.1 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.9.0 + github.com/tendermint/tendermint v0.34.29 + github.com/tendermint/tm-db v0.6.7 + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 + google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf + google.golang.org/grpc v1.65.0 + gopkg.in/yaml.v2 v2.4.0 +) + +require ( + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + cosmossdk.io/math v1.3.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/Workiva/go-datastructures v1.0.53 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect + github.com/celestiaorg/nmt v0.21.0 // indirect + github.com/celestiaorg/rsmt2d v0.13.1 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect + github.com/cometbft/cometbft-db v0.7.0 // indirect + github.com/confio/ics23/go v0.9.1 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.6 // indirect + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect + github.com/cosmos/ibc-go/v6 v6.2.2 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-ethereum v1.14.5 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/gateway v1.1.0 // indirect + github.com/golang/glog v1.2.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/grafana/otel-profiling-go v0.5.1 // indirect + github.com/grafana/pyroscope-go v1.1.1 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/holiman/uint256 v1.2.4 // indirect + github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/reedsolomon v1.12.1 // indirect + github.com/lib/pq v1.10.7 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/rakyll/statik v0.1.7 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rs/cors v1.8.3 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/shirou/gopsutil v3.21.6+incompatible // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.6 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.26.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect + go.opentelemetry.io/otel/metric v1.26.0 // indirect + go.opentelemetry.io/otel/sdk v1.26.0 // indirect + go.opentelemetry.io/otel/trace v1.26.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/api v0.169.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + nhooyr.io/websocket v1.8.6 // indirect + rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace ( + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 + // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 + // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 + github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 +) diff --git a/x/blob/go.sum b/x/blob/go.sum new file mode 100644 index 0000000000..38d07559a5 --- /dev/null +++ b/x/blob/go.sum @@ -0,0 +1,2025 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= +github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-app/v2 v2.0.0 h1:cGrkLbqbaNqj+g+LhvmQ0iFKFyrD/GdU5z3WQI/bq8E= +github.com/celestiaorg/celestia-app/v2 v2.0.0/go.mod h1:0wP0W+GLghvsODxLhAYToKsy0RFKeg1HdZftQG90W5A= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= +github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= +github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= +github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= +github.com/celestiaorg/nmt v0.21.0 h1:81MBqxNn3orByoiCtdNVjwi5WsLgMkzHwP02ZMhTBHM= +github.com/celestiaorg/nmt v0.21.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= +github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= +github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= +github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= +github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= +github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= +github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= +github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= +github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= +github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= +github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= +github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= +github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= +github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= +github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= +github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= +github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +gitlab.com/NebulousLabs/errors v0.0.0-20171229012116-7ead97ef90b8/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bFzUeKx6m3XjlmBgIUlykX9dzvp5k9NGxc= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= +go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= +go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/x/blob/handler.go b/x/blob/handler.go new file mode 100644 index 0000000000..91050ff4b0 --- /dev/null +++ b/x/blob/handler.go @@ -0,0 +1,28 @@ +package blob + +import ( + "fmt" + + "cosmossdk.io/errors" + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// NewHandler uses the provided blob keeper to create an sdk.Handler +func NewHandler(k keeper.Keeper) sdk.Handler { + msgServer := keeper.NewMsgServerImpl(k) + + return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { + ctx = ctx.WithEventManager(sdk.NewEventManager()) + switch msg := msg.(type) { + case *types.MsgPayForBlobs: + res, err := msgServer.PayForBlobs(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + default: + errMsg := fmt.Sprintf("unrecognized %s message type: %T", types.ModuleName, msg) + return nil, errors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) + } + } +} diff --git a/x/blob/keeper/gas_test.go b/x/blob/keeper/gas_test.go new file mode 100644 index 0000000000..e000db8b39 --- /dev/null +++ b/x/blob/keeper/gas_test.go @@ -0,0 +1,85 @@ +package keeper_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/x/blob/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" +) + +func TestPayForBlobGas(t *testing.T) { + type testCase struct { + name string + msg types.MsgPayForBlobs + wantGasConsumed uint64 + } + + paramLookUpCost := uint32(1060) + + testCases := []testCase{ + { + name: "1 byte blob", // occupies 1 share + msg: types.MsgPayForBlobs{BlobSizes: []uint32{1}}, + wantGasConsumed: uint64(1*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 1 share * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 5156 gas + }, + { + name: "100 byte blob", // occupies 1 share + msg: types.MsgPayForBlobs{BlobSizes: []uint32{100}}, + wantGasConsumed: uint64(1*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), + }, + { + name: "1024 byte blob", // occupies 3 shares because share prefix (e.g. namespace, info byte) + msg: types.MsgPayForBlobs{BlobSizes: []uint32{1024}}, + wantGasConsumed: uint64(3*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 3 shares * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 13348 gas + }, + { + name: "3 blobs, 1 share each", + msg: types.MsgPayForBlobs{BlobSizes: []uint32{1, 1, 1}}, + wantGasConsumed: uint64(3*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 3 shares * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 13348 gas + }, + { + name: "3 blobs, 6 shares total", + msg: types.MsgPayForBlobs{BlobSizes: []uint32{1024, 800, 100}}, + wantGasConsumed: uint64(6*appconsts.ShareSize*types.DefaultGasPerBlobByte + paramLookUpCost), // 6 shares * 512 bytes per share * 8 gas per byte + 1060 gas for fetching param = 25636 gas + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + k, stateStore, _ := CreateKeeper(t) + ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) + _, err := k.PayForBlobs(sdk.WrapSDKContext(ctx), &tc.msg) + require.NoError(t, err) + if tc.wantGasConsumed != ctx.GasMeter().GasConsumed() { + t.Errorf("Gas consumed by %s: %d, want: %d", tc.name, ctx.GasMeter().GasConsumed(), tc.wantGasConsumed) + } + }) + } +} + +func TestChangingGasParam(t *testing.T) { + msg := types.MsgPayForBlobs{BlobSizes: []uint32{1024}} + k, stateStore, _ := CreateKeeper(t) + tempCtx := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) + + ctx1 := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) + _, err := k.PayForBlobs(sdk.WrapSDKContext(ctx1), &msg) + require.NoError(t, err) + + params := k.GetParams(tempCtx) + params.GasPerBlobByte++ + k.SetParams(tempCtx, params) + + ctx2 := sdk.NewContext(stateStore, tmproto.Header{}, false, nil) + _, err = k.PayForBlobs(sdk.WrapSDKContext(ctx2), &msg) + require.NoError(t, err) + + if ctx1.GasMeter().GasConsumed() >= ctx2.GasMeter().GasConsumedToLimit() { + t.Errorf("Gas consumed was not increased upon incrementing param, before: %d, after: %d", + ctx1.GasMeter().GasConsumed(), ctx2.GasMeter().GasConsumedToLimit(), + ) + } +} diff --git a/x/blob/keeper/genesis_test.go b/x/blob/keeper/genesis_test.go new file mode 100644 index 0000000000..5dc450c55e --- /dev/null +++ b/x/blob/keeper/genesis_test.go @@ -0,0 +1,21 @@ +package keeper_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/x/blob" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/stretchr/testify/require" +) + +func TestGenesis(t *testing.T) { + genesisState := types.GenesisState{ + Params: types.DefaultParams(), + } + + k, _, ctx := CreateKeeper(t) + blob.InitGenesis(ctx, *k, genesisState) + got := blob.ExportGenesis(ctx, *k) + require.NotNil(t, got) + require.Equal(t, types.DefaultParams(), got.Params) +} diff --git a/x/blob/keeper/grpc_query.go b/x/blob/keeper/grpc_query.go new file mode 100644 index 0000000000..a81d6f19f3 --- /dev/null +++ b/x/blob/keeper/grpc_query.go @@ -0,0 +1,7 @@ +package keeper + +import ( + "github.com/celestiaorg/celestia-app/x/blob/types" +) + +var _ types.QueryServer = Keeper{} diff --git a/x/blob/keeper/grpc_query_params.go b/x/blob/keeper/grpc_query_params.go new file mode 100644 index 0000000000..492c428c26 --- /dev/null +++ b/x/blob/keeper/grpc_query_params.go @@ -0,0 +1,19 @@ +package keeper + +import ( + "context" + + "github.com/celestiaorg/celestia-app/x/blob/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + ctx := sdk.UnwrapSDKContext(c) + + return &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil +} diff --git a/x/blob/keeper/grpc_query_params_test.go b/x/blob/keeper/grpc_query_params_test.go new file mode 100644 index 0000000000..3398c8ecae --- /dev/null +++ b/x/blob/keeper/grpc_query_params_test.go @@ -0,0 +1,20 @@ +package keeper_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/x/blob/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" +) + +func TestParamsQuery(t *testing.T) { + keeper, _, ctx := CreateKeeper(t) + wctx := sdk.WrapSDKContext(ctx) + params := types.DefaultParams() + keeper.SetParams(ctx, params) + + response, err := keeper.Params(wctx, &types.QueryParamsRequest{}) + require.NoError(t, err) + require.Equal(t, &types.QueryParamsResponse{Params: params}, response) +} diff --git a/x/blob/keeper/keeper.go b/x/blob/keeper/keeper.go new file mode 100644 index 0000000000..bb69acfd29 --- /dev/null +++ b/x/blob/keeper/keeper.go @@ -0,0 +1,57 @@ +package keeper + +import ( + "context" + "fmt" + + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/tendermint/tendermint/libs/log" +) + +const ( + payForBlobGasDescriptor = "pay for blob" +) + +// Keeper handles all the state changes for the blob module. +type Keeper struct { + cdc codec.BinaryCodec + paramStore paramtypes.Subspace +} + +func NewKeeper( + cdc codec.BinaryCodec, + ps paramtypes.Subspace, +) *Keeper { + if !ps.HasKeyTable() { + ps = ps.WithKeyTable(types.ParamKeyTable()) + } + + return &Keeper{ + cdc: cdc, + paramStore: ps, + } +} + +func (k Keeper) Logger(ctx sdk.Context) log.Logger { + return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) +} + +// PayForBlobs consumes gas based on the blob sizes in the MsgPayForBlobs. +func (k Keeper) PayForBlobs(goCtx context.Context, msg *types.MsgPayForBlobs) (*types.MsgPayForBlobsResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + gasToConsume := types.GasToConsume(msg.BlobSizes, k.GasPerBlobByte(ctx)) + ctx.GasMeter().ConsumeGas(gasToConsume, payForBlobGasDescriptor) + + err := ctx.EventManager().EmitTypedEvent( + types.NewPayForBlobsEvent(msg.Signer, msg.BlobSizes, msg.Namespaces), + ) + if err != nil { + return &types.MsgPayForBlobsResponse{}, err + } + + return &types.MsgPayForBlobsResponse{}, nil +} diff --git a/x/blob/keeper/keeper_test.go b/x/blob/keeper/keeper_test.go new file mode 100644 index 0000000000..41f6df1491 --- /dev/null +++ b/x/blob/keeper/keeper_test.go @@ -0,0 +1,107 @@ +package keeper_test + +import ( + "bytes" + "fmt" + "testing" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + testutil "github.com/celestiaorg/celestia-app/v2/test/util" + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/blob" + appns "github.com/celestiaorg/go-square/namespace" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/store" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + sdk "github.com/cosmos/cosmos-sdk/types" + proto "github.com/gogo/protobuf/proto" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + tmversion "github.com/tendermint/tendermint/proto/tendermint/version" + tmdb "github.com/tendermint/tm-db" +) + +// TestPayForBlobs verifies the attributes on the emitted event. +func TestPayForBlobs(t *testing.T) { + k, _, ctx := CreateKeeper(t) + signer := "celestia15drmhzw5kwgenvemy30rqqqgq52axf5wwrruf7" + namespace := appns.MustNewV0(bytes.Repeat([]byte{1}, appns.NamespaceVersionZeroIDSize)) + namespaces := [][]byte{namespace.Bytes()} + blobData := []byte("blob") + blobSizes := []uint32{uint32(len(blobData))} + + // verify no events exist yet + events := ctx.EventManager().Events().ToABCIEvents() + assert.Len(t, events, 0) + + // emit an event by submitting a PayForBlob + msg := createMsgPayForBlob(t, signer, namespace, blobData) + _, err := k.PayForBlobs(ctx, msg) + require.NoError(t, err) + + // verify that an event was emitted + events = ctx.EventManager().Events().ToABCIEvents() + assert.Len(t, events, 1) + protoEvent, err := sdk.ParseTypedEvent(events[0]) + require.NoError(t, err) + event, err := convertToEventPayForBlobs(protoEvent) + require.NoError(t, err) + + // verify the attributes of the event + assert.Equal(t, signer, event.Signer) + assert.Equal(t, namespaces, event.Namespaces) + assert.Equal(t, blobSizes, event.BlobSizes) +} + +func convertToEventPayForBlobs(message proto.Message) (*types.EventPayForBlobs, error) { + if event, ok := message.(*types.EventPayForBlobs); ok { + return event, nil + } + return nil, fmt.Errorf("message is not of type EventPayForBlobs") +} + +func createMsgPayForBlob(t *testing.T, signer string, namespace appns.Namespace, blobData []byte) *types.MsgPayForBlobs { + blob := blob.New(namespace, blobData, appconsts.ShareVersionZero) + msg, err := types.NewMsgPayForBlobs(signer, appconsts.LatestVersion, blob) + require.NoError(t, err) + return msg +} + +func CreateKeeper(t *testing.T) (*keeper.Keeper, store.CommitMultiStore, sdk.Context) { + storeKey := sdk.NewKVStoreKey(paramtypes.StoreKey) + tStoreKey := storetypes.NewTransientStoreKey(paramtypes.TStoreKey) + + db := tmdb.NewMemDB() + stateStore := store.NewCommitMultiStore(db) + stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) + stateStore.MountStoreWithDB(tStoreKey, storetypes.StoreTypeTransient, nil) + require.NoError(t, stateStore.LoadLatestVersion()) + + registry := codectypes.NewInterfaceRegistry() + cdc := codec.NewProtoCodec(registry) + ctx := sdk.NewContext(stateStore, tmproto.Header{ + Version: tmversion.Consensus{ + Block: 1, + App: 1, + }, + }, false, nil) + + paramsSubspace := paramtypes.NewSubspace(cdc, + testutil.MakeTestCodec(), + storeKey, + tStoreKey, + types.ModuleName, + ) + k := keeper.NewKeeper( + cdc, + paramsSubspace, + ) + k.SetParams(ctx, types.DefaultParams()) + + return k, stateStore, ctx +} diff --git a/x/blob/keeper/msg_server.go b/x/blob/keeper/msg_server.go new file mode 100644 index 0000000000..8dbda328d3 --- /dev/null +++ b/x/blob/keeper/msg_server.go @@ -0,0 +1,17 @@ +package keeper + +import ( + "github.com/celestiaorg/celestia-app/x/blob/types" +) + +var _ types.MsgServer = msgServer{} + +type msgServer struct { + Keeper +} + +// NewMsgServerImpl returns an implementation of the blob MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(keeper Keeper) types.MsgServer { + return &msgServer{Keeper: keeper} +} diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go new file mode 100644 index 0000000000..9be99523fa --- /dev/null +++ b/x/blob/keeper/params.go @@ -0,0 +1,31 @@ +package keeper + +import ( + "github.com/celestiaorg/celestia-app/x/blob/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// GetParams gets all parameters as types.Params +func (k Keeper) GetParams(ctx sdk.Context) types.Params { + return types.NewParams( + k.GasPerBlobByte(ctx), + k.GovMaxSquareSize(ctx), + ) +} + +// SetParams sets the params +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { + k.paramStore.SetParamSet(ctx, ¶ms) +} + +// GasPerBlobByte returns the GasPerBlobByte param +func (k Keeper) GasPerBlobByte(ctx sdk.Context) (res uint32) { + k.paramStore.Get(ctx, types.KeyGasPerBlobByte, &res) + return res +} + +// GovMaxSquareSize returns the GovMaxSquareSize param +func (k Keeper) GovMaxSquareSize(ctx sdk.Context) (res uint64) { + k.paramStore.Get(ctx, types.KeyGovMaxSquareSize, &res) + return res +} diff --git a/x/blob/keeper/params_test.go b/x/blob/keeper/params_test.go new file mode 100644 index 0000000000..95a533d880 --- /dev/null +++ b/x/blob/keeper/params_test.go @@ -0,0 +1,18 @@ +package keeper_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/stretchr/testify/require" +) + +func TestGetParams(t *testing.T) { + k, _, ctx := CreateKeeper(t) + params := types.DefaultParams() + + k.SetParams(ctx, params) + + require.EqualValues(t, params, k.GetParams(ctx)) + require.EqualValues(t, params.GasPerBlobByte, k.GasPerBlobByte(ctx)) +} diff --git a/x/blob/module.go b/x/blob/module.go new file mode 100644 index 0000000000..575458023f --- /dev/null +++ b/x/blob/module.go @@ -0,0 +1,165 @@ +package blob + +import ( + "context" + "encoding/json" + "fmt" + + "github.com/gorilla/mux" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cobra" + + abci "github.com/tendermint/tendermint/abci/types" + + "github.com/celestiaorg/celestia-app/x/blob/client/cli" + "github.com/celestiaorg/celestia-app/x/blob/keeper" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + cdctypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" +) + +var ( + _ module.AppModule = AppModule{} + _ module.AppModuleBasic = AppModuleBasic{} +) + +// ---------------------------------------------------------------------------- +// AppModuleBasic +// ---------------------------------------------------------------------------- + +// AppModuleBasic implements the AppModuleBasic interface for the capability module. +type AppModuleBasic struct { + cdc codec.BinaryCodec +} + +func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { + return AppModuleBasic{cdc: cdc} +} + +// Name returns the capability module's name. +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) +} + +// RegisterInterfaces registers the module's interface types +func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { + types.RegisterInterfaces(reg) +} + +// DefaultGenesis returns the capability module's default genesis state. +func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { + return cdc.MustMarshalJSON(types.DefaultGenesis()) +} + +// ValidateGenesis performs genesis state validation for the capability module. +func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, _ client.TxEncodingConfig, bz json.RawMessage) error { + var genState types.GenesisState + if err := cdc.UnmarshalJSON(bz, &genState); err != nil { + return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) + } + return genState.Validate() +} + +// RegisterRESTRoutes registers the capability module's REST service handlers. +func (AppModuleBasic) RegisterRESTRoutes(_ client.Context, _ *mux.Router) { +} + +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module. +func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { + panic(err) + } +} + +// GetTxCmd returns the capability module's root tx command. +func (a AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.GetTxCmd() +} + +// GetQueryCmd returns the capability module's root query command. +func (AppModuleBasic) GetQueryCmd() *cobra.Command { + return cli.GetQueryCmd() +} + +// ---------------------------------------------------------------------------- +// AppModule +// ---------------------------------------------------------------------------- + +// AppModule implements the AppModule interface for the capability module. +type AppModule struct { + AppModuleBasic + + keeper keeper.Keeper +} + +func NewAppModule(cdc codec.Codec, keeper keeper.Keeper) AppModule { + return AppModule{ + AppModuleBasic: NewAppModuleBasic(cdc), + keeper: keeper, + } +} + +// Name returns the capability module's name. +func (am AppModule) Name() string { + return am.AppModuleBasic.Name() +} + +// Route returns the capability module's message routing key. +func (am AppModule) Route() sdk.Route { + return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper)) +} + +// QuerierRoute returns the capability module's query routing key. +func (AppModule) QuerierRoute() string { return types.QuerierRoute } + +// LegacyQuerierHandler returns the capability module's Querier. +func (am AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { + return nil +} + +// RegisterServices registers a GRPC query service to respond to the +// module-specific GRPC queries. +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) + types.RegisterQueryServer(cfg.QueryServer(), am.keeper) +} + +// RegisterInvariants registers the capability module's invariants. +func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} + +// InitGenesis performs the capability module's genesis initialization. It +// returns an empty list of validator updates. +func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { + var genState types.GenesisState + // Initialize global index to index in genesis state + cdc.MustUnmarshalJSON(gs, &genState) + + InitGenesis(ctx, am.keeper, genState) + + return []abci.ValidatorUpdate{} +} + +// ExportGenesis returns the capability module's exported genesis state as raw JSON bytes. +func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { + genState := ExportGenesis(ctx, am.keeper) + return cdc.MustMarshalJSON(genState) +} + +// ConsensusVersion implements ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return 2 } + +// BeginBlock executes all ABCI BeginBlock logic respective to the capability module. +func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} + +// EndBlock executes all ABCI EndBlock logic respective to the capability module. It +// returns an empty list of validator updates. +func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { + return []abci.ValidatorUpdate{} +} diff --git a/x/blob/test/decode_blob_tx_test.go b/x/blob/test/decode_blob_tx_test.go new file mode 100644 index 0000000000..20faf4401f --- /dev/null +++ b/x/blob/test/decode_blob_tx_test.go @@ -0,0 +1,102 @@ +package test + +import ( + "crypto/sha256" + "encoding/hex" + "fmt" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/blob" + "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/assert" + "github.com/tendermint/tendermint/proto/tendermint/blockchain" +) + +// TestDecodeBlobTx demonstrates how one can take the response from the +// celestia-core API endpoint: +// `/cosmos/base/tendermint/v1beta1/blocks/{block_number}` +// and convert all encoded transactions into sdk.Tx. +// +// NOTE: this process differs from other Cosmos SDK chains because the +// transactions of type BlobTx won't be usable directly. One needs to extract +// the Tx field inside the BlobTx prior to decoding it as an sdk.Tx. +func TestDecodeBlobTx(t *testing.T) { + blockResponse := getTestdataBlockResponse(t) + + for i, rawTx := range blockResponse.Block.Data.Txs { + txBytes := getTxBytes(rawTx) + tx, err := decodeTx(txBytes) + if err != nil { + t.Errorf("error decoding tx: %v", err) + } + + // The last transaction in the block is a blob transaction. + // https://celenium.io/tx/C55BDD3DF3348A9F8D9206528051804754F009A1B9D0F69CCC2F9D4334215D21 + if i == 273 { + wantHash := "C55BDD3DF3348A9F8D9206528051804754F009A1B9D0F69CCC2F9D4334215D21" + gotHash := strings.ToUpper(hex.EncodeToString(hash(txBytes))) + assert.Equal(t, wantHash, gotHash) + + msg := tx.GetMsgs()[0] + wantSigner := "celestia18y3ydyn7uslhuxu4lcm2x83gkdhrrcyaqvg6gk" + gotSigner := msg.GetSigners()[0].String() + assert.Equal(t, gotSigner, wantSigner) + + msgPayForBlobs, ok := msg.(*blobtypes.MsgPayForBlobs) + if !ok { + t.Errorf("expected MsgPayForBlobs, got %T", msg) + } + wantNamespace := []byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xe5, 0xf6, 0x79, 0xbf, 0x71, 0x16, 0xcb} + gotNamespace := msgPayForBlobs.Namespaces[0] + assert.Equal(t, wantNamespace, gotNamespace) + } + } +} + +// getTestdataBlockResponse gets the block response from the testdata directory. +func getTestdataBlockResponse(t *testing.T) (resp blockchain.BlockResponse) { + // block_response.json is the JSON response from the API endpoint: + // https://api.celestia.pops.one/cosmos/base/tendermint/v1beta1/blocks/408 + // The response was persisted to block_response.json so that this test + // doesn't execute an HTTP request every invocation. + path := filepath.Join("testdata", "block_response.json") + fileContents, err := os.ReadFile(path) + if err != nil { + t.Fatalf("reading json file: %v", err) + } + + encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) + if err = encodingConfig.Codec.UnmarshalJSON(fileContents, &resp); err != nil { + t.Fatalf("error unmarshal JSON block response: %v", err) + } + return resp +} + +func getTxBytes(txBytes []byte) []byte { + bTx, isBlob := blob.UnmarshalBlobTx(txBytes) + if isBlob { + return bTx.Tx + } + return txBytes +} + +func decodeTx(txBytes []byte) (types.Tx, error) { + encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) + decoder := encodingConfig.TxConfig.TxDecoder() + tx, err := decoder(txBytes) + if err != nil { + return nil, fmt.Errorf("error decoding transaction: %v", err) + } + return tx, nil +} + +func hash(bz []byte) []byte { + checksum := sha256.Sum256(bz) + return checksum[:] +} diff --git a/x/blob/test/testdata/block_response.json b/x/blob/test/testdata/block_response.json new file mode 100644 index 0000000000..763cf19deb --- /dev/null +++ b/x/blob/test/testdata/block_response.json @@ -0,0 +1,925 @@ +{ + "block": { + "header": { + "version": { + "block": "11", + "app": "1" + }, + "chain_id": "celestia", + "height": "408", + "time": "2023-10-31T15:24:10.454033411Z", + "last_block_id": { + "hash": "cRLIkUkIlw2UeyPve1aSEO57zuHiIgsa8jSSgU2XCGA=", + "part_set_header": { + "total": 2, + "hash": "Mn1TmmyxpsI42IV2S8xt1tgrzYuLWpQov+9l+Hs37gQ=" + } + }, + "last_commit_hash": "J5kg51/pkBV0WaCOAWfnvgak/oG4cced5TeJBX3tbBY=", + "data_hash": "l7prxH6ZB/63PBYZ0Y2d0p5n0GTPIm4ZXGjazp0P6mY=", + "validators_hash": "xF9pVCAOoWgs47uBfYx4cq5sujF04H/UbLOHu8ZlKx0=", + "next_validators_hash": "iR4PeA8YVW7e/qZ6rkA9At0n3Mn0pahpPpy8njXsbLI=", + "consensus_hash": "wLamNLcq6Wh+pTttJ3pzq6E4a6PPxtDyaWNgL39v/NY=", + "app_hash": "mcS05GrB9mMkElzuqdlZYwIeT39KeUL+P26YGPt5+4E=", + "last_results_hash": "1AioKZO6wyBl/QwgplLH85hC+SwByIWFqPCMsQqIetQ=", + "evidence_hash": "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", + "proposer_address": "n25/MFjM79c2+o1vHC/nNyYjBng=" + }, + "data": { + "txs": [ + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMW12a3JodjJ6dWV1NThhbjdoZHE5bm1lYTRhZDVyZ3IweHduMnphEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEgg3MDAwMDAwMBIJMTAyNDQ4NjcxEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJD8D+IVc5djmowxX8Dl1Q91wfgPHp+HQyknPbx9Zta7hIECgIIfxgDEhMKDQoEdXRpYRIFMzg0NTYQiu8FGkBgQZXj4vNR8Cu6qfhuh5pKqF5eEHZACNWDnkYzykrjN0DnP0o2WjxiXnFqrzxMgFRiKc58isa2SwwPsMeXqTog", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW1odTduNjN3Mzk1cTJyNzN6eW12ZjJocHF3MGNhNTVleTN0NmcwEi9jZWxlc3RpYTE1NG1qenJqdG5ocHE1dDB0bGY0MHZzenFjbWRnazkyNGU1NjJ2NxoRCgR1dGlhEgkxNjMwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA6Bu95k7dC2OsAJCW8BKn7LYHT2YoggtDFK/OI3qX94dEgQKAgh/EhMKDQoEdXRpYRIFNTA0MTIQzNgHGkAj7rbSJjkImxUhV+tgXCLS8h/kYmAergTyWzUP/zSVUmbeLu7bq2ks/xkof7+rvg/6/A3LeE9Obiz+c8o/nD+c", + "CpcBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMThkNW50MmNkdmw1ZXF4OHlrczZ1Zmh6NzJlamZnd2dsaHZxZHprEi9jZWxlc3RpYTFyaHY4NnUzZWNmMHpjNnV2OTVsOWRkYTh0NHhsajNua2xsM3psORoQCgR1dGlhEggxMDAwMDAwMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECP0QS/s5X9sIdy0h5IdS4A2qDbUvv/rm7p94uEZO9cJkSBAoCCH8SEwoNCgR1dGlhEgU1MTQzNhDM7AcaQAnbGcgjwYLTkv1o4skCMt7RrhTiNlX7k+wo8a03KItsfZRUyrNICsTRdXd64/EspRZ2wyQ7i7sXnUgzxac2Bz4=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWtxZnhxbGMweXdkOWhxNjRwa2VzYXJ4eWpxemY2MjdyZDM1NmY1Ei9jZWxlc3RpYTF1cGhsMmg4c3hwYzA4dWFrbWozbDhnanI4dHhjbHhkcGFmdzl3ZRoRCgR1dGlhEgkxNjMxMzAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAnICGUb54zmOp6qxFacRfrd6d9vpCdftA4hle/vzFd7PEgQKAggBEhMKDQoEdXRpYRIFNTAyNzIQ7tUHGkCMb216lTCXGlzICkHCghPslq6foe//c8vtomcSC3R0dTSYQUwbH8XLK+ffFfAZWR/FU9DKWGMa0GKzs2PuxT86", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWUyYXI2anZnbHBwYWtuODl0emZ2a3RuamhzM2Q5MDN1ZWEzZms1Ei9jZWxlc3RpYTFjdWw4OGgzYW1odzd4d3YyNnpqOXZ1dnhyZDJ2NnZ4ZTRmNW1ubRoRCgR1dGlhEgkyMjk0ODk1ODgSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA3OBEfiz/2w9aWcevW9IRw0HkWO0MOZjPZHYx50BOduNEgQKAgh/EhMKDQoEdXRpYRIFNTA0MTIQzNgHGkDXdFZ/H/BblYd0JZJ7dFeT1MHiP/nlJxwzxSAu/Uria0c4OvY41ECqkAQWngCHeUKiJ6yHHL8efqKBVjcmbKS4", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW15bjU0cWU0Z3g2ZGFzdW5kcjBlNGxydnljbGZxczltYXkyZGxwEi9jZWxlc3RpYTF1eXRya2F1OWM5c2dwamFmeDk5YzM0YWtua2o3eHlzZ2hodng0ZhoRCgR1dGlhEgkxNjMwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAyZ8Kl0qiO/zV5PRCKbEms0OmLV8+bLB9h6NY6ayRVPmEgQKAgh/EhMKDQoEdXRpYRIFNTA0MTIQzNgHGkDVOPvmAebJ8toeAXy/cyhMnZYgUFRymnscRhiYuaUkKy0OphxzG8Ys2WGeOCz6R54/3SS+Icq4kS4vrf0X2p37", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXJ0anFhZjRtNTg3bjc2OGt2ZTloM3Jta2R1cGdoY3B4cm5rMDJhEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggzMDAwMDAwMBIJMTAxMDg0ODcyEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQO1L8SnnkopW1UukpeIJzITmuX0WAIISGGVMaclG6VOXBIECgIIfxITCg0KBHV0aWESBTQzNjgzEJbVBhpA/yFDuJZ52m1pg6FfPwHa4x8r5eVI3NEgKmu2rfIBw6pbhwom8YmyZ/Exo8yEzBMBlIA/ge7cMy+C9br/n7EFDQ==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXQ1Mm0zNGFjZmZ5d3RoaGc1azA2NzQ2eHJtOTl6cDBwOTBhZmF2Ei9jZWxlc3RpYTFjdGd3M3Juam5zNDU4YXprbG5samd0dGFkMDV6d240OXBuZHF0NBoRCgR1dGlhEgkxNjAwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkxdVGKoLU8SFfx4ZNxQyQU6kRNklz8Ni0VlA6SB3ZVvEgQKAgh/EhMKDQoEdXRpYRIFNDM2MTkQ9tMGGkA/PhnZSzYOWP1Jmdrngssqs7LPcNFqCcOe4rGrnqPfKQZ7BR+pO/VXOfqV+1zT4cC7wADvo+YeWPJ2F4B9bLxf", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMW51M3B1ZmE5cmVrMmRneHdrOGhrZDhtczdqeDJoa2d5Y3hkaDVwEi9jZWxlc3RpYTE5eDhsbWM2cGZ6YXlld21ra201dDBsd3JwZmNhM2s2a2FwMm0yehoPCgR1dGlhEgcxMDAwMDAwEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLG4T5R7QswDisE94t1byrppx+Dk/n3+zl+9+mD6E4XCxIECgIIfxgDEhMKDQoEdXRpYRIFNDYyNDMQlocHGkBoFFMUSCpZdnbFdbniKm/1p8N4dIcyVgOl3u25cHAUOGhGQtujKY3B1tRy3FAmk7QQykT6HnW4E4M7vg1zonav", + "CpcBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTBrbHUwNmg3M3U0eDhkdGF3eHh6OWxxYTk4bjBoY2c5amF3ejN1Ei9jZWxlc3RpYTF1bXpzazdnN3R2eGswNTVzanAzM3E5ZzZ4NXpoNjVoMnQzOTh6dhoQCgR1dGlhEgg5OTAwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC1v/Tvg74rs0Bazwcz+N0wAs+yaaEVJlYSiG+HKDAUyYSBAoCCH8YARITCg0KBHV0aWESBTQ2MTY1ENOFBxpA75cd+cazVBAIFZvo3SkPEpE1nVOq6x2e6D4T8LgX1FkqN2NAi9iqT3M1SNOzcWLKOwSRw2D13yNuDNbuJYSO0w==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTQ4NmN4eTBlcmx3bXg1ZXY4NnZ6aHB1OGx6dWZkcTVldWVhZTBnEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNDc0MDcSCTEwMDQxNTgyMhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZCdYrS3lEfY8r2BEH+lUjAIaZaFRgBpdaGkv8053SE0SBAoCCH8SEwoNCgR1dGlhEgU0MjU5MxDxvwYaQLjVB4IuZT+QTdH1HS4WIiHpu3gGRdVt4Il5WSTPE+pFNDpAL7w7t7ewcQVlVOPtuT6++Sq5oJJwRIPymUoc+cY=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWgyeHQwdm5zamtlZzBhazRxcmRueDdqYzV0azZuY2d0cnJqZWdsEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ2MDAwMDASCTEwMTU1MDU4NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZxv3ohpn1ywFULnYWvpmRx49DYlZ/EgI5g3chIL5RqsSBAoCCAESEwoNCgR1dGlhEgU1MDM0ORCv1wcaQK4c54xZOxgThmXW4ou7IcTJUhy8HRWvIv8c1m6KnRFbWu1OmbgGwKnaI7GfKaOVI9a6r9eDK1R7ri8fqsjIL98=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWVxdWt2anMycDR1OHBoZnV4bTgzZGdkc3hxbjJ0OHQzcTJyc2swEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQwMDAwMDASCTEwMDA4OTIyNxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZnsuP0BV6pulZKImD0QtUB+QvN1qHSN6xcV3UgORR2MSBAoCCH8SEwoNCgR1dGlhEgU2NzE0OBC8nwoaQE+bfvNnuAlOELw8IkYsyfm7fjGaywXzMaeH4bsFQuZjVovo/ZfgG4d0j0N3ZOJj39mM0FluBsODIBrNSJgVWeA=", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTVxMzRsMnBrbmp1NXMzZmt4cDgwcDMyczlodGFtbHpnZHhoMjd1Ei9jZWxlc3RpYTF5amFtMHoyenBwamZhNXpmcWNhd3Y5em1jdjN1Zjk5NDI4eXg5cxoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJC8pcnPJFcVA41sCUMfltwUCbScxg0bZ1GFplNuPmqCBIECgIIfxITCg0KBHV0aWESBTUxNDE5EKLsBxpAWO5oawbWnvvzJCBt67aKYRCsddVEZCjvgcjKcRjHgOMdHFz9q2aKLgdWX1tpXX1mgZKiVpuaX4ftV5yVwRqPHQ==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXd1a2U4ejhnNGQ4MnZ4YTR6Zzd1ZmdmdmhjbGgwZ3I0Y25wenVmEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5MTAwMDASCTEwMDA1NjAwNBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDO1sk9ETFC6yvyPxxfiVM5iF6yJ2c9PychKer0azJrYgSBAoCCH8SEwoNCgR1dGlhEgU0Nzk0OBC9qAcaQIwdIXLIotUk3n3xT0k2mmFjAuQ9IwUAtZ3cydRFDDQkHqhw8CdEuxoUWMDOKco1jFJ2u6gziDwX2N22eU68WiY=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTA5c2F2ZnN2YTRoa2VkcTRkcHczZ2Zha2EzdDlhNWNodWY4d3ltEi9jZWxlc3RpYTF3ODJ6dTVlYWtlNXAwcWNreGM0eDd3d21lMmhzNXl6ZGtyZXQwcxoRCgR1dGlhEgkyOTQ5Mjk2MzESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAuyjZOk/xoYnKZoM5OS4HGvAOy640kvlPB1C6LAo6kRQEgQKAgh/EhMKDQoEdXRpYRIFNTAzNjkQ4tcHGkD3jZ9y4/n5zldR5qB7t6bZ3LsO5aXkYLVtdejUOaX0/XxEFzZCd2xTBvH5fdbpMCLjCay1YJWmwa15WwFqozIn", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWd4dGNqYW5kMHBzY2RtNmFsYzhzdnBqMDl5cWNrZ2czejVmZmtwEi9jZWxlc3RpYTFneHRjamFuZDBwc2NkbTZhbGM4c3ZwajA5eXFja2dnM3o1ZmZrcBoRCgR1dGlhEgkxNjMxMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohApYBstaPlNYnGJP9Wp4pmN0makm6KyoCLWHJUmAWjG6LEgQKAgh/EhMKDQoEdXRpYRIFNDQwMjEQ5NsGGkASyRpbuUun2zkAxpT0IGWduxmRgB5VRN0qss05Erwx3HuHNnou1p6OczsWJWUyE5+iL9ncXjqMWWWF7Yhlt5Z2", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJ1ZWxnZzY2M3VyZjNyeGdjenE3cGdsa2dxd3ZtMm4zOXYyeGt3Ei9jZWxlc3RpYTFuNnVreWswN3A1enp1bTRweHhjcWdsd2R2ajIzaG0weWdodjJ4ehoRCgR1dGlhEgkxNjMxMzk2MzESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAo4KZSxxZ4R9uwzYCjoTHfv55kH9VHG/KLNjYtLDItysEgQKAgh/EhMKDQoEdXRpYRIFNTAzNjkQ4tcHGkA6rbueWkA7CJaxKO1MleLqWJJqBxXjKIRfmt3scvyjF09OJhny78KA8EldmGR+9hyhwa/sfya2+OF58juFPVuy", + "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XCJvc21vc2lzLXBvb2xtYW5hZ2VyXCIsXCJvcGVyYXRpb25zXCI6W3tcInBvb2xcIjpcIjEyNDdcIixcImRlbm9tX2luXCI6XCJpYmMvRDc5RTdEODNBQjM5OUJGRkY5MzQzM0U1NEZBQTQ4MEMxOTEyNDhGQzU1NjkyNEEyQTgzNTFBRTI2MzhCMzg3N1wiLFwiZGVub21fb3V0XCI6XCJpYmMvNDk4QTA3NTFDNzk4QTBEOUEzODlBQTM2OTExMjNEQURBNTdEQUE0RkUxNjVENUM3NTg5NDUwNUI4NzZCQTZFNFwifV19fSxcIm1pbl9jb2luXCI6e1wiZGVub21cIjpcImliYy80OThBMDc1MUM3OThBMEQ5QTM4OUFBMzY5MTEyM0RBREE1N0RBQTRGRTE2NUQ1Qzc1ODk0NTA1Qjg3NkJBNkU0XCIsXCJhbW91bnRcIjpcIjQ0Mjg2MjcxOFwifSxcInRpbWVvdXRfdGltZXN0YW1wXCI6MTY5ODc2NjExNDM3ODQ3MzY0NSxcInBvc3Rfc3dhcF9hY3Rpb25cIjp7XCJpYmNfdHJhbnNmZXJcIjp7XCJpYmNfaW5mb1wiOntcInNvdXJjZV9jaGFubmVsXCI6XCJjaGFubmVsLTc1MFwiLFwicmVjZWl2ZXJcIjpcIm5vYmxlMXhkdjVjbGU2YWthbnFyenR4bWhnZmNuODBldm5oczRudDN1eDhsXCIsXCJtZW1vXCI6XCJcIixcInJlY292ZXJfYWRkcmVzc1wiOlwib3NtbzF4ZHY1Y2xlNmFrYW5xcnp0eG1oZ2ZjbjgwZXZuaHM0bnRmNjdmclwifX19LFwiYWZmaWxpYXRlc1wiOltdfX19fSIsInJlY2VpdmVyIjoib3NtbzFkbXM3aDVnMHpscWQ4MjRhbjR1NDBkeG4wampyd3MybjAweGhhc3I3a2NjZ3RtdHhlcGFxZDh0enUyIiwic2VuZGVyIjoiY2VsZXN0aWExeGR2NWNsZTZha2FucXJ6dHhtaGdmY244MGV2bmhzNG5qY2M3OXUifToHCAEQrYzlBRJheyJyZXN1bHQiOiJleUpqYjI1MGNtRmpkRjl5WlhOMWJIUWlPbTUxYkd3c0ltbGlZMTloWTJzaU9pSmxlVXA1V2xoT01XSklVV2xQYVVwQ1ZWUXdPVWx1TUQwaWZRPT0ifRqHDQrcCgrZCgo3YWNrcy9wb3J0cy90cmFuc2Zlci9jaGFubmVscy9jaGFubmVsLTY5OTQvc2VxdWVuY2VzLzc1MhIgsKUjStaDGzewwup3y3ojsSrpKVNTSJPz8Cf9yt3VI4gaDggBGAEgASoGAAK4lsoLIi4IARIHAgS4lsoLIBohIGLqcDO9BlnWyYvWxqdMovIVMi1x8HnuLk4c/POnC2M4Ii4IARIHBAa4lsoLIBohIBhtSGP9IztgW/9rysObSrC9bqKH+pwvfN9l1X7Q9iSZIiwIARIoBgy4lsoLIJtpseczHP1V8Nc4tjkywV7v17iFUu6Uf3hWoo+2AoVZICIuCAESBwgSuJbKCyAaISARAl52FkZI1sslIHvFJGQ64lMrZ9WWE6CVPymrl2r38iIuCAESBwxEuJbKCyAaISBB0NK54H+eMG0mXkSc+/DSBQzNl0f+ZCL0vtA3IB5QxyIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEK2Q8KJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBKtDwrVAQjxBRIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMTY1MDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMWM2ejdscmRyZGcyZHl1ZDhocWR4Z3BuNTR5dG04NTJxYXNlNTh6Iiwic2VuZGVyIjoiY2VsZXN0aWExYzZ6N2xyZHJkZzJkeXVkOGhxZHhncG41NHl0bTg1MnF5cG01dGEifToHCAEQq4zlBRIReyJyZXN1bHQiOiJBUT09In0ahQ0K2goK1woKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NTMSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIsCAESKAIEuJbKCyDCl0Vt4vSYBz2G6/g6/JtWhHU+gbhkmcvFCTIC1gecgiAiLggBEgcEBriWygsgGiEgGG1IY/0jO2Bb/2vKw5tKsL1uoof6nC9832XVftD2JJkiLAgBEigGDLiWygsgm2mx5zMc/VXw1zi2OTLBXu/XuIVS7pR/eFaij7YChVkgIi4IARIHCBK4lsoLIBohIBECXnYWRkjWyyUge8UkZDriUytn1ZYToJU/KauXavfyIi4IARIHDES4lsoLIBohIEHQ0rngf54wbSZeRJz78NIFDM2XR/5kIvS+0DcgHlDHIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQqnDwonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50EvsOCtMBCPIFEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpcBeyJhbW91bnQiOiIxMDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMWx0ZjZzbTQ1bHYwY3VtcDV5dGt3MHNkMmhnajNhbGw5Z2h5Z3JyIiwic2VuZGVyIjoiY2VsZXN0aWExbHRmNnNtNDVsdjBjdW1wNXl0a3cwc2QyaGdqM2FsbDkzeHhnMHUifToHCAEQq4zlBRIReyJyZXN1bHQiOiJBUT09In0a1QwKqgoKpwoKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NTQSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIsCAESKAQGuJbKCyCOwLnCmFzARMNRgKvdgyJHh1yJ0fDmd4B9UTxJprMLHSAiLAgBEigGDLiWygsgm2mx5zMc/VXw1zi2OTLBXu/XuIVS7pR/eFaij7YChVkgIi4IARIHCBK4lsoLIBohIBECXnYWRkjWyyUge8UkZDriUytn1ZYToJU/KauXavfyIi4IARIHDES4lsoLIBohIEHQ0rngf54wbSZeRJz78NIFDM2XR/5kIvS+0DcgHlDHIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQqrDwonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50Ev8OCtUBCPMFEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpkBeyJhbW91bnQiOiIxODEwMDAwMDAiLCJkZW5vbSI6InV0aWEiLCJyZWNlaXZlciI6Im9zbW8xbWpqZ25qZGxxeGNwOXF0NnM2OWc5OXB1Mnc3ZDU3cWFoZGoyOXciLCJzZW5kZXIiOiJjZWxlc3RpYTFtampnbmpkbHF4Y3A5cXQ2czY5Zzk5cHUydzdkNTdxYXd1czJmMyJ9OgcIARCsjOUFEhF7InJlc3VsdCI6IkFRPT0ifRrXDAqsCgqpCgo3YWNrcy9wb3J0cy90cmFuc2Zlci9jaGFubmVscy9jaGFubmVsLTY5OTQvc2VxdWVuY2VzLzc1NRIgCPdVftUYJv4Y2EUSvyTsdQAe268hI6R333KgqfNkCnwaDggBGAEgASoGAAK4lsoLIi4IARIHAgS4lsoLIBohILN0hmiGov2UXBHB9g3r3ylyIRKUQfvPJp8S6t7a3D5lIi4IARIHBAa4lsoLIBohIPXRVZ8yiX134RoxDuP6jHJgr/ptTQR02ngKmnUircKSIiwIARIoCBK4lsoLIDC65YXp7nMngFqCldx80HtuXgE58SVRbqOk4z1Kpfo7ICIuCAESBwxEuJbKCyAaISBB0NK54H+eMG0mXkSc+/DSBQzNl0f+ZCL0vtA3IB5QxyIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEKqQ8KJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBL9DgrVAQj0BRIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMTYyMDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMWh0NDBmd3N6YW52MmZtYWx4OHg5M3BjM2g0cGZnZzR1aDQyZzZ6Iiwic2VuZGVyIjoiY2VsZXN0aWExaHQ0MGZ3c3phbnYyZm1hbHg4eDkzcGMzaDRwZmdnNHV3eWdna2EifToHCAEQq4zlBRIReyJyZXN1bHQiOiJBUT09In0a1QwKqgoKpwoKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NTYSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIsCAESKAIEuJbKCyCwn1f26rrmGuC6SGjaxfZqUVMSU0tVgCPI8qr7oV5kuyAiLggBEgcEBriWygsgGiEg9dFVnzKJfXfhGjEO4/qMcmCv+m1NBHTaeAqadSKtwpIiLAgBEigIEriWygsgMLrlhenucyeAWoKV3HzQe25eATnxJVFuo6TjPUql+jsgIi4IARIHDES4lsoLIBohIEHQ0rngf54wbSZeRJz78NIFDM2XR/5kIvS+0DcgHlDHIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQr5DgonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50Es0OCtUBCPUFEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpkBeyJhbW91bnQiOiIxNDcwMDAwMDAiLCJkZW5vbSI6InV0aWEiLCJyZWNlaXZlciI6Im9zbW8xenI2bXZqczZlZTRyeWhxZWFuYXFuOGc5M2pyamhuOXNhdmN2anUiLCJzZW5kZXIiOiJjZWxlc3RpYTF6cjZtdmpzNmVlNHJ5aHFlYW5hcW44ZzkzanJqaG45c3lhNnY3ciJ9OgcIARCsjOUFEhF7InJlc3VsdCI6IkFRPT0ifRqlDAr6CQr3CQo3YWNrcy9wb3J0cy90cmFuc2Zlci9jaGFubmVscy9jaGFubmVsLTY5OTQvc2VxdWVuY2VzLzc1NxIgCPdVftUYJv4Y2EUSvyTsdQAe268hI6R333KgqfNkCnwaDggBGAEgASoGAAK4lsoLIiwIARIoBAa4lsoLIMjxwDaiscnJApIpjGTVaeIGXgXZ0r22r/hjCpLqtWjbICIsCAESKAgSuJbKCyAwuuWF6e5zJ4BagpXcfNB7bl4BOfElUW6jpOM9SqX6OyAiLggBEgcMRLiWygsgGiEgQdDSueB/njBtJl5EnPvw0gUMzZdH/mQi9L7QNyAeUMciLwgBEggOlgG4lsoLIBohIA3xGr+pPB2Dte65Qr/bzen5DLUFGEh93rO7vpZ9WnssIi0IARIpEJgCuJbKCyA4KL5gU3cbzqztcKMeIwJRI6iMoRb0kpj0BFFatLFu5SAiLQgBEikSnAO4lsoLIMM/0XkMFekiTEEsaZsLJhuh4d4pAPJZza9J2DtaHqgaICIvCAESCBTUBbiWygsgGiEg2lQ2ENleoHVqeCoeiounzJ/E/nJao0/5x4uFU72QpgciLQgBEikWnAq4lsoLIK0/Qy047JJa8ar8PVJFDM67IISa7HENaLvPmYJORuZOICIvCAESCBi8EbiWygsgGiEgbXDRTXW0sc3YdQA98TSW5pIidt/juyIxbyK912ONIEgiLQgBEikarhu4lsoLIAhc61enyz3kjzqO6IwTvN2SSMjv88oGPLSEr+MVrBd0ICIvCAESCBzyM7iWygsgGiEgsygPpZyH6BBj+FD9iGZ5sJXT/D2clAcrSeMex31HT1EiLQgBEike8lC4lsoLIDMF3thazMUUpP5aWVdsCrHjX/A7/XQYp8ima+g5iJtXICIuCAESKiDQjQG4lsoLINY1V7maR2YQSbXVx/fQknTF+WamVKi8duwIygZdnRm4ICIuCAESKiK09AG4lsoLIIX+At/th/qKVhH5w3IUe7bxtJVzwh0bhfBiO2GpEEbKICIuCAESKiTC3AS4lsoLIOKI1t5Aa2BLz89w83XWSvpNoWIpwMXRdsNyAsLjJoY8ICIwCAESCSa+xgi4lsoLIBohIHewv9Ea2+pzfhNEARWvXWZvJgXMSpzk7JCoSRqH3wb+IjAIARIJKNrwEbiWygsgGiEgv5vbfkYWJJkK+E0cTLHAEI0WSVT2Mf6axMfPkKmPegYiLggBEioqlsQnuJbKCyCfGdbdMPr/zjiN0HEbVSn4NPqY3qehIGbZHhvAmNA2qiAiMAgBEgks8vI5uJbKCyAaISDLUa6FlesVviVIUlfME1rYmk+UmtvaQQn1HuCuRSQpHSIxCAESCjDwwpYBuJbKCyAaISCipGZjeMQz+InVs0nP1APk8XSgu/Gl8VNON5/9JsBi1iIxCAESCjKelr0CuJbKCyAaISCKyvw/vZNt4BlZEE/69TxobMvZdFBfBNut0iu3kqpKMCIvCAESKzS+1u0DuJbKCyBwpMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhCosQCicvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dBY2tub3dsZWRnZW1lbnQS3w8K1QEI9gUSCHRyYW5zZmVyGgljaGFubmVsLTIiCHRyYW5zZmVyKgxjaGFubmVsLTY5OTQymQF7ImFtb3VudCI6IjcxMzAwMDAwMCIsImRlbm9tIjoidXRpYSIsInJlY2VpdmVyIjoib3NtbzFlOXc3bWEza2V4OHZsbnJ5Z3VjcnVoc2g2NjA4cnJmaHU2dTQwYSIsInNlbmRlciI6ImNlbGVzdGlhMWU5dzdtYTNrZXg4dmxucnlndWNydWhzaDY2MDhycmZoOXQ3NHJ6In06BwgBEKyM5QUSEXsicmVzdWx0IjoiQVE9PSJ9GrcNCowLCokLCjdhY2tzL3BvcnRzL3RyYW5zZmVyL2NoYW5uZWxzL2NoYW5uZWwtNjk5NC9zZXF1ZW5jZXMvNzU4EiAI91V+1Rgm/hjYRRK/JOx1AB7bryEjpHffcqCp82QKfBoOCAEYASABKgYAAriWygsiLggBEgcCBLiWygsgGiEghlzEMdvfiUq7gEcPbSbpTIZ448T1hfX1NnZxYRir46MiLggBEgcECLiWygsgGiEgg/CPEfn8TCrnb0WYFXltMx3iY+7kWxZFNnfdOEf+htUiLggBEgcGELiWygsgGiEgri7egGcQRf/l4HiFkzOatbSpRvOu415VPRYgOKdddikiLggBEgcIGLiWygsgGiEg/Klis90addCBH2Z/wOJbwbNYzYP/BlV97Qpn3N00wcIiLggBEgcKMriWygsgGiEgzLA9Ck5quhSCtRvgVS1gtNrB1Y61rxkFHQ4ARMVRpxUiLAgBEigMRLiWygsgHoBzts0HtDMAIfFFQHZI4TOE49HxZ8dm4x17+7tmWGAgIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQqJEAonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50Et0PCtUBCPcFEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpkBeyJhbW91bnQiOiIxMzEwMDAwMDAiLCJkZW5vbSI6InV0aWEiLCJyZWNlaXZlciI6Im9zbW8xcXBhYzhxMGt5NzQ1em1mcGVuYzVjbm44amQyNHZ6cm4zNjB2ejAiLCJzZW5kZXIiOiJjZWxlc3RpYTFxcGFjOHEwa3k3NDV6bWZwZW5jNWNubjhqZDI0dnpybmd0ZHZ3cyJ9OgcIARCrjOUFEhF7InJlc3VsdCI6IkFRPT0ifRq1DQqKCwqHCwo3YWNrcy9wb3J0cy90cmFuc2Zlci9jaGFubmVscy9jaGFubmVsLTY5OTQvc2VxdWVuY2VzLzc1ORIgCPdVftUYJv4Y2EUSvyTsdQAe268hI6R333KgqfNkCnwaDggBGAEgASoGAAK4lsoLIiwIARIoAgS4lsoLIC4qXRz7wdeIHiasfUAQHC0oVhPv5Dn8kvTiNrMfFu7vICIuCAESBwQIuJbKCyAaISCD8I8R+fxMKudvRZgVeW0zHeJj7uRbFkU2d904R/6G1SIuCAESBwYQuJbKCyAaISCuLt6AZxBF/+XgeIWTM5q1tKlG867jXlU9FiA4p112KSIuCAESBwgYuJbKCyAaISD8qWKz3Rp10IEfZn/A4lvBs1jNg/8GVX3tCmfc3TTBwiIuCAESBwoyuJbKCyAaISDMsD0KTmq6FIK1G+BVLWC02sHVjrWvGQUdDgBExVGnFSIsCAESKAxEuJbKCyAegHO2zQe0MwAh8UVAdkjhM4Tj0fFnx2bjHXv7u2ZYYCAiLwgBEggOlgG4lsoLIBohIA3xGr+pPB2Dte65Qr/bzen5DLUFGEh93rO7vpZ9WnssIi0IARIpEJgCuJbKCyA4KL5gU3cbzqztcKMeIwJRI6iMoRb0kpj0BFFatLFu5SAiLQgBEikSnAO4lsoLIMM/0XkMFekiTEEsaZsLJhuh4d4pAPJZza9J2DtaHqgaICIvCAESCBTUBbiWygsgGiEg2lQ2ENleoHVqeCoeiounzJ/E/nJao0/5x4uFU72QpgciLQgBEikWnAq4lsoLIK0/Qy047JJa8ar8PVJFDM67IISa7HENaLvPmYJORuZOICIvCAESCBi8EbiWygsgGiEgbXDRTXW0sc3YdQA98TSW5pIidt/juyIxbyK912ONIEgiLQgBEikarhu4lsoLIAhc61enyz3kjzqO6IwTvN2SSMjv88oGPLSEr+MVrBd0ICIvCAESCBzyM7iWygsgGiEgsygPpZyH6BBj+FD9iGZ5sJXT/D2clAcrSeMex31HT1EiLQgBEike8lC4lsoLIDMF3thazMUUpP5aWVdsCrHjX/A7/XQYp8ima+g5iJtXICIuCAESKiDQjQG4lsoLINY1V7maR2YQSbXVx/fQknTF+WamVKi8duwIygZdnRm4ICIuCAESKiK09AG4lsoLIIX+At/th/qKVhH5w3IUe7bxtJVzwh0bhfBiO2GpEEbKICIuCAESKiTC3AS4lsoLIOKI1t5Aa2BLz89w83XWSvpNoWIpwMXRdsNyAsLjJoY8ICIwCAESCSa+xgi4lsoLIBohIHewv9Ea2+pzfhNEARWvXWZvJgXMSpzk7JCoSRqH3wb+IjAIARIJKNrwEbiWygsgGiEgv5vbfkYWJJkK+E0cTLHAEI0WSVT2Mf6axMfPkKmPegYiLggBEioqlsQnuJbKCyCfGdbdMPr/zjiN0HEbVSn4NPqY3qehIGbZHhvAmNA2qiAiMAgBEgks8vI5uJbKCyAaISDLUa6FlesVviVIUlfME1rYmk+UmtvaQQn1HuCuRSQpHSIxCAESCjDwwpYBuJbKCyAaISCipGZjeMQz+InVs0nP1APk8XSgu/Gl8VNON5/9JsBi1iIxCAESCjKelr0CuJbKCyAaISCKyvw/vZNt4BlZEE/69TxobMvZdFBfBNut0iu3kqpKMCIvCAESKzS+1u0DuJbKCyBwpMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhCocQCicvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dBY2tub3dsZWRnZW1lbnQS2w8K1QEI+AUSCHRyYW5zZmVyGgljaGFubmVsLTIiCHRyYW5zZmVyKgxjaGFubmVsLTY5OTQymQF7ImFtb3VudCI6IjE2MjUwMDAwMCIsImRlbm9tIjoidXRpYSIsInJlY2VpdmVyIjoib3NtbzFrNnZ0ejVzYWxmN2VkOXI5MHZmY2FtdHhweHQ2enZ3OW4yYzVxbSIsInNlbmRlciI6ImNlbGVzdGlhMWs2dnR6NXNhbGY3ZWQ5cjkwdmZjYW10eHB4dDZ6dnc5Mm02NXZ5In06BwgBEKuM5QUSEXsicmVzdWx0IjoiQVE9PSJ9GrMNCogLCoULCjdhY2tzL3BvcnRzL3RyYW5zZmVyL2NoYW5uZWxzL2NoYW5uZWwtNjk5NC9zZXF1ZW5jZXMvNzYwEiAI91V+1Rgm/hjYRRK/JOx1AB7bryEjpHffcqCp82QKfBoOCAEYASABKgYAAriWygsiLAgBEigCBLiWygsgWobp2r6tks4ElUAwGoyWtwT4bGMVV/VUFHrQUsprkOQgIiwIARIoBAi4lsoLIDMNCO1CLC3Box4IMQeD26bAyEjgjKyeA41Idebj6/n+ICIuCAESBwYQuJbKCyAaISCuLt6AZxBF/+XgeIWTM5q1tKlG867jXlU9FiA4p112KSIuCAESBwgYuJbKCyAaISD8qWKz3Rp10IEfZn/A4lvBs1jNg/8GVX3tCmfc3TTBwiIuCAESBwoyuJbKCyAaISDMsD0KTmq6FIK1G+BVLWC02sHVjrWvGQUdDgBExVGnFSIsCAESKAxEuJbKCyAegHO2zQe0MwAh8UVAdkjhM4Tj0fFnx2bjHXv7u2ZYYCAiLwgBEggOlgG4lsoLIBohIA3xGr+pPB2Dte65Qr/bzen5DLUFGEh93rO7vpZ9WnssIi0IARIpEJgCuJbKCyA4KL5gU3cbzqztcKMeIwJRI6iMoRb0kpj0BFFatLFu5SAiLQgBEikSnAO4lsoLIMM/0XkMFekiTEEsaZsLJhuh4d4pAPJZza9J2DtaHqgaICIvCAESCBTUBbiWygsgGiEg2lQ2ENleoHVqeCoeiounzJ/E/nJao0/5x4uFU72QpgciLQgBEikWnAq4lsoLIK0/Qy047JJa8ar8PVJFDM67IISa7HENaLvPmYJORuZOICIvCAESCBi8EbiWygsgGiEgbXDRTXW0sc3YdQA98TSW5pIidt/juyIxbyK912ONIEgiLQgBEikarhu4lsoLIAhc61enyz3kjzqO6IwTvN2SSMjv88oGPLSEr+MVrBd0ICIvCAESCBzyM7iWygsgGiEgsygPpZyH6BBj+FD9iGZ5sJXT/D2clAcrSeMex31HT1EiLQgBEike8lC4lsoLIDMF3thazMUUpP5aWVdsCrHjX/A7/XQYp8ima+g5iJtXICIuCAESKiDQjQG4lsoLINY1V7maR2YQSbXVx/fQknTF+WamVKi8duwIygZdnRm4ICIuCAESKiK09AG4lsoLIIX+At/th/qKVhH5w3IUe7bxtJVzwh0bhfBiO2GpEEbKICIuCAESKiTC3AS4lsoLIOKI1t5Aa2BLz89w83XWSvpNoWIpwMXRdsNyAsLjJoY8ICIwCAESCSa+xgi4lsoLIBohIHewv9Ea2+pzfhNEARWvXWZvJgXMSpzk7JCoSRqH3wb+IjAIARIJKNrwEbiWygsgGiEgv5vbfkYWJJkK+E0cTLHAEI0WSVT2Mf6axMfPkKmPegYiLggBEioqlsQnuJbKCyCfGdbdMPr/zjiN0HEbVSn4NPqY3qehIGbZHhvAmNA2qiAiMAgBEgks8vI5uJbKCyAaISDLUa6FlesVviVIUlfME1rYmk+UmtvaQQn1HuCuRSQpHSIxCAESCjDwwpYBuJbKCyAaISCipGZjeMQz+InVs0nP1APk8XSgu/Gl8VNON5/9JsBi1iIxCAESCjKelr0CuJbKCyAaISCKyvw/vZNt4BlZEE/69TxobMvZdFBfBNut0iu3kqpKMCIvCAESKzS+1u0DuJbKCyBwpMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhCokQCicvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dBY2tub3dsZWRnZW1lbnQS3Q8K1QEI+QUSCHRyYW5zZmVyGgljaGFubmVsLTIiCHRyYW5zZmVyKgxjaGFubmVsLTY5OTQymQF7ImFtb3VudCI6IjI1Njg0NjMzMSIsImRlbm9tIjoidXRpYSIsInJlY2VpdmVyIjoib3NtbzF3ejM3YzI0NnU1cTBubXY3YXF3NHNwOTN2MjJlc3U5djhhNDV6bCIsInNlbmRlciI6ImNlbGVzdGlhMXd6MzdjMjQ2dTVxMG5tdjdhcXc0c3A5M3YyMmVzdTl2N3ZoNXdxIn06BwgBEKyM5QUSEXsicmVzdWx0IjoiQVE9PSJ9GrUNCooLCocLCjdhY2tzL3BvcnRzL3RyYW5zZmVyL2NoYW5uZWxzL2NoYW5uZWwtNjk5NC9zZXF1ZW5jZXMvNzYxEiAI91V+1Rgm/hjYRRK/JOx1AB7bryEjpHffcqCp82QKfBoOCAEYASABKgYAAriWygsiLggBEgcCBLiWygsgGiEgmST8LE3yIiH+LZeyQ5dpEesJz3+WhIc5Jywu69DMc10iLggBEgcECLiWygsgGiEgUPILHdzECdftoVKHIprjYWQC94S0UfYhZezQavNAQiIiLAgBEigGELiWygsgo6bjirQSKZtLrPnWuN0C2jU10csN2ZqA7MdpuBlIHS8gIi4IARIHCBi4lsoLIBohIPypYrPdGnXQgR9mf8DiW8GzWM2D/wZVfe0KZ9zdNMHCIi4IARIHCjK4lsoLIBohIMywPQpOaroUgrUb4FUtYLTawdWOta8ZBR0OAETFUacVIiwIARIoDES4lsoLIB6Ac7bNB7QzACHxRUB2SOEzhOPR8WfHZuMde/u7ZlhgICIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEKhxAKJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBLbDwrVAQj6BRIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMjU3MDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMWRsdDN0Y2V1czRkZTBwY2VremEwdHBtdmtmMjdydHRrdWRnczdmIiwic2VuZGVyIjoiY2VsZXN0aWExZGx0M3RjZXVzNGRlMHBjZWt6YTB0cG12a2YyN3J0dGs5dTJzamsifToHCAEQq4zlBRIReyJyZXN1bHQiOiJBUT09In0asw0KiAsKhQsKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NjISIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIsCAESKAIEuJbKCyAuLpII20v28LeqbKrg+h5rdhLJQL30FfJcjbCDneXkyyAiLggBEgcECLiWygsgGiEgUPILHdzECdftoVKHIprjYWQC94S0UfYhZezQavNAQiIiLAgBEigGELiWygsgo6bjirQSKZtLrPnWuN0C2jU10csN2ZqA7MdpuBlIHS8gIi4IARIHCBi4lsoLIBohIPypYrPdGnXQgR9mf8DiW8GzWM2D/wZVfe0KZ9zdNMHCIi4IARIHCjK4lsoLIBohIMywPQpOaroUgrUb4FUtYLTawdWOta8ZBR0OAETFUacVIiwIARIoDES4lsoLIB6Ac7bNB7QzACHxRUB2SOEzhOPR8WfHZuMde/u7ZlhgICIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEKhxAKJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBLbDwrVAQj7BRIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMTMwMDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMTl0ZDBtZXcyN25ycmpsbjNxbHV2MDl4NTUwZXV4d3BrODA3ZzgzIiwic2VuZGVyIjoiY2VsZXN0aWExOXRkMG1ldzI3bnJyamxuM3FsdXYwOXg1NTBldXh3cGs3N3VndHcifToHCAEQq4zlBRIReyJyZXN1bHQiOiJBUT09In0asw0KiAsKhQsKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NjMSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIuCAESBwIEuJbKCyAaISD1y5O49O8O3KBi1AL2oaeXsrtmx5BR4V/v296J60kVryIsCAESKAQIuJbKCyAGnf5ugWnpvVcr1TdeZ57dKa9rAdkCkwtPSjrE+viaciAiLAgBEigGELiWygsgo6bjirQSKZtLrPnWuN0C2jU10csN2ZqA7MdpuBlIHS8gIi4IARIHCBi4lsoLIBohIPypYrPdGnXQgR9mf8DiW8GzWM2D/wZVfe0KZ9zdNMHCIi4IARIHCjK4lsoLIBohIMywPQpOaroUgrUb4FUtYLTawdWOta8ZBR0OAETFUacVIiwIARIoDES4lsoLIB6Ac7bNB7QzACHxRUB2SOEzhOPR8WfHZuMde/u7ZlhgICIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEKhRAKJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBLZDwrVAQj8BRIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMTYyMDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMWpxMzZubGwwMHQ1YTRkdm1xemNodDU2ZTJxcDI1dzdkZjVtbjBmIiwic2VuZGVyIjoiY2VsZXN0aWExanEzNm5sbDAwdDVhNGR2bXF6Y2h0NTZlMnFwMjV3N2RzOWVucmsifToHCAEQq4zlBRIReyJyZXN1bHQiOiJBUT09In0asQ0KhgsKgwsKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NjQSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIsCAESKAIEuJbKCyB8EKSrZk4AAMDHMU2YJ43O5TqEpIO4WhqrjFr+OGld8yAiLAgBEigECLiWygsgBp3+boFp6b1XK9U3Xmee3SmvawHZApMLT0o6xPr4mnIgIiwIARIoBhC4lsoLIKOm44q0EimbS6z51rjdAto1NdHLDdmagOzHabgZSB0vICIuCAESBwgYuJbKCyAaISD8qWKz3Rp10IEfZn/A4lvBs1jNg/8GVX3tCmfc3TTBwiIuCAESBwoyuJbKCyAaISDMsD0KTmq6FIK1G+BVLWC02sHVjrWvGQUdDgBExVGnFSIsCAESKAxEuJbKCyAegHO2zQe0MwAh8UVAdkjhM4Tj0fFnx2bjHXv7u2ZYYCAiLwgBEggOlgG4lsoLIBohIA3xGr+pPB2Dte65Qr/bzen5DLUFGEh93rO7vpZ9WnssIi0IARIpEJgCuJbKCyA4KL5gU3cbzqztcKMeIwJRI6iMoRb0kpj0BFFatLFu5SAiLQgBEikSnAO4lsoLIMM/0XkMFekiTEEsaZsLJhuh4d4pAPJZza9J2DtaHqgaICIvCAESCBTUBbiWygsgGiEg2lQ2ENleoHVqeCoeiounzJ/E/nJao0/5x4uFU72QpgciLQgBEikWnAq4lsoLIK0/Qy047JJa8ar8PVJFDM67IISa7HENaLvPmYJORuZOICIvCAESCBi8EbiWygsgGiEgbXDRTXW0sc3YdQA98TSW5pIidt/juyIxbyK912ONIEgiLQgBEikarhu4lsoLIAhc61enyz3kjzqO6IwTvN2SSMjv88oGPLSEr+MVrBd0ICIvCAESCBzyM7iWygsgGiEgsygPpZyH6BBj+FD9iGZ5sJXT/D2clAcrSeMex31HT1EiLQgBEike8lC4lsoLIDMF3thazMUUpP5aWVdsCrHjX/A7/XQYp8ima+g5iJtXICIuCAESKiDQjQG4lsoLINY1V7maR2YQSbXVx/fQknTF+WamVKi8duwIygZdnRm4ICIuCAESKiK09AG4lsoLIIX+At/th/qKVhH5w3IUe7bxtJVzwh0bhfBiO2GpEEbKICIuCAESKiTC3AS4lsoLIOKI1t5Aa2BLz89w83XWSvpNoWIpwMXRdsNyAsLjJoY8ICIwCAESCSa+xgi4lsoLIBohIHewv9Ea2+pzfhNEARWvXWZvJgXMSpzk7JCoSRqH3wb+IjAIARIJKNrwEbiWygsgGiEgv5vbfkYWJJkK+E0cTLHAEI0WSVT2Mf6axMfPkKmPegYiLggBEioqlsQnuJbKCyCfGdbdMPr/zjiN0HEbVSn4NPqY3qehIGbZHhvAmNA2qiAiMAgBEgks8vI5uJbKCyAaISDLUa6FlesVviVIUlfME1rYmk+UmtvaQQn1HuCuRSQpHSIxCAESCjDwwpYBuJbKCyAaISCipGZjeMQz+InVs0nP1APk8XSgu/Gl8VNON5/9JsBi1iIxCAESCjKelr0CuJbKCyAaISCKyvw/vZNt4BlZEE/69TxobMvZdFBfBNut0iu3kqpKMCIvCAESKzS+1u0DuJbKCyBwpMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhCtgPCicvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dBY2tub3dsZWRnZW1lbnQSrA8K1AEI/QUSCHRyYW5zZmVyGgljaGFubmVsLTIiCHRyYW5zZmVyKgxjaGFubmVsLTY5OTQymAF7ImFtb3VudCI6IjU2MDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMXh4emM4YXd3bGxxcTR3YXh0ZWo4dTh2bHlyODlsbXV5Y3JrOTZrIiwic2VuZGVyIjoiY2VsZXN0aWExeHh6Yzhhd3dsbHFxNHdheHRlajh1OHZseXI4OWxtdXlwajU5a2YifToHCAEQqozlBRIReyJyZXN1bHQiOiJBUT09In0ahQ0K2goK1woKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NjUSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIuCAESBwIEuJbKCyAaISC2raxuk20PGMR14mWsFIou7AsCs+/SnujHRrxv5Zxf5SIuCAESBwQIuJbKCyAaISBxS92UoxTP3PW6m+hDrQMKa4pbosvlQEUQYrvw1UpepCIsCAESKAgYuJbKCyBISvtaknExCZdVo/ijXWS2Qncl0giDabrITUGEI3Sg2SAiLggBEgcKMriWygsgGiEgzLA9Ck5quhSCtRvgVS1gtNrB1Y61rxkFHQ4ARMVRpxUiLAgBEigMRLiWygsgHoBzts0HtDMAIfFFQHZI4TOE49HxZ8dm4x17+7tmWGAgIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQrXDwonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50EqsPCtUBCP4FEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpkBeyJhbW91bnQiOiIxNjMwMDAwMDAiLCJkZW5vbSI6InV0aWEiLCJyZWNlaXZlciI6Im9zbW8xbG13cHVjMjh2NTIyMHI1Z21xbnJqbnltZmZ2aGVkNmo5ZGQ5YWYiLCJzZW5kZXIiOiJjZWxlc3RpYTFsbXdwdWMyOHY1MjIwcjVnbXFucmpueW1mZnZoZWQ2anV1MDkzayJ9OgcIARCtjOUFEhF7InJlc3VsdCI6IkFRPT0ifRqDDQrYCgrVCgo3YWNrcy9wb3J0cy90cmFuc2Zlci9jaGFubmVscy9jaGFubmVsLTY5OTQvc2VxdWVuY2VzLzc2NhIgCPdVftUYJv4Y2EUSvyTsdQAe268hI6R333KgqfNkCnwaDggBGAEgASoGAAK4lsoLIiwIARIoAgS4lsoLIKqo6tZ5ZNJnsbVSxwYliM3WC24balz1mimZ2JAYNsu6ICIuCAESBwQIuJbKCyAaISBxS92UoxTP3PW6m+hDrQMKa4pbosvlQEUQYrvw1UpepCIsCAESKAgYuJbKCyBISvtaknExCZdVo/ijXWS2Qncl0giDabrITUGEI3Sg2SAiLggBEgcKMriWygsgGiEgzLA9Ck5quhSCtRvgVS1gtNrB1Y61rxkFHQ4ARMVRpxUiLAgBEigMRLiWygsgHoBzts0HtDMAIfFFQHZI4TOE49HxZ8dm4x17+7tmWGAgIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQrXDwonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50EqsPCtUBCP8FEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpkBeyJhbW91bnQiOiIyNTc4Njg5ODciLCJkZW5vbSI6InV0aWEiLCJyZWNlaXZlciI6Im9zbW8xd215MzAwZzlkY2t5eW5wODN1NG5mOW5ubDVnNGVmeTVkajZwbGUiLCJzZW5kZXIiOiJjZWxlc3RpYTF3bXkzMDBnOWRja3l5bnA4M3U0bmY5bm5sNWc0ZWZ5NTVyY3BueCJ9OgcIARCtjOUFEhF7InJlc3VsdCI6IkFRPT0ifRqDDQrYCgrVCgo3YWNrcy9wb3J0cy90cmFuc2Zlci9jaGFubmVscy9jaGFubmVsLTY5OTQvc2VxdWVuY2VzLzc2NxIgCPdVftUYJv4Y2EUSvyTsdQAe268hI6R333KgqfNkCnwaDggBGAEgASoGAAK4lsoLIi4IARIHAgS4lsoLIBohIMgJjckMSAIzgDA6oKL8gJJV7LPuvIbAwuKdZ+/Dikq0IiwIARIoBAi4lsoLIAFOeLc06NyeQGIWwSjrjTV8ATqP37Nv87eCirJaZuCZICIsCAESKAgYuJbKCyBISvtaknExCZdVo/ijXWS2Qncl0giDabrITUGEI3Sg2SAiLggBEgcKMriWygsgGiEgzLA9Ck5quhSCtRvgVS1gtNrB1Y61rxkFHQ4ARMVRpxUiLAgBEigMRLiWygsgHoBzts0HtDMAIfFFQHZI4TOE49HxZ8dm4x17+7tmWGAgIi8IARIIDpYBuJbKCyAaISAN8Rq/qTwdg7XuuUK/283p+Qy1BRhIfd6zu76WfVp7LCItCAESKRCYAriWygsgOCi+YFN3G86s7XCjHiMCUSOojKEW9JKY9ARRWrSxbuUgIi0IARIpEpwDuJbKCyDDP9F5DBXpIkxBLGmbCyYboeHeKQDyWc2vSdg7Wh6oGiAiLwgBEggU1AW4lsoLIBohINpUNhDZXqB1angqHoqLp8yfxP5yWqNP+ceLhVO9kKYHIi0IARIpFpwKuJbKCyCtP0MtOOySWvGq/D1SRQzOuyCEmuxxDWi7z5mCTkbmTiAiLwgBEggYvBG4lsoLIBohIG1w0U11tLHN2HUAPfE0luaSInbf47siMW8ivddjjSBIIi0IARIpGq4buJbKCyAIXOtXp8s95I86juiME7zdkkjI7/PKBjy0hK/jFawXdCAiLwgBEggc8jO4lsoLIBohILMoD6Wch+gQY/hQ/YhmebCV0/w9nJQHK0njHsd9R09RIi0IARIpHvJQuJbKCyAzBd7YWszFFKT+WllXbAqx41/wO/10GKfIpmvoOYibVyAiLggBEiog0I0BuJbKCyDWNVe5mkdmEEm11cf30JJ0xflmplSovHbsCMoGXZ0ZuCAiLggBEioitPQBuJbKCyCF/gLf7Yf6ilYR+cNyFHu28bSVc8IdG4XwYjthqRBGyiAiLggBEiokwtwEuJbKCyDiiNbeQGtgS8/PcPN11kr6TaFiKcDF0XbDcgLC4yaGPCAiMAgBEgkmvsYIuJbKCyAaISB3sL/RGtvqc34TRAEVr11mbyYFzEqc5OyQqEkah98G/iIwCAESCSja8BG4lsoLIBohIL+b235GFiSZCvhNHEyxwBCNFklU9jH+msTHz5Cpj3oGIi4IARIqKpbEJ7iWygsgnxnW3TD6/844jdBxG1Up+DT6mN6noSBm2R4bwJjQNqogIjAIARIJLPLyObiWygsgGiEgy1GuhZXrFb4lSFJXzBNa2JpPlJrb2kEJ9R7grkUkKR0iMQgBEgow8MKWAbiWygsgGiEgoqRmY3jEM/iJ1bNJz9QD5PF0oLvxpfFTTjef/SbAYtYiMQgBEgoynpa9AriWygsgGiEgisr8P72TbeAZWRBP+vU8aGzL2XRQXwTbrdIrt5KqSjAiLwgBEis0vtbtA7iWygsgcKTELsU8G9/USDE5+7jsRQQMC+nLGUS4vIyRYs1xRwsgIi8IARIrNornqgq4lsoLINFdhuDeM2AYJ6hz8oNIhjlyPXjvT2rYwMrDnEIODG/RICIxCAESCjj6hesXuJbKCyAaISBXpmYkQ0tunOgEXFuRfG7KmWw671ktfQlpYiS6wmPqgQqlAgqiAgoDaWJjEiBnWlVqSlVDpGlMQwGc3o/hvvSjGtHIwOV702XUqK+pZRoJCAEYASABKgEAIiUIARIhAasP5FuJ8Pc5QtGRCia0Yqg5q/nt7q5B9KlSQFG9Lk87IicIARIBARogjGncf0RvpywjQtwegN3ZDBE3jyTF8NyJOZPetoQyl/UiJQgBEiEBE9XGp1cN0/hPQDtA8mtTaMi+PgpCDeBIjauKY4zUiCYiJQgBEiEBfFZAPipMebc+9hwxzfgVv3ehzd1qUDP1Y1dzyzggs54iJwgBEgEBGiBnMI+f4lUzb1d5yfjlgExJlquZOQVj0/oOlNOYhuOtkiInCAESAQEaIH3tnseXre9o4vfBKyCGYO0JTMnw8iranZ1kkRlf5lrUIgcIARCdi+UFKi9jZWxlc3RpYTE2bTQ4ajg4bWx3MnNtaGM4bnl1cnpudDRqbDlucWd5cWVnejNkYQrWDwonL2liYy5jb3JlLmNoYW5uZWwudjEuTXNnQWNrbm93bGVkZ2VtZW50EqoPCtYBCIAGEgh0cmFuc2ZlchoJY2hhbm5lbC0yIgh0cmFuc2ZlcioMY2hhbm5lbC02OTk0MpoBeyJhbW91bnQiOiI1MDAwMDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMTk5NXRodGZlNWdzNDd3cnJqZzlnc3EweHMwdWRxM2xyaHhybWFkIiwic2VuZGVyIjoiY2VsZXN0aWExOTk1dGh0ZmU1Z3M0N3dycmpnOWdzcTB4czB1ZHEzbHJ3aHBtM2oifToHCAEQrYzlBRIReyJyZXN1bHQiOiJBUT09In0agQ0K1goK0woKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NjgSIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIsCAESKAIEuJbKCyC4vTGoqGSg/jqwEftLlYEzWpDFUoNbmxUax1c9iFonSiAiLAgBEigECLiWygsgAU54tzTo3J5AYhbBKOuNNXwBOo/fs2/zt4KKslpm4JkgIiwIARIoCBi4lsoLIEhK+1qScTEJl1Wj+KNdZLZCdyXSCINpushNQYQjdKDZICIuCAESBwoyuJbKCyAaISDMsD0KTmq6FIK1G+BVLWC02sHVjrWvGQUdDgBExVGnFSIsCAESKAxEuJbKCyAegHO2zQe0MwAh8UVAdkjhM4Tj0fFnx2bjHXv7u2ZYYCAiLwgBEggOlgG4lsoLIBohIA3xGr+pPB2Dte65Qr/bzen5DLUFGEh93rO7vpZ9WnssIi0IARIpEJgCuJbKCyA4KL5gU3cbzqztcKMeIwJRI6iMoRb0kpj0BFFatLFu5SAiLQgBEikSnAO4lsoLIMM/0XkMFekiTEEsaZsLJhuh4d4pAPJZza9J2DtaHqgaICIvCAESCBTUBbiWygsgGiEg2lQ2ENleoHVqeCoeiounzJ/E/nJao0/5x4uFU72QpgciLQgBEikWnAq4lsoLIK0/Qy047JJa8ar8PVJFDM67IISa7HENaLvPmYJORuZOICIvCAESCBi8EbiWygsgGiEgbXDRTXW0sc3YdQA98TSW5pIidt/juyIxbyK912ONIEgiLQgBEikarhu4lsoLIAhc61enyz3kjzqO6IwTvN2SSMjv88oGPLSEr+MVrBd0ICIvCAESCBzyM7iWygsgGiEgsygPpZyH6BBj+FD9iGZ5sJXT/D2clAcrSeMex31HT1EiLQgBEike8lC4lsoLIDMF3thazMUUpP5aWVdsCrHjX/A7/XQYp8ima+g5iJtXICIuCAESKiDQjQG4lsoLINY1V7maR2YQSbXVx/fQknTF+WamVKi8duwIygZdnRm4ICIuCAESKiK09AG4lsoLIIX+At/th/qKVhH5w3IUe7bxtJVzwh0bhfBiO2GpEEbKICIuCAESKiTC3AS4lsoLIOKI1t5Aa2BLz89w83XWSvpNoWIpwMXRdsNyAsLjJoY8ICIwCAESCSa+xgi4lsoLIBohIHewv9Ea2+pzfhNEARWvXWZvJgXMSpzk7JCoSRqH3wb+IjAIARIJKNrwEbiWygsgGiEgv5vbfkYWJJkK+E0cTLHAEI0WSVT2Mf6axMfPkKmPegYiLggBEioqlsQnuJbKCyCfGdbdMPr/zjiN0HEbVSn4NPqY3qehIGbZHhvAmNA2qiAiMAgBEgks8vI5uJbKCyAaISDLUa6FlesVviVIUlfME1rYmk+UmtvaQQn1HuCuRSQpHSIxCAESCjDwwpYBuJbKCyAaISCipGZjeMQz+InVs0nP1APk8XSgu/Gl8VNON5/9JsBi1iIxCAESCjKelr0CuJbKCyAaISCKyvw/vZNt4BlZEE/69TxobMvZdFBfBNut0iu3kqpKMCIvCAESKzS+1u0DuJbKCyBwpMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhCtkPCicvaWJjLmNvcmUuY2hhbm5lbC52MS5Nc2dBY2tub3dsZWRnZW1lbnQSrQ8K1QEIgQYSCHRyYW5zZmVyGgljaGFubmVsLTIiCHRyYW5zZmVyKgxjaGFubmVsLTY5OTQymQF7ImFtb3VudCI6IjI0MTAwMDAwMCIsImRlbm9tIjoidXRpYSIsInJlY2VpdmVyIjoib3NtbzFsd3p3OWZmdnd0OW1rNnhsM210eXFnZDBxdjhya3c1dzlzcjhzdSIsInNlbmRlciI6ImNlbGVzdGlhMWx3enc5ZmZ2d3Q5bWs2eGwzbXR5cWdkMHF2OHJrdzV3dXBwOHVyIn06BwgBEK2M5QUSEXsicmVzdWx0IjoiQVE9PSJ9GoUNCtoKCtcKCjdhY2tzL3BvcnRzL3RyYW5zZmVyL2NoYW5uZWxzL2NoYW5uZWwtNjk5NC9zZXF1ZW5jZXMvNzY5EiAI91V+1Rgm/hjYRRK/JOx1AB7bryEjpHffcqCp82QKfBoOCAEYASABKgYAAriWygsiLggBEgcCBLiWygsgGiEgVldGTWOGGYvkDrGCJ2CofiiMYkUfTMsHres1DYArM7ciLggBEgcGCriWygsgGiEgUlJBKaTdmfWAmYEwJVf7SQrS2CugTfZKkkHRtFhB9kgiLggBEgcIGriWygsgGiEgnlHva6uaGs45ieB33RRDr/pIwlV7eh+n59avDWWlQCciLAgBEigKMriWygsgoHGFkKYPbv0Lz86oMw/NJfxPS01PEBG8uza0aC9PSm4gIiwIARIoDES4lsoLIB6Ac7bNB7QzACHxRUB2SOEzhOPR8WfHZuMde/u7ZlhgICIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEK1w8KJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBKrDwrVAQiCBhIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMjk0OTAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMXBkbTdmcnhhZmRyOWNtMzhjcncwbGdranI2ZTJsbnp2aHkyM3dlIiwic2VuZGVyIjoiY2VsZXN0aWExcGRtN2ZyeGFmZHI5Y20zOGNydzBsZ2tqcjZlMmxuenZ3NGczengifToHCAEQrYzlBRIReyJyZXN1bHQiOiJBUT09In0agw0K2AoK1QoKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NzASIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIuCAESBwQGuJbKCyAaISAgpItCX/dElL7+H20YMjQo8RgiZ4mdtKV9dr470RigviIsCAESKAYKuJbKCyDjZRfe7EHLhIoqUJMvexvShIGg/b9lO0Wu0OYWsOb1TyAiLggBEgcIGriWygsgGiEgnlHva6uaGs45ieB33RRDr/pIwlV7eh+n59avDWWlQCciLAgBEigKMriWygsgoHGFkKYPbv0Lz86oMw/NJfxPS01PEBG8uza0aC9PSm4gIiwIARIoDES4lsoLIB6Ac7bNB7QzACHxRUB2SOEzhOPR8WfHZuMde/u7ZlhgICIvCAESCA6WAbiWygsgGiEgDfEav6k8HYO17rlCv9vN6fkMtQUYSH3es7u+ln1aeywiLQgBEikQmAK4lsoLIDgovmBTdxvOrO1wox4jAlEjqIyhFvSSmPQEUVq0sW7lICItCAESKRKcA7iWygsgwz/ReQwV6SJMQSxpmwsmG6Hh3ikA8lnNr0nYO1oeqBogIi8IARIIFNQFuJbKCyAaISDaVDYQ2V6gdWp4Kh6Ki6fMn8T+clqjT/nHi4VTvZCmByItCAESKRacCriWygsgrT9DLTjsklrxqvw9UkUMzrsghJrscQ1ou8+Zgk5G5k4gIi8IARIIGLwRuJbKCyAaISBtcNFNdbSxzdh1AD3xNJbmkiJ23+O7IjFvIr3XY40gSCItCAESKRquG7iWygsgCFzrV6fLPeSPOo7ojBO83ZJIyO/zygY8tISv4xWsF3QgIi8IARIIHPIzuJbKCyAaISCzKA+lnIfoEGP4UP2IZnmwldP8PZyUBytJ4x7HfUdPUSItCAESKR7yULiWygsgMwXe2FrMxRSk/lpZV2wKseNf8Dv9dBinyKZr6DmIm1cgIi4IARIqINCNAbiWygsg1jVXuZpHZhBJtdXH99CSdMX5ZqZUqLx27AjKBl2dGbggIi4IARIqIrT0AbiWygsghf4C3+2H+opWEfnDchR7tvG0lXPCHRuF8GI7YakQRsogIi4IARIqJMLcBLiWygsg4ojW3kBrYEvPz3DzddZK+k2hYinAxdF2w3ICwuMmhjwgIjAIARIJJr7GCLiWygsgGiEgd7C/0Rrb6nN+E0QBFa9dZm8mBcxKnOTskKhJGoffBv4iMAgBEgko2vARuJbKCyAaISC/m9t+RhYkmQr4TRxMscAQjRZJVPYx/prEx8+QqY96BiIuCAESKiqWxCe4lsoLIJ8Z1t0w+v/OOI3QcRtVKfg0+pjep6EgZtkeG8CY0DaqICIwCAESCSzy8jm4lsoLIBohIMtRroWV6xW+JUhSV8wTWtiaT5Sa29pBCfUe4K5FJCkdIjEIARIKMPDClgG4lsoLIBohIKKkZmN4xDP4idWzSc/UA+TxdKC78aXxU043n/0mwGLWIjEIARIKMp6WvQK4lsoLIBohIIrK/D+9k23gGVkQT/r1PGhsy9l0UF8E263SK7eSqkowIi8IARIrNL7W7QO4lsoLIHCkxC7FPBvf1EgxOfu47EUEDAvpyxlEuLyMkWLNcUcLICIvCAESKzaK56oKuJbKCyDRXYbg3jNgGCeoc/KDSIY5cj14709q2MDKw5xCDgxv0SAiMQgBEgo4+oXrF7iWygsgGiEgV6ZmJENLbpzoBFxbkXxuyplsOu9ZLX0JaWIkusJj6oEKpQIKogIKA2liYxIgZ1pVakpVQ6RpTEMBnN6P4b70oxrRyMDle9Nl1KivqWUaCQgBGAEgASoBACIlCAESIQGrD+RbifD3OULRkQomtGKoOav57e6uQfSpUkBRvS5POyInCAESAQEaIIxp3H9Eb6csI0LcHoDd2QwRN48kxfDciTmT3raEMpf1IiUIARIhARPVxqdXDdP4T0A7QPJrU2jIvj4KQg3gSI2rimOM1IgmIiUIARIhAXxWQD4qTHm3PvYcMc34Fb93oc3dalAz9WNXc8s4ILOeIicIARIBARogZzCPn+JVM29Xecn45YBMSZarmTkFY9P6DpTTmIbjrZIiJwgBEgEBGiB97Z7Hl63vaOL3wSsghmDtCUzJ8PIq2p2dZJEZX+Za1CIHCAEQnYvlBSovY2VsZXN0aWExNm00OGo4OG1sdzJzbWhjOG55dXJ6bnQ0amw5bnFneXFlZ3ozZGEKhRAKJy9pYmMuY29yZS5jaGFubmVsLnYxLk1zZ0Fja25vd2xlZGdlbWVudBLZDwrVAQiDBhIIdHJhbnNmZXIaCWNoYW5uZWwtMiIIdHJhbnNmZXIqDGNoYW5uZWwtNjk5NDKZAXsiYW1vdW50IjoiMjU3MDAwMDAwIiwiZGVub20iOiJ1dGlhIiwicmVjZWl2ZXIiOiJvc21vMWU0MHpoN3Fua2ZyemNqNXQ3c3JqNTZlZ2xsZHpjdHI3bGswcnJ4Iiwic2VuZGVyIjoiY2VsZXN0aWExZTQwemg3cW5rZnJ6Y2o1dDdzcmo1NmVnbGxkemN0cjd4OGRyMGUifToHCAEQrYzlBRIReyJyZXN1bHQiOiJBUT09In0asQ0KhgsKgwsKN2Fja3MvcG9ydHMvdHJhbnNmZXIvY2hhbm5lbHMvY2hhbm5lbC02OTk0L3NlcXVlbmNlcy83NzESIAj3VX7VGCb+GNhFEr8k7HUAHtuvISOkd99yoKnzZAp8Gg4IARgBIAEqBgACuJbKCyIuCAESBwIEuJbKCyAaISCClS1Mopob7VwhB2+PC94v7Bit5sAV2Kcerqj8mjH16iIsCAESKAQGuJbKCyB34Kjj3JVpqCClupNQBlSYmO/9y9p9AMhE7wMvd9KrnyAiLAgBEigGCriWygsg42UX3uxBy4SKKlCTL3sb0oSBoP2/ZTtFrtDmFrDm9U8gIi4IARIHCBq4lsoLIBohIJ5R72urmhrOOYngd90UQ6/6SMJVe3ofp+fWrw1lpUAnIiwIARIoCjK4lsoLIKBxhZCmD279C8/OqDMPzSX8T0tNTxARvLs2tGgvT0puICIsCAESKAxEuJbKCyAegHO2zQe0MwAh8UVAdkjhM4Tj0fFnx2bjHXv7u2ZYYCAiLwgBEggOlgG4lsoLIBohIA3xGr+pPB2Dte65Qr/bzen5DLUFGEh93rO7vpZ9WnssIi0IARIpEJgCuJbKCyA4KL5gU3cbzqztcKMeIwJRI6iMoRb0kpj0BFFatLFu5SAiLQgBEikSnAO4lsoLIMM/0XkMFekiTEEsaZsLJhuh4d4pAPJZza9J2DtaHqgaICIvCAESCBTUBbiWygsgGiEg2lQ2ENleoHVqeCoeiounzJ/E/nJao0/5x4uFU72QpgciLQgBEikWnAq4lsoLIK0/Qy047JJa8ar8PVJFDM67IISa7HENaLvPmYJORuZOICIvCAESCBi8EbiWygsgGiEgbXDRTXW0sc3YdQA98TSW5pIidt/juyIxbyK912ONIEgiLQgBEikarhu4lsoLIAhc61enyz3kjzqO6IwTvN2SSMjv88oGPLSEr+MVrBd0ICIvCAESCBzyM7iWygsgGiEgsygPpZyH6BBj+FD9iGZ5sJXT/D2clAcrSeMex31HT1EiLQgBEike8lC4lsoLIDMF3thazMUUpP5aWVdsCrHjX/A7/XQYp8ima+g5iJtXICIuCAESKiDQjQG4lsoLINY1V7maR2YQSbXVx/fQknTF+WamVKi8duwIygZdnRm4ICIuCAESKiK09AG4lsoLIIX+At/th/qKVhH5w3IUe7bxtJVzwh0bhfBiO2GpEEbKICIuCAESKiTC3AS4lsoLIOKI1t5Aa2BLz89w83XWSvpNoWIpwMXRdsNyAsLjJoY8ICIwCAESCSa+xgi4lsoLIBohIHewv9Ea2+pzfhNEARWvXWZvJgXMSpzk7JCoSRqH3wb+IjAIARIJKNrwEbiWygsgGiEgv5vbfkYWJJkK+E0cTLHAEI0WSVT2Mf6axMfPkKmPegYiLggBEioqlsQnuJbKCyCfGdbdMPr/zjiN0HEbVSn4NPqY3qehIGbZHhvAmNA2qiAiMAgBEgks8vI5uJbKCyAaISDLUa6FlesVviVIUlfME1rYmk+UmtvaQQn1HuCuRSQpHSIxCAESCjDwwpYBuJbKCyAaISCipGZjeMQz+InVs0nP1APk8XSgu/Gl8VNON5/9JsBi1iIxCAESCjKelr0CuJbKCyAaISCKyvw/vZNt4BlZEE/69TxobMvZdFBfBNut0iu3kqpKMCIvCAESKzS+1u0DuJbKCyBwpMQuxTwb39RIMTn7uOxFBAwL6csZRLi8jJFizXFHCyAiLwgBEis2iueqCriWygsg0V2G4N4zYBgnqHPyg0iGOXI9eO9PatjAysOcQg4Mb9EgIjEIARIKOPqF6xe4lsoLIBohIFemZiRDS26c6ARcW5F8bsqZbDrvWS19CWliJLrCY+qBCqUCCqICCgNpYmMSIGdaVWpKVUOkaUxDAZzej+G+9KMa0cjA5XvTZdSor6llGgkIARgBIAEqAQAiJQgBEiEBqw/kW4nw9zlC0ZEKJrRiqDmr+e3urkH0qVJAUb0uTzsiJwgBEgEBGiCMadx/RG+nLCNC3B6A3dkMETePJMXw3Ik5k962hDKX9SIlCAESIQET1canVw3T+E9AO0Dya1NoyL4+CkIN4EiNq4pjjNSIJiIlCAESIQF8VkA+Kkx5tz72HDHN+BW/d6HN3WpQM/VjV3PLOCCzniInCAESAQEaIGcwj5/iVTNvV3nJ+OWATEmWq5k5BWPT+g6U05iG462SIicIARIBARogfe2ex5et72ji98ErIIZg7QlMyfDyKtqdnWSRGV/mWtQiBwgBEJ2L5QUqL2NlbGVzdGlhMTZtNDhqODhtbHcyc21oYzhueXVyem50NGpsOW5xZ3lxZWd6M2RhEltyZWxheWVkIGJ5IENyeXB0b0NyZXcgVmFsaWRhdG9ycyB8IGhlcm1lcyAxLjYuMCs0YjViMzRlYTIgKGh0dHBzOi8vaGVybWVzLmluZm9ybWFsLnN5c3RlbXMpEmkKUQpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKeA6XDVpYbQ/2jef6KXPR+4uwS7fh9gsGoUqauvY8RRxIECgIIARiiARIUCg4KBHV0aWESBjQxMDE2NxDckWQaQMJIk+X9+iAF/sCXXXJmGGQjVrGOooPm5HxNXOHjtIbGHjzO0dKb2cd6+OLT+nbm6ZnLrbcIqc24KmK1hSZ2TAI=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXg5bnJhNnlteTZqOHZ1OGpwZ3E3M3VnNDlrNjl5OHk0eDkwOXN3Ei9jZWxlc3RpYTF0MzI1ZDB2MGVmbHA0OWM1ZzZ1dTI0cnBqOTh5ZzNtN3QzOHZlaxoRCgR1dGlhEgkxNjMxNjg3MDMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAq4Zz65EdTdJUqgKLjxDeEFFX4QJfr2c+XXkmjD0TLVuEgQKAgh/EhMKDQoEdXRpYRIFMjEyOTcQ8b8GGkAAFkfG1bIADfpSag2UyWU0Lb/CuMertO5CuKT3RvSwOjwXIpuM35Vem3Jqym/j3XSPkdDBW1Z+2DNcBfVMlvsT", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXI2OXVueGU2M25heHhjenNkM3l1czdyZjBqNGZhc256amdsMmczEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5MDAwMDASCTEwMDMzNzQyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECc4coCvDxfzn7kP1KHo9zy1xwiwDgla0qtLV1PegHfnESBAoCCH8SEwoNCgR1dGlhEgUyMTg0MhCW1QYaQEUIN6YwB1R6k5bEoRR26AnuV+Ux2Tv2t3vkyAiD+VEGbw/Vn0WAvejcq9R95QRvdSwjP6ccFrsaP8ws29etIW8=", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWMyYTlld3kyd25kaHNrYWZ1bmcwMnhodHlmOTdoNm1tNmplZWUwEi9jZWxlc3RpYTFkZ2dmYXZ5eHloNXZ6MzUyeHZteGhzbnVuZ25renR3ZDBnZ3pnbRoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMyf7fjE3LOo65nHGu0hW9uE50pGKzHh7PHeDJppuQY3hIECgIIfxITCg0KBHV0aWESBTIxMjk3EPG/BhpAqLJdpEwJ2DoebEHy0PiT37FqLSPtb0i50SZBdkF/TG9BpA6vxaxcQHGp1BG5KKlzhWbR8QM16L/JGeEfq7yeCg==", + "CqEBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWRqM3h1M2pkeGtkZ3Y5Z3VzOG41MHRoNXZrNHU1cnF1azh1NzltEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoPCgR1dGlhEgcxMDAwMDAwEgkxMDI2ODIxNjESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkqOPRzzNZJo2Eb8PLy91FSaDRoODIsVt9loW9q7sgEtEgQKAgh/EhMKDQoEdXRpYRIFMjE4NDIQltUGGkCtxfc+HPg4jhREZSYHyuYReTiXUx+D6ptQRwKyJ825pVE4roLIrasUxj/G8CYTm2abco8Djm9/k/ndUG+yr73j", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTIyamU3ZWdyNmRqanA0eHJ2ZHV4cXY3a3Y1MG5oNzZ2MGdzdWx0Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxNjg3MDcSCjE5MzA4NjUzNjgSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA0wQajv+XdfmMRylufWRRgs8Fpo4Q3SyMInltVJBCI9zEgQKAgh/EhMKDQoEdXRpYRIFMjEyOTMQ3b8GGkDjRSMy/lzY4OXgjhSkmXfz403h0te3dkr8RJYHztmUlyT28Ilg1vQdBiTQogBP71odWUVzbIg8m9O5z27faQxj", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW50ZXl4a25zdzlxdGFxM3M3bXQ3NWx2ZTcwdGxjN2pjYTRwcmxtEi9jZWxlc3RpYTF4NmxjaDRqd3UyNWUzcTM1Y3JlaDQ2dHBoc3lwOHlxa2FmdHU1choRCgR1dGlhEgkxMTgwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA/ugFFUaiwrPE5pkfsgzsYidwqt48VhTOGwMaRhupdY1EgQKAgh/GAQSEwoNCgR1dGlhEgUyMDUwNBD0oAYaQNNx85beUCwG7TKylhmvl3h9V76sJrQMgm7DnlTcO8hYcyv13s2ap0LJ2gcD3FHQYbx3+6AOL7mn7UOHEQ4M1Qs=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWszeGVmc2NxZmxodGxmbmY1NTRzMjl4Y2UycHZ2a3FhaDk1OHBhEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjg0OTU3NDMSCTEwMDQwMjIyNhJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDAhSko0YcjOdWkV8Gvd9x1EAW4hVakcqYl+rMTjxyca4SBAoCCH8YARITCg0KBHV0aWESBTIwNTA0EPSgBhpACrO6IpQekj6qcixtQ+JrNdM5hFbenIbGhEb92+rzzBxoUbRjyCrCkHFkHg84vUryoU7Mj2YhdKRQsFjF6E7bjg==", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWozd3NsZTZrY211ZW1lbmR3NHZ6MmdwOWw4aDRsZzMyZHpobXF5Ei9jZWxlc3RpYTFhOW1xOXFjaDYzbGw1dTVsa3AzY2d2NzM0eXdscHg5MGhhOWdhehoRCgR1dGlhEgkyNTc1MDAwMDASCjExODMwOTc2NjQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAo51AFjXi/bkQzJwEZ4FScKxqVB3EfsB5BH4QTmf/c66EgQKAgh/EhMKDQoEdXRpYRIFMjE3OTAQktMGGkArtjMoIUJkFh0umOD0RZVYGWjsj9uDmMrs+1F/LEORHwkhwOVpIku5aj324l3UG3PFPT4lrlMNaxIIzflCdm/7", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTltbnY1d2t1YWh5NzZrZTNkNnV1YWcwZXlmcjRtMmZudno2MnU2Ei9jZWxlc3RpYTFrMmVqMnV3dm00ajl1MjhrYzc2M3F5Z2x3ajU4MmdnZnhjZjJjeBoRCgR1dGlhEgkyODg5MzQyOTASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA/tcsNeJNgkK1CNDW8S0tzKc40fSmingU2UQIY3OFuGEEgQKAgh/GAESEwoNCgR1dGlhEgUyMDUwNBD0oAYaQMJu65oXlfZfd4PpfTqgMo4sHu8mfFRofROSmwEv9KM6MvIuw0DvqFSLeCrSFBlrDlsQ5reGzJu/AsQ+B3GCiF4=", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWFsZ2s4NWFocm4yOWZsdWVma3hmNWRnNHN2OWN0NmNheDVtdW5yEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxMTAwMDAwMDASCjE5MzQ4MTEwMTgSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA0BCrY6VVgahVPN6QW+APxsHzPJww2V5K02z8Czp1BBOEgQKAgh/EhMKDQoEdXRpYRIFMjE4NDIQltUGGkDzDUsUg548NsVkp/mIN+mQqeE12/6hMqzQdmgTssPL4i9rYX2uMW+4jDBKrifOblbR/ziIHjDE0p+VBKkiIb3C", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTl3dzdweWRyYXJycnA4bnYwNmh4M25lMG4weWo1bjZ6dnAwNDZkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggxMDAwMDAwMBIJMTAxODkwMTAzEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNsxW9sNUM0YwIxMlFqBGl+qjICRJUBJ2hVePXA/fXguBIECgIIfxITCg0KBHV0aWESBTIxODQyEJbVBhpAl9s/nny8kcDdZBUZ4GR2JYjyw/wMVsBe7kpTEB5BSv4ifvV2E0fRwGZ2LVB4j2qeDwJjyEMaeT+Je6PIHsm92g==", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTRoZnRwdTZ2ajJrcmNmbnFnNmc1bWNrcHZqaHB5dDJndTdxODJkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggyODAwMDAwMBIJMTAyMTk0NzU4EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJo8vT3l+zFgYjHDxmYb6GP4pApe2KEN1RGKM8h2vEM7xIECgIIfxgBEhMKDQoEdXRpYRIFMjAyODYQspgGGkDTH6erQa14gQ6MZKmihX6IEpXz7MMIIAPbB+ZtvgI61lHpSv9dpPa4fSRM19jTJG/UXDQfL943NQ9Y8JmBhRpT", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXVwZ3l5YzJ3N2V0cnBtZnloc3MzNnFhdzQ4OXRjcnk0YzdtZWx5Ei9jZWxlc3RpYTE5ZG5ldm12OTdxOGEzcXF4czh0ZThqM3B3bnMyN20wZjJkdDg0cRoRCgR1dGlhEgkzNjc4NjMyNjISZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAnf998S1jRKZtuCSpPrszaHJrskF8zFl7Fe31uOIl8jCEgQKAgh/GAUSEwoNCgR1dGlhEgUyMjYxMBCW8wYaQMvQvIKdnR7qjISgQnDUpwYb3ixOab531Lyw/qT+GglYR1W5obGmDQa8r4QidKghMUsHEdP1Kmq0NGjj/HKoLPM=", + "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", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXZncm1oNHJ5NW02eTI1d21qd2VxNGhyZThmZHltbnQ1OTU4bTB6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggxMDAwMDAwMBIJMTAyNjQ3NTk3EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLDrm8QECNfvusyzwYJJu/ffmKDe7NucbsK1xV6EmkL6xIECgIIfxITCg0KBHV0aWESBTIxODM2EPjUBhpAtIQp5GINXbrtdz6ePTj5IHoUbMoNuNiY55A4Tqn8pKUIa3CnjvKJi9AAHudo9Re5CaooZYquOqENX6R5UfNeaQ==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTNoNGR0c3I5MjN1cDY4ajZqcnNkZHgzcmZqcnBwam41NHF0NTBzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg3MjQSCTEwMDUxMTg1NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECk2pfqqwMx6r0xR9Xdr8V87ooFDEqCqI5EBTWhZR2iGQSBAoCCH8SEwoNCgR1dGlhEgUyMTI3NhCIvwYaQPVQQkxro3VQLVAcbaq9JT/YnWCu1slyCkOySUD0LgjjBH/P3Q0mRm7pJ1lhC8f1BjF0R1j4O98zUtbn4xjm+9c=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTAzMnh5dDhtMmx3amdsdHJydGs3ZHhyenR5Z3h1cTVta2hha2V4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NTg3MjQSCTEwMDM2MzYwMhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECX5mco8C4uBI2Nh2f70sYTX2cciiQRHwDT63KLfi0ZNASBAoCCH8SEwoNCgR1dGlhEgUyMTI3NhCIvwYaQGfyybLMXa+k+abZFe0ZFS0RGt/YN+8NwFNzUPPJmexPelbFwUeYXwJJqwjIJHAJHl5EX6L3m3aU+FGFsG3nS2c=", + "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", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXp1cm1uZDQzNmw5emE5a3V5bnJydzhtbTZrOTRydXdmNXJ2bWQ0Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMwMDAwMDASCjE5MTI4MzIzOTMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAv/P5PqcYML5kIS4bEdtUAqjIaRJYT6JR/yR8ijokQD2EgQKAgh/EhMKDQoEdXRpYRIFMjE4NDIQltUGGkBtAI0QmLYiF5dLwZUgUnfWrcu9NaEKh9rT+zJhH0HSlUuoYl7EAkmBe+31ZWGeJPyAz5brnIt0NKQPzRTHUuPm", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTY1NTAwMDAiL2NlbGVzdGlhMXdycnBybTdoYTdnczd2eWFnd2RhdG1ydHVxOTRsZGZscThlcXBqKitvc21vMXdycnBybTdoYTdnczd2eWFnd2RhdG1ydHVxOTRsZGZsZWttcWRkMgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPLutVGN9y6JIFZnOp6NtUXuV/JszArIZXE5SU4ejBXCxIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MjEQ6b0HGkCPsNga1xQHtnQGuDyRq2BCf1FdtH2pAyeD/F5ZK/YT/AaoXlDLES6MU5tSNXVc3oZEMcJX6q3H7Mxhkhf0QpGX", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNTUwMDAwMDAiL2NlbGVzdGlhMXZhZjdjOW1zNHR4dmhmc3pjODZudTZxeXltNjM4NzlocnN3end0Kitvc21vMXZhZjdjOW1zNHR4dmhmc3pjODZudTZxeXltNjM4NzloNnB2eno1MgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKHykAyZvWLaUeTHQA8/d9FmYXU402ggYXQ6D0nXW5KCxIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1NDgQ8L4HGkABaXLY+/GGPbo8Pq1j+KApnhnzxI9x3NDd6Ha6sYd1hyE0iivNw6hM1kNn5Pl9m4yhVED91BXZylurkoraqX7B", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXU2a2dtNHAyemh3eGFlY3FyNGxsYzR0cDRoajdtNnBsdWU4cmg3Ei9jZWxlc3RpYTE4Z3NsdjUzcjloeXZ3d2E2eXR4ejVyaDZnMHlwcjh6NWp6c3VsdBoRCgR1dGlhEgkyOTQ2MjAwMDASCTEzNzg3NTM0NBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDPTTt3CQ2tRZ6Fj+c0nuSmbEOmpasXKek/ma6iSwlkYwSBAoCCH8SEwoNCgR1dGlhEgUyNTcxNhDA7AcaQEOBnFnPWypmSiCBLrSxFxM9igf98TafJXNGa3mvaFsETC5u2+FJoQuCTXkMHgjaik3V7rErHvSBuPSe5qqtPrw=", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTcwMDAwMDAiL2NlbGVzdGlhMW55ZjNqOHJmcXlhMzlycmw1eTVuMzB3aG1kc2Y1dmVzeG55ZmtnKitvc21vMW55ZjNqOHJmcXlhMzlycmw1eTVuMzB3aG1kc2Y1dmVzbHp4ZjZoMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJwqEgBCrJUasSL67tEifgA3xuoekHz/3bjSyYtYOGOZhIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzkQw74HGkAISPis0koFhHLnNe+5mdimIDcGxeqftOtdMYkMUf5cXi/ApK7P/Z1jiMp7quMzxrnkoV8l7g6CbmY58EPgu/9t", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNTcwMDAwMDAiL2NlbGVzdGlhMWVzNG1mN3ZxbjVndWM2emdneGEzZ21qNzk3Nm40ZmR3NXloY3J2Kitvc21vMWVzNG1mN3ZxbjVndWM2emdneGEzZ21qNzk3Nm40ZmR3ZDQ0YzBuMgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNKccDMy/jQlAV48LhnS+otfGXoms5C5Hv75yqIZPih8BIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzkQw74HGkB2g2PK94S3LWVDBVpBjRPUtXJgJYuSg0zDg0h9r9bmZXSCnzCvWL9Ww9Ey8Nb11eqIGxtrEmZFRjpQrBVqZLs7", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXlmeHB1NjllZTRscnJwbDh1eWh6ZnB2bHRma3MycGtqY3Q3bWZmEi9jZWxlc3RpYTFhOW1xOXFjaDYzbGw1dTVsa3AzY2d2NzM0eXdscHg5MGhhOWdhehoRCgR1dGlhEgkxMDAwMDAwMDASCjExNTA1MzcxNjQSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA3Bp2EmKMF99oO0eiYgcIcyDNk7j79shtJp8Kfpy/ROAEgQKAgh/GAISEwoNCgR1dGlhEgUxOTIxNxDS7gUaQBxL1ZEKzpqbip850gJy9lZX1+o2v0KAi3q2ugedGiHvfFBX1qiIFpGmgHrTc1fbBkNDTLVmqQ/rnc5GgF489Mc=", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNjIwMDAwMDAiL2NlbGVzdGlhMXN4NXY4eGw5NjBnZ25zdDk0Zjhza2U5bXA4OXh5aDJtazdoNXYyKitvc21vMXN4NXY4eGw5NjBnZ25zdDk0Zjhza2U5bXA4OXh5aDJtMDA0NXE0MgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJxDdOrlxD9x+obrJzrrnBbJxHrBdI7O+2eB+Cihj3m8xIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1NDgQ8L4HGkCaZfroaBAhcpMwFGbEq8+ZDbuspEaCAYc1QN0byIMCmyKJlYFgcDToCCNS6oo0yXMAecCpdm0hxeKTPd8hPiVN", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTI4NjgzNzgiL2NlbGVzdGlhMW12aGU4ZTd3czZjazgzZmo0MGVuazh6emEydHVkbDh4d2ZmODAyKitvc21vMW12aGU4ZTd3czZjazgzZmo0MGVuazh6emEydHVkbDh4aGN0OHI0MgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKTSetQ8gLwQD8vvCTuyLj1kYxTBvE0zdwC5vkqUvsylRIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzAQlr4HGkAUSROgSXwDRC95XM35J514Mw14CNwk1tfcxAxPCiBR0DBG203gAV/xA3/Iq3r2C/MeH1ldr1FfNWf27nOjeCYV", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTAwMDAwMDAiL2NlbGVzdGlhMW5ka2d3ajg2cHk2eWx2ZmY0cHZ0ajZ0bXNyYWZ6emd6a2s3ajB0Kitvc21vMW5ka2d3ajg2cHk2eWx2ZmY0cHZ0ajZ0bXNyYWZ6emd6MDh1anI1MgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKi8hO02RyOsfglZnjSpNqgMGYC7U6frPMP3Yjrp4VsHBIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1NDgQ8L4HGkAbn6pns7dhEGpFKGNyWtfN5Zh0W+PdQ69K2qBHlSyA9yG+Klxim42uEJQ5+BFPspP3Cs+P2/oWhWXtFLQzp+mK", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxMDAwMDAwMDAiL2NlbGVzdGlhMTV6NWxydmF1MHZrbmplNGh4N3V4bTR3NWE2NnN6ZWc3amsyZDN4Kitvc21vMTV6NWxydmF1MHZrbmplNGh4N3V4bTR3NWE2NnN6ZWc3dDhnZGFlMgcIARCwjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPAcSC0OZMKy4/rSAaCrzYb31ohJS3icIEv6OTgC9juSRIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MzkQw74HGkBOMn3GTq9EnUIe50soOwj8utWifjAzrC7EfnfKZkvKLFOHEC03AvRtpa8IjdZURBzUukV+LxRltg6HPxhFdAcY", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNjAwMDYyNDciL2NlbGVzdGlhMXQwMGRuNTlzZ3o4dXY1dnp4Z3FydmVtNWo2NnRxZWhodWEwZXhuKitvc21vMXQwMGRuNTlzZ3o4dXY1dnp4Z3FydmVtNWo2NnRxZWhoOXZkZTJ2MgcIARCxjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJeGfoPwu7CVnqapvAuyYI11cLgT9e1XDyddZBJ9I2wKxIECgIIfxgBEhMKDQoEdXRpYRIFMjM5NTEQx6cHGkCh7Xtt15j//1GJKF18qPwFUePTBdjutRxbHFmVa4aFAx7lsi7/2FS18BubBUscwJdS07kxlSISHPXqprg1pmPx", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWtoNHFqam45bXJkdHI0eXUwN2swcHhzeXMwdmRrZzkydXE4cnF3Ei9jZWxlc3RpYTFtN3g1bjM3dmR2bXJwMHdwZ2N1dTM1NTB2Z3J2MHM3and2c3E3ZBoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQO5+qq+y+4LZC/rp5AoyF31WD7u3rgcMQUjp9Pc51Xa2xIECgIIfxITCg0KBHV0aWESBTI1NzEwEKLsBxpA4JpXRvra4wGOJyotHm3gIiXkCQRhkay7mmaS0qivn/U1xaROShMyjAEM4WW4bk0aXX5x6eE7cpEj7zIWTiM1Rw==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpudXFrY3I1c21xbXYzdGR0NTcweXFjeTVxc3g4dzg1NmwyeTBqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTM5Mzk0NjcSCTEwMjQwMjkwOBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECaT9+dLKlCl3b1fpuRoX0yQoolf6vuXwcvhR7e1u5M9MSBAoCCH8YARITCg0KBHV0aWESBTE4NzA5EObaBRpA/Hl/5grnnIuE5Krygnr7pb+8xEadbnupQE7aaJI9n+0fHoX/4p3EfXVzQSAf+SMUN5EyTHr92dBSovSlLUuStw==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTQ5NTAwMDAiL2NlbGVzdGlhMXhmODc5c3RwamF1ZDNjY2o1eG1sYWNzY2hyYWEzZGs1eTllZ3J5Kitvc21vMXhmODc5c3RwamF1ZDNjY2o1eG1sYWNzY2hyYWEzZGs1YTVtZzBtMgcIARCzjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMeEXrgI4ucc8Ub1J68spiG7gO1NZucMy+EWUVjqOMtsRIECgIIfxgBEhMKDQoEdXRpYRIFMjQ1MjEQ6b0HGkDZYWBflYTANgWJeGJ+KcFKX5gA+AEbebalPnz3Z5k9/B2Kt6oXhCDT38ciMBZLtZWz0dl2Oo2VFvSfxUBiVYju", + "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", + "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcxMDAwMDAwIi9jZWxlc3RpYTFlYTVzd3N5aGFlNDdnOHFqZW5heDhhc3huMnJqcGVqZHQ3Mnc3ZSorb3NtbzFlYTVzd3N5aGFlNDdnOHFqZW5heDhhc3huMnJqcGVqZGowZ3dqeDIHCAEQsozlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC02W4To/oWG2CL4mXhtX0ZW+k2ygkiEHcdufBwclNTE0SBAoCCH8SEwoNCgR1dGlhEgUyNzYxNxDhtggaQO/oT5Xp+zUAyPT/QM34XtfgDI/gW2UeGHlwYnFER3T/JZt1N2Qg1GDqNOS128Mm8Pa06V8GLM6NvShcslq67lI=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpxZTdmZjVqdHl3ZWg0bnpnZzJodDUzNmw5M2R1NjllNGR0a3JyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjYwMjYSCTEwMjIyMzE5OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDnZNboxOszp9a8JJYLFrJzmjZuneWLTVL2A6RDNuH4AsSBAoCCH8SEwoNCgR1dGlhEgUyMzcxORDAngcaQHDi0vkW/wdIBQ5YaKUDVe3URXhbIjW922TSw/fzi9BqC0df45lBbv3ic9Qnc2UnDcItCQQL/95lxdw+29SxDiI=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW53bHhydmptdzhldDVjbTJodXU0dTlnbmxnd2hsYzcwOXNrZnB2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTEzMDAwMDASCTEwMDk1MjA3NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECV1O/dptnt/GWmdDAmgC8qjFq8v5pg0meJK6B2wfdiPESBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQP9vVDZ3wl+m4Hn40r0Qdqp+mEnvhj2DMaJDllLFGF4HSH6VOnIHMSl/DXRut+k6DVLDIr6CPPYyqJNHiq8W1LQ=", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXFkbXJlMzNteWY1ZnR1M2VjZDk0cTQ4a3hrYWZhcThhOTB2dzl0Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyOTQ5MzM0ODASCjE4ODQ1MjIzNTASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAwTsFNdQJ6gEQnui08egkgtzC+2QTCZBpo+joUVMkrJbEgQKAgh/EhMKDQoEdXRpYRIFMjEzMTQQx8AGGkCHimxlv+h96vTqpeigCL8G8M/rQywQa6Nk1LdHznRtsxrPZyxw6LXdC3z3gWSY19LZB8t4opdaIQfRrxyhgyD2", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWhhandhOWVsZjc0amdldmhlajd1MDU3dHQ5eDhycjIwMDJjbXI4Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxNjg2ODYSCjE5MzA4NDM5OTUSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAzK8aFwfE0vfy78SOqd9e2xtLrY0kN8HZflgFc/UmjTZEgQKAgh/EhMKDQoEdXRpYRIFMjEzMTQQx8AGGkCMTn/FKlN/IEb9FUaXICHjdZk9wJ0QhvCVp/H0/NVruzKkpodPWqWM/Kvzzt+qVYSe8a+NrVdCjuyi3X3F/pSf", + "Cp4BCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXc3Mmdhc2tzcXpxNTcwZ3Bscmx4NXpkYWs5eTN1Mnc2NmdwenNrEi9jZWxlc3RpYTF3NzJnYXNrc3F6cTU3MGdwbHJseDV6ZGFrOXkzdTJ3NjZncHpzaxoRCgR1dGlhEgkxNjMxNjc5ODkSBGJpYW4SZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA6yyOgYWfYwzHpAebkWGOt4i0Q7Myhd51sSJnwFDr+GJEgQKAgh/EhMKDQoEdXRpYRIFMjIwMTEQ5NsGGkDXFn5bXdUwV8CiaHyoAaCzjeqQi6rEfabAuQEQ7eAfI3/mBMpaSbWXGgQJEArqpZaUymvVL6vDdUGhbg7i9hVj", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTAyODA1ejM0a2NwenZyZ3Fsa3B2d242dWMyYXl3ZTU1cWR0ZDdzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5MzM0ODASCTEwMDQ1ODI3MxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED5PIXpFlIE1bcxTSjyAXvlj88IG9r9r7ZO3dra9RIY7ISBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQDC+V+mUQswYyp+uEPkODVKGmWAlstUDWorEiKFUuS90YtMjc6ZMrlfh62DiH6ScULKfLHdKNgtdUTz/2gaDZUk=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXA1anY4bWxleWZoOWt5a25uenU1a3pocDdlMGpldHE5dGw4enY0Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2ODYSCTEwMDcwMjUxNRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECM3TcqDs+/VwmWzAhkjpftrDbfUe53mnRQLj0hcqorBcSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOtdPeLok5HyGSBlKu1OdXTNzBoBstu9JofnAoXXFsxBQERO+hJFx66i4/loQyezVZtBa3PZwZv9wvOgde9y/18=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWx0YzZhemxnZXl0cnNoaHY3emc5bDU3eHFkcDZ4bXc5amgyMDk4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjk1MTg2ODYSCTEwMjY4NjEzNRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDOxXwPepoOCW9+3Z3UcYBGeZhHrSkXciwSS93bDlfaFcSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQNuNrKnYclTv1XyYPrNmAn3lIHgsMW15AXCKKW0KwV4uaXLqQ85ZI2Vbq7g+maU9e3r9lbYJDW4AlxVVymZXUD4=", + "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", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWF0a3VqaHZ6NW5ldWUwdjJqdDhsa3NxNmZ4eDJ6amdwNDV3enZ6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg2ODYSCTEwMjc0NTc0OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDRBNU24FoonV03jiiXBO4BbyyvrSVKFMbGa2QIh8Sg6kSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOtxpQ/fEue7VTOw/tCTHYhID/hmvCcFqW/sEgdoxsSDYa6AjO7rmh0QFpD5rKmh/yNAstWyY3OhmZ91Z27O47s=", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXEyeHplZHZhdGxjbjBtd3VzYzNmZTBoaGVteDlwMDIyZ3g5bXQwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEgg2MzAwMDAwMBIJMTAyNzU3NDY2EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJQbSjwdbbqsiPQz9sbSjSTwqdTbi30zyVSWs3W7xn/qRIECgIIfxITCg0KBHV0aWESBTIzNzM0EIufBxpATdy7yzNEPFK+0KXalmN+6vLV3D8c8NjTzesNvjZKQr9YK2nekj2l0oKr16FhjylEqkIoeJIpMqRrybe9m7v3QA==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTc5ODAwMDAiL2NlbGVzdGlhMTA0bGEyeWw3d3BseWcwOGt3dmg2dnhycmt5MDdqdTdteXRkOHlkKitvc21vMTA0bGEyeWw3d3BseWcwOGt3dmg2dnhycmt5MDdqdTdtYTYwOGdqMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLvffO+7ykRMfrF2ic2IaydZJmXBOIwo02ImsvcQmlJcBIECgIIfxITCg0KBHV0aWESBTI2OTkwEKKeCBpAyv9C8yo3oMrf9QNzLsB3mVlO1CvB3ch0mult9rxwKMVXInkFe7CNrTE4SvhvsBG87KpOmu5ZdsuAJbemQhPijg==", + "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", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXI4eHRjajNtOXZtYTBudG42M3poMDlhYWEzcXAzZGFhd2pyOW5oEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTcwMDAwMDASCTEwMjc1NzI5NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDgBN5yVJ7XyxaaZeG8b9WRAPSWy9yGfOcFIk+19GvwmkSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOiqKNB4cFwW5IMKqKdaQAs6rxaHeRkv4rTzdYLguCGRaDF90Ij5/pcez/ZDPz+ffRl4yWgkDep5xorVY0DjOAY=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXlwNjg0cWR4d21rdmRhbnNjZTUyeW5hdGE1ZGQ4bmphZXlhcnhxEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2ODYSCTEwMjIxMzY0OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECWethsP+7RiK9VxA3/83A+zHX73r2wDHLDg8YkpHucYASBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQPwNnAjicGfVfWzoWX9TDIacPiEKwAKsIHqQl1agGoSaO1UsgL107gmHPcFZ7qmiQZ9r/6Kxog4TLS9wccgKp1o=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTIwYWg2ZDZtdDV3YzMwa21leThtbTJxOThqMDJtbm5zbmNxM3p4Ei9jZWxlc3RpYTFmaGxyaDJla3lzY2F6c2Vua2ZqMGZoOG1odmF1a3hnYzA5eDBzNBoRCgR1dGlhEgkyOTQ0NTg3NTASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA27rcCYxqOhZbK//iYdQLgF4ws0zylYIA4f9X3l1ncfbEgQKAgh/EhMKDQoEdXRpYRIFMjEyNTAQh74GGkCs8P78MdF1ILt5CnGF279+NrIIt4yuxoyouCZ/5A6jR3s+LvSemdpSZi94o1iPTgkQFS/9zD07kg4dz11DwMj6", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWU4ZWs1a3R2cjRrZWxrbDVoeTNuYW5hMjJucWd0NjltamVxMjNkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMwMDAwMDASCTEwMDI2MTEwMhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC1OEodmwoKX/r1sJz40ZQmhwKWLrGGPgUgIZTTvdEZ1oSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQMGvBUsY9Cl2HacXpFASpuzebY6CTG+nU43sjE9Ga85BHzxwmgtyPLO51T2LuIwvMtoJTvzGReAahizhCHQRTPQ=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTV3dTUzMzN0Zmh5cHowd3NwZjk0MnI3eDZ2dDNmNDJ5ZWtmNjA0Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQwMDAwMDASCTEwMjMwMzEyMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDCKn5b8oRuZ7+AmJoAjNWjjssvn8R4q/RlkSvsk1RwEASBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQE3JipB7lpMJ+zlfVpxw6qP/8qqzhUJ7YD4/vG4JGciOH3xd4aYOTzLiflTtpIKoLje/RltOk6lbm/gjOJ8/f2o=", + "CtoHCtcHCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKpBwoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyMTkzNjYyNDEiL2NlbGVzdGlhMXVrNnVtYXdsMnZzNzJ2MGFnc3kwdjg4d2Z2Z2FnMnd5N21zaGRlKj9vc21vMWRtczdoNWcwemxxZDgyNGFuNHU0MGR4bjBqanJ3czJuMDB4aGFzcjdrY2NndG10eGVwYXFkOHR6dTIyBwgBELOM5QVCgwZ7Indhc20iOnsiY29udHJhY3QiOiJvc21vMWRtczdoNWcwemxxZDgyNGFuNHU0MGR4bjBqanJ3czJuMDB4aGFzcjdrY2NndG10eGVwYXFkOHR6dTIiLCJtc2ciOnsic3dhcF9hbmRfYWN0aW9uIjp7InVzZXJfc3dhcCI6eyJzd2FwX2V4YWN0X2NvaW5faW4iOnsic3dhcF92ZW51ZV9uYW1lIjoib3Ntb3Npcy1wb29sbWFuYWdlciIsIm9wZXJhdGlvbnMiOlt7InBvb2wiOiIxMjQ3IiwiZGVub21faW4iOiJpYmMvRDc5RTdEODNBQjM5OUJGRkY5MzQzM0U1NEZBQTQ4MEMxOTEyNDhGQzU1NjkyNEEyQTgzNTFBRTI2MzhCMzg3NyIsImRlbm9tX291dCI6ImliYy80OThBMDc1MUM3OThBMEQ5QTM4OUFBMzY5MTEyM0RBREE1N0RBQTRGRTE2NUQ1Qzc1ODk0NTA1Qjg3NkJBNkU0In1dfX0sIm1pbl9jb2luIjp7ImRlbm9tIjoiaWJjLzQ5OEEwNzUxQzc5OEEwRDlBMzg5QUEzNjkxMTIzREFEQTU3REFBNEZFMTY1RDVDNzU4OTQ1MDVCODc2QkE2RTQiLCJhbW91bnQiOiI0NjExOTc1OTUifSwidGltZW91dF90aW1lc3RhbXAiOjE2OTg3NjYxNTkwMTQ4NTg1MjAsInBvc3Rfc3dhcF9hY3Rpb24iOnsiaWJjX3RyYW5zZmVyIjp7ImliY19pbmZvIjp7InNvdXJjZV9jaGFubmVsIjoiY2hhbm5lbC03NTAiLCJyZWNlaXZlciI6Im5vYmxlMXVrNnVtYXdsMnZzNzJ2MGFnc3kwdjg4d2Z2Z2FnMnd5OGo1MDA2IiwibWVtbyI6IiIsInJlY292ZXJfYWRkcmVzcyI6Im9zbW8xdWs2dW1hd2wydnM3MnYwYWdzeTB2ODh3ZnZnYWcyd3k4MmpocHgifX19LCJhZmZpbGlhdGVzIjpbXX19fX0SZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohApmv0Kl7MwHlRRixpfQzUJ1TY5WtafSBo2K5lE8ExF8DEgQKAgh/GAUSEwoNCgR1dGlhEgUyNzA3NBDGoQgaQNDQ8DHM3RosZA5OT1BPDX5cobHDEMnsWkZvNOR0UkZ1Rnb9qDI9bqOyYqx1R242GTDa5z6Ft5HlUba8PpdnVdM=", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWZwcDI0amh6dHNkZ2h2czVtcDB1bm1scDN4ZnoyY3J6dHdrOTRsEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxNjg2ODYSCjE5MTE2OTA5NTESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkLkqzBRz45T5DxZGcM7GXm9lthUzBH2UiMucUHzQi++EgQKAgh/EhMKDQoEdXRpYRIFMjEzMTQQx8AGGkCFh80D6xk/XwxwLjkvJ1Aiv8BoFGG0gxG4nI49kstYS0WgknIpn1pErdOC9z/CTOwRD+610CrTXm1cVlB1yaNy", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWoydTI3YXR3dzdjYW1rejNwMjRtc3BkdXF1YTc1ZHVmOWQycWN6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg2ODYSCTEwMDE5OTA2MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECfkcp/N+fMYLWcJY68QHZV3hH4dNBVjWcx2t/ROfrXwgSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQGpzEssxLeX5Nxm5fNV884uan4nycaLc9h8xopcnoS/1LEPlCyaY2yb9D6Pxr6BzP9KjyAaBTgwppXAdgqmaTH4=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXl3aDZoeHh3ZHJyNHJ1cDI1d3o1NHh0YTlwajJjajY5eXE1ZWZqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjI1NDAwMDASCTEwMjU3OTAyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDuLXOcvHsx2hulhVnGWpaHTJKopaqbdMhr+2nktC3/SoSBAoCCH8SEwoNCgR1dGlhEgUyMTMxNBDHwAYaQOZTqJW1Yz59c6l89AbIqKyjHQzmDwH9rAmGbdIWn5UkQ5Rv1NPjce7e1Ii+wMJLCvqCmxOc/QEaRH5fGFsMSAg=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWR1NW5ycmZtajU2OWg5N3g1eTR2ZmdoaHMwejlqY3o5ejh6a21wEi9jZWxlc3RpYTFla242eTlwdHBja2V0bDN0eHZwZncwMmxwdXowczh0OHkzcmt6NhoRCgR1dGlhEgkyMjcwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA9Ni69BtmeEmcUOMgfe2mp/f61qYndxaLqOKhLmahkfSEgQKAgh/GAESEwoNCgR1dGlhEgUxODY3MxCz2QUaQJdEHp1/JHYvLUav7WrHK5qhaaghW+azuJqREKLPNdGbVzD1XJjQn6WIdyXmcV0Yry35eFFVAZgnxxLpM1qdkKQ=", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTVja3Ntejk0bXNjZDlqY3VjbGNlYXpsbXpmajZkbGM5MjR0bjd2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggzMDAwMDAwMBIJMTAwOTIyODU4EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQOqHBqhu20Ex+v5XjkpbnCqAOA3v6qyRjIu+XcYMs8UnxIECgIIfxgCEhMKDQoEdXRpYRIFMTkyMjgQiu8FGkCs+GjMWC/nqXMRN8RgW0lSl6PIg9ePOTZIExJSShkganmkxG1esBzPAPjQJa5sXy7pEmm0QQtKg/X78BloOOAc", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTYwMDAwMDAiL2NlbGVzdGlhMXk3azIzNG5jNHVqcW0yZHB1NnBydDduNDZta3R2dTcwZGFqcm5wKitvc21vMXk3azIzNG5jNHVqcW0yZHB1NnBydDduNDZta3R2dTcwNXZzcmw3MgcIARCwjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMwoYVgcpLxQ7zG3VLP0xXW00jO2LlHGiezyDNgIdVVJxIECgIIfxITCg0KBHV0aWESBTI3MDg5EJKiCBpAl2Vv52IH/4VDG9T6QJvuu6Kk16MOKEF2sQcB27HIF8Fd0tNxKYBbwrvJHfLjBqrh2NIwHFBYUZ84z9dusgKd4A==", + "Cr8BCrwBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKOAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoQCgR1dGlhEgg3MDAwMDAwMCIvY2VsZXN0aWExeDZtNTg4eWxneDRuZWR5dzV4N3YwNnYzaGFmcWVyMmU3YTdkYzYqK29zbW8xeDZtNTg4eWxneDRuZWR5dzV4N3YwNnYzaGFmcWVyMmU4dnVkNTkyBwgBELGM5QUSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA5sRh8q07eYDUQIAZPWcW1o3JZYW6BfADy6NkaeKSiuJEgQKAgh/GAISEwoNCgR1dGlhEgUyNDU0NBDdvgcaQFupARhlk1ExnhrY/dBXZYquzCpFc0JW2DKuJxk70Z8hOMbaZcyi1YAgjqruYI7megmtjZWpCuKWZRaLCoYlnzc=", + "CqEBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWtrczRxdTVra2oydjdlcTk2djlqeTM5NjJ2Nmo2ODN2aGFjamo2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoPCgR1dGlhEgcxMDAwMDAwEgkxMDI3Njk1MTQSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA7XITRPFHNOcr8PG18xg4oUGclkumVSQPYXpmUs7+WtXEgQKAgh/GAESEwoNCgR1dGlhEgUxOTI0NRDf7wUaQCPMYg24wb61VL/wvs3Q9B5yN03Mza0PQ8z37+nrYoVlWB9jQcFV7sbMwsNNbt9UVhCGEp0sLgQyDokgCuh6D7A=", + "CqABCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMTkwZTYzN2g2MnNmcWh6bXVtNXNrdGF2bHdnbnIzcWM3NzBnc2xyEi9jZWxlc3RpYTE5MGU2MzdoNjJzZnFoem11bTVza3Rhdmx3Z25yM3FjNzcwZ3NschoOCgR1dGlhEgY5ODg4MDgSCTEwMDQ2NDYwNRJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC7RsCmy9G6n4/bjP7j4Mdb/WdvIFeJmx2yEAtA01QSC8SBAoCCH8YARITCg0KBHV0aWESBTE5MzU2EIr0BRpA3qErPdZrLVZtzZMOzhUxlb72WUB5giqqQYUv91Di+p06rtNqNEBVae/trgD1DlebtI7aJosz5zTTjh4s8KyIuQ==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXZqajRxeHZ6azZuaDdkMHlmeXU2bmUzMDgwenhhdW5zN24wcW04Ei9jZWxlc3RpYTFhbjQ0bDd1YTM1ZGRjNjNmOGR6eDl1YXNtMzNmdDR3NDYyZzk5axoRCgR1dGlhEgkxNjIxNDU2MTcSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA2etNYJy1tb1pIVgQV7kyM1gv9cUzqGqIiN4P318Z0W6EgQKAgh/GAESEwoNCgR1dGlhEgUxODY3MxCz2QUaQIdExZthQ9TTGA5ZJO9YueKi0IV/L7i2Vmq4PM+fWLI2bfD+k8VDvT2sBUMF5KMPJmY2aj950ZM5U/DVzWrqrwg=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXhlM3l5Yzl6ZHA2eW51NGg1MG5zOXN5eWpqODdncHc5YTNqZWpkEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjc0NzU4MTgSCTEwMjcyMzE1ORJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDfUJaiKe5o6p0IT1Ss9FPzHPOnulrZBDzVc9P72dkaYgSBAoCCH8YAhITCg0KBHV0aWESBTE5MjQ1EN/vBRpAnAXKqFP/m4Z+NSs3AiGvn6q1DbG7jjaZte3VFHWdJjEZ7JEOlvboR5lix91yL6vRyP1nDRqPJcXQqmjkKftoiA==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTM4cjZoazh2MzkydzBtN21jcWhwbGsyeWxsajBtcG1nN2N4ZjdtEi9jZWxlc3RpYTFjZ3MyeDl2M3F0NjM2OXA3c3ZrN25xbGhtdjQ1dmx1c3Rma2dqNRoRCgR1dGlhEgkxNjMxNjQ4MTUSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8OJzPhi/RjBrPz4dy3+jAT5y08KQnWYQYR8NEIIsJF5EgQKAgh/EhMKDQoEdXRpYRIFMjUxODUQ4tcHGkBlJ8feyUHhq4XoL9HBj5diJdnpKWwvDgB0Z7srpwUX0lqLVICNrqDVXR5+Le/JTE5dIC3fUR7njokvEUkMykmJ", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXc0cWE2bXVneGtjemF6Z2RoeDZsZTQycDI3dzIwYzR0eHc2amE4Ei9jZWxlc3RpYTE5c2F2eWdrMnRzc2N3OWF5eno3ZnNwa3dxcmV3bDZmdXhkZnltYxoRCgR1dGlhEgkxNzAwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAxGWeBw8uu06tkcmZZQ9E7UFE0LBEn+FExU3B9J61xK+EgQKAgh/GAESEwoNCgR1dGlhEgUxODY4MxDl2QUaQBIsX5ptYRz0DbaoMi8sQ/EIBsGkKmsetVu/OOs1ICh5YMMb64kirBGNjUs7OO5n/JeqWk9bCTeF/Jong+NVKD4=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTl5YTQ3MGNsdXc0emF0MjRyMHU3ODB1NHdyZXJxbjk1aHBjeWp2Ei9jZWxlc3RpYTFmMjRkNDl3djJmZHJqOHg2eW1nOGgwNDBycm1uNTBnemF3ajJqeRoRCgR1dGlhEgkyMjQ0OTU2MTcSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAzKpdSYGlWOodFKqMAlh3WmRLPF9b3suQIqheh/jjqJpEgQKAgh/GAESEwoNCgR1dGlhEgUxODY3MxCz2QUaQBKrSwFmwJGClYxvzg46232CKTbdawZoyusg2JqnHKoWTlXj3FcYucY0asYR1Y6sdQKKwnp6iu9xYqDS9VfGTSs=", + "CqMBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMWxuMGo2NWZkajJoNGpnZXg3NjdldG5oOXFqajM2NTRzbGtsbWU2Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choQCgR1dGlhEggxNjkwMDAwMBIKMTg4ODkwNTQyOBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC0vqO2ebfWn1V4US1utc9uojhOXvupVDxWKbbmORpZqUSBAoCCH8YAhITCg0KBHV0aWESBTE5MjI4EIrvBRpA5OBzy4fY46VbxdvyC18l+m2c+kstOz6mpYPudyqbP8JNQx3hjc1hm48zkc9MdTOGB0zWuqArFW8louBZj5PegQ==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWp1Nmo3eTNkZzdzOXpobDQzZmN0NXNlM3Z5NmZzZzBucHp3dnU3Ei9jZWxlc3RpYTF6NDJ1dXhnY3E0dHZqbThnOWo3amZwY2gzdnFkOXl4M2pjam1nZBoRCgR1dGlhEgkxNjMxNjg3MTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohArUaq8JJ5EHHOBWuNZ4cqhu+fK5IgiLPGyRy6lpAU1FzEgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkCw3hb6Wbiwutu2sIwsY76Bs1aJ2Sc6otY9M99OUyhZxTHunNHzW24hYiVevm7qx0Jyby7jx4uLZdlVWYgTx9LP", + "CqYBCqMBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ8Ci9jZWxlc3RpYTFnejZ5OGtnMjJjcmNnN2QzdmEzcTkzNmxsbXVmanZocDJnN2RlcRI2Y2VsZXN0aWF2YWxvcGVyMXBuenJrN3l6eDBucjl4cmNqeXN3ajdyYW00cXhscmZ6Mjh4dm42GhEKBHV0aWESCTI1MDAwMDAwMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECepnHaEXzUsvcBHuIZ17xWOlJaDkDqrQjbC5xgMzXS9gSBAoCCH8SEwoNCgR1dGlhEgU0NDE3MhC4vQ0aQJO9duovFZG5zJyvNgV2OuREYm2QFk5fsHset7hGk4k+CcyY9tO2ZfBWNJsoLjAsbsOV/T1HobSBrqCAl57r8KU=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXlxN3NtbXYzazJzcnk3cHdqeHg2YXB2bjZsbnRjbTV6ejV3ajR2Ei9jZWxlc3RpYTE1cmxmeW0wcHZ6bTl4ZndoZHk2MncwOXd1c3hhbHI4bHBydnJlNBoRCgR1dGlhEgkxNjMxNjQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAjDjAWGwdMfhbYI/ClKiZPum/OQ5YrNs9EWQI0YMWiMkEgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkDR8c9csg2NSmmqd+sQDiqEKWMMzD0SeGOSECxSMpYCqSmbVCd6q/olciPYifFbbpE7x+s30eb5zg7Qd3gnI+5O", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWw4bWgwbjl1NzhlejZteHZnZ2NuZjRoMHI5OHRmbm55dHZjY3pyEi9jZWxlc3RpYTE3NzI1MmxzeTVlMHFqY3FoeHR3cWs2N3ltenh6aDl4NGpmcHQycBoRCgR1dGlhEgkxNjMxNjg3MTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAklnOhwPd6eQ58bGSy5ylcoKGef0IifHM+jDaFzZqLTLEgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkDdFA+DQtm8k8FxAJSIj9ys6M5iVlLKc40c2YfPLI3jeyPiTMFeOR6+qL3sVmh/F+9cPRNHOmP6MNYpxO7ER2jA", + "CqQBCpYBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnYKL2NlbGVzdGlhMTBmOGc5YWh6M25udDJoOGNleXJ3MzBzdXpwYzJzYzB4dTlmeXk2Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoSCgR1dGlhEgoxMDAwMDAwMDAwEgkxMDE4NDk2OTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAgQKk8wLzFfWWfPTt0UOeoe/Q9scTEftEmhQXcbwVIvBEgQKAgh/EhMKDQoEdXRpYRIFMjE4MjkQ19QGGkBOxpNh5tE9YSby0xPcm89czypsKYN2V76otnyu+M8fK0nndfCUH6Mg20n3enntP1zlAAqy0rqJEnVdeaeZ/yGb", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTBhbjlseG56N3N0NTJzMGd1cXY4bW45MnV1ejV4cDd2dTI4eTZ3Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg3MTYSCTEwMTI2NzA4NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECklIOu8PA2xkF0cse5bMT9PLXwH7S1HCBqMs7O1QXO/8SBAoCCH8SEwoNCgR1dGlhEgUyMTI4NBCyvwYaQEl8gptCPoT34tj0IQPyfR3RSd9FQd59zMEFaeEqdqIdM4F4N0Ob5LmH4udDrDOIKUn6GishQmFXgvswoioKV8M=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWtjd2RrNnZ6bmQ1dWV5ZXlydmZhdjdkYWw2dTZwNWs4dzI5NnMwEi9jZWxlc3RpYTEwM2h4Z3hkeXJ3MjhqZTVranY3dzU5ZmZ5d2ZyMHBqd2tjc3d1dBoRCgR1dGlhEgkxNjMwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAo3UR0FsJw4JbuM6x4rqb5cO2YHKqlkPHwocJwktvGBiEgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkD2CDW3zHGb+OOp7oHyLWPhFelTmIO3M1ihvh6oQwgnxHMugN4cremLSMV5MPUi6QUPIZgEWnQ0eVZ5imdd6rkw", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWR2bHh4YzZwOGNyZHZ1ZjBqNWVrenUyOWxoY3NseGRldGphODBjEi9jZWxlc3RpYTFoZmxwN2dlcGx1dmh2ZmxtZnE5YXEyeDJ5eGVha2ZqbjN4dGxqahoRCgR1dGlhEgkyMjk1MTQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAgu3rurfpjygfOGVzJs2oh+DsQ/xgOBkBsMzDuChz8G8EgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkAxNp1KHLFP0lR8lTN9khnE8Kdo5O3w9woRCN8er0oYviE5I0gmyacggI842O/5xAXtekqX3MIhVHkIbxq/gac3", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTVucHE3eWpwdnpsMDhnZjM4eHI2NjBqNGtqcHdlbDRoeDc3cGFmEi9jZWxlc3RpYTE5a2xlZW1sdDNlMmVrMzBxazJuN2pobmNnanNyemx4cnhhenZ3NBoRCgR1dGlhEgkxNjMxNjQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8y09YN63b6vmnVRLk94cEUzSgSkOlemHi0q4J2kj0n/EgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkDXCQIvTk7cazgcWujssARqJU/v+fCNuDOvDb3Yl574RUT/TH2UrcRgEGlQn4BET6FAcCtCsfUS39dNyd6ZafaQ", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXducW10NjJ2aHl4NnhmZHpmNzRqMHNwN3poNG02bG03eGZnZGtwEi9jZWxlc3RpYTF4dGVxcmp2bWc4eWs3NTVhbnZscmNlczlhNmNtMHVqZHc3MGNqdhoRCgR1dGlhEgkyMjk1MTQ3OTQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAsfXdr9Hs95xxFt9HkxpwoZV+4FR+5s0eqfJJGak+fDSEgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkAC+e6+aVDgfR7JCm5WfQi7xg0y3bXwnhDJpXj/0FXfhxQmwTsVqiii2R+xTy3BT/NLJnXD+4mcoDpcBopVqeQO", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXZoZGF1czg5bWhoZm5sbm00emMzcXJ0bHMwMmdubGM3bnQyOXFmEi9jZWxlc3RpYTFlc21qcnk5Z3ZwNDlweDZ4dWZjNXE0OWpoeWFwMnNwZjQ1cnZtaxoRCgR1dGlhEgkxNTAwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA5NNQfNwUu54vWMpff/wAT605QqoXkUaWq1WkcBiOsDaEgQKAgh/EhMKDQoEdXRpYRIFMjUyMDYQzNgHGkD1JDHY7Ay/Oor5YnBSJPg1CGJ+UQIoqotOQ33ZOPf+BzJrLfX7a1Y6ZUm3EA8oWJzuedmJbFmLQnnbxF032dSy", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXYwaGdsZmFzczRwbW5zdm5kMnVmNGRzNjRoancyN2xhNTN5OXJ1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkzNTY1NTg3MTISCTEwMTU2MjE0NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECZKHLjdLNgCqZz4RdqJSvS96A1kSlldNqmN7+HQbNBDkSBAoCCH8SEwoNCgR1dGlhEgUyMTI4OBDGvwYaQPKMkFCerm/ywVV8GK/gMX7EWcCK4sDOITqh0R5o/fmDKBoNLjVMmLJaK52eldnYo58ks5oZQ97cwEoH8jUDxcw=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWRoOG0zM25xNnphNXkwcmVkNHl5azZ1MzV5YWNtcHh5d2VqcG1qEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg3MTISCTEwMTU3MDc2NxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDof6vJ8dEasPcDmZOMbeA5IlzTzrsk+SoeHEa6sykcYcSBAoCCH8SEwoNCgR1dGlhEgUyMTI4OBDGvwYaQOjObjOks23sbZR6KFXY1+UheBqQftW49uOdn4SjyH2MT8aRc0rxF3mS07IQfBiyzRRetT4f4KFDXg6U3nVzLbY=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTBkancwd3pldmR6ZW4wZWM0d2xlZG1uNmQ2YXh0dmp2cHR2MGY1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTQ5NTg3MzMSCTEwMjA5MzY0NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED5Jv2D+lewpVuPAz6pjYMbCCiWhHQxay1W1cSjX2J6qISBAoCCH8SEwoNCgR1dGlhEgUyMTI2NxDdvgYaQNbAvChxKIORnsDJQ3v7URgByOYdqI+V4gBY4ECDql/zBYpYls/MFVvjVtEeafGU7TtF3sTlkJtRh3yqjdxNfwU=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJndDBmNjcwemhjY3c3ejV4ZHd3MzlucXpzaHRjN3RwcXFlZWV3Ei9jZWxlc3RpYTFhMjA1ZThyeHR6NzY5M2Q3dmdmM3ljbWVnZHZqcWF6NjgzZTk5MxoRCgR1dGlhEgkxNjMxNjg3MzMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAv4+zQE3HsjQ6Y//i9JHQ1sVv84yNeJ7N1zf5XdB1pN/EgQKAgh/EhMKDQoEdXRpYRIFMjEyNjcQ3b4GGkAAhdSLHnqw4Y0AXrfUOZTtzDd38ymu4YAjE1g7tlmqASgzHPt5tonKjqEgtXkDHnnd0LSCHHwiG9IvbkcIC8IP", + "Cr0BCroBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKMAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoOCgR1dGlhEgY0MDAwMDAiL2NlbGVzdGlhMWx3cTR0eXd5dW5tbHcwYzlxN2gydXJ2Mmp1N3M3YWo5aDg1Nmw4Kitvc21vMWx3cTR0eXd5dW5tbHcwYzlxN2gydXJ2Mmp1N3M3YWo5d2trNm5jMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLULF8kKYWPNnioUv41Q9a8hhVRp9cjeGSIV1Mgq5sb1RIECgIIfxgDEhMKDQoEdXRpYRIFMjQ1MTgQ3L0HGkBuJtY1sTqH3i4g7h6B/6daLj+QpKbzP5bBrLEwe7C9ukKvb6u/6TK9kDAtTNIsY+Lb0cn6w3gDn8EE5Tv4S11f", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXBhcjQ0MG5kd2d2ejJ5emp6dmUwZ200MmF4M3p2NmM3ZGowcXJzEi9jZWxlc3RpYTF6NDJ1dXhnY3E0dHZqbThnOWo3amZwY2gzdnFkOXl4M2pjam1nZBoRCgR1dGlhEgkxNjMxNjg3MTISZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA0GETcEkuXBfxYz1R9OiPIK7qFhc6j2y9h/v43ZcSlW4EgQKAgh/EhMKDQoEdXRpYRIFMjEyODgQxr8GGkA86/EkKuTNHxwAmWZvdIb2Zn7Y63gy25VjS8baulC2BkucCZ5y0EuLgDGtjby90mdTrn3RcUOE7nW2VXTPp4Gm", + "CpkBCpYBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnYKL2NlbGVzdGlhMWV4cHpmOTlreDBtNzZud2NmbXRodzJkd3VzbWdsdHVkNmRhcWp6Ei9jZWxlc3RpYTF3c2hsMDNzMzZzbmVtOHRsbDU3MnpqbDdwbnZ4Z3kwc2ZhMnRndxoSCgR1dGlhEgozNjcxNTc4MTUzEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQI6lt067gJ1R7swx7NKIEIhIPySae3QZlztDsF4gYDTMhIECgIIfxITCg0KBHV0aWESBTIxMjg4EMa/BhpAl3TsdUmzuAaj2Ore9ePN/mLC9rUVfcfs/cUCPIaLGyVLuHBUYHrPovjh02aoBf64QBwATUGVnsVSJ7XkSuOGIA==", + "CqIBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTltODM2cDdtdjZueXljbWV0NDljYzYwYzBzYTZsZTlwYWQ0OXd4Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choPCgR1dGlhEgcxMTI3NDI0EgoxOTM0NzI1NjU1EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKjipHFduOgqMSQP8ni+gvy8I2Gb50U7qLIg8V/GJ59kRIECgIIfxgCEhMKDQoEdXRpYRIFMjI1NzAQ0PEGGkAYsqs6CJI17jbrhR82Qxq3WSh9MKEftLVZU9glUDqGchOeLIalIU2sKkDEva54QhmjEdQiGJfdWAdDDqLUe7a5", + "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTF1aGM4bW15ajdwZDA4c2MwanFtcDk3c3ZqMnlwcXVzODdoaDZhehI2Y2VsZXN0aWF2YWxvcGVyMTV1cnEyZHRwOXFjZTRmeWM4NW02dXB3bTl4dWwzMDQ5Z3dkejB4GhAKBHV0aWESCDE0OTM0NDQ4EmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKR90jn9ve7b1q7vxIPqNFAru5au2PhkzwgmwMFoxUTchIECgIIfxITCg0KBHV0aWESBTQ1NTUyEKzzDRpAfbF/W8mKVZZkJEhNKrkU4Nk/xVYOdpxur9oP4AvOZTBkLSSOg2ucV28A9uQ6UPoO+vDuQGVfkiD1hZCJioe6tQ==", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTBsMHlqem5ncnlycXJ6bXY3c21ubjg0Y20zMndncmQzcDB3anQwEi9jZWxlc3RpYTFyZmRobjJ2cDl4dzY1bnZwNXE4MGo1dHRqZWZ6cHVzOGQ0dG5wehoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLqfLc0oXLkZTw9jPcPrvVE4tIqL4cE8FqyVrl+6k2aXhIECgIIfxITCg0KBHV0aWESBTI1Njk3EOPrBxpAjHkPlL05qNqnu4bdjOVNQL4S2O4JllBzbGiBsOURGLZlB0IlzBS+Om9b8R8oDPvNzsO7mr2lxDrcwz88Zwbr3Q==", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTVjbjI2Y2c3eXdmNTdqazk3eGs4aDA0YzUzYTJ1OTRmZng2ZDN4Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choPCgR1dGlhEgcxMDAwMDAwEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPbhqnMAzj7O7rBo/jQRCs67LERjunnkz22kx39QXviAxIECgIIfxgBEhMKDQoEdXRpYRIFMTkyNDUQ4O8FGkDOMe5MENRNcyESwMF2xMuwJ57lmL1UzPXy7evaGUMjRC3eFPReSqpblegUZIFjadvTwqqp+j3nMD2gfsLwCkg+", + "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgc1MDAwMDAwIi9jZWxlc3RpYTFqeWMyZ3g3Mmp0MGgwcHV3Y2s1bjlyM2FnNzRxM3Y2ZWRkdWc0bSorb3NtbzFqeWMyZ3g3Mmp0MGgwcHV3Y2s1bjlyM2FnNzRxM3Y2ZTV1N2dleTIHCAEQsYzlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC5Etb+vG+E2BqhW1dfrgwE5NtdNiZ5iydAEbJg04nf/USBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQDWnkR1ur0GbzU+/KzsQKRmg78aSVGYkw6SqrsZQKXZYGUaPfbkphbGsRQtIdBBvUjCtmxLbBMjQcShkQVLgSHU=", + "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcyMDAwMDAwIi9jZWxlc3RpYTEzdXpjcnpwbmszeWVwY3JybXhqazg3NDBrajV6NHAyemt5cDRhMyorb3NtbzEzdXpjcnpwbmszeWVwY3JybXhqazg3NDBrajV6NHAyejA0cjQzdzIHCAEQsYzlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECqRyd7vVpcuKO53RPljo0PWnGbL5bgc84GNl2Jem3sn4SBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQMK+KN35PU+jWh9yPvJ3gjllY8ooWL0s58fJU2A5Q2AAWE2+EZ/6exxdkskc3gokUQhGT5lzleY+3LsOxkD9Xx8=", + "CqABCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMWwwZDRmanQzaGhrdWNhbXdrZ2NsYTR4eGVqbG1hazgwM3AyajQyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoOCgR1dGlhEgY0NjAwMDASCTEwMjM1Mzk4NxJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECfnHPALloQNVWrPJttES70w1KM76D8bJeEc5+QSIPex0SBAoCCH8YAxITCg0KBHV0aWESBTE5MTgzEKrtBRpA6X965UuD1WUafxcnoDj8PmeKN81ar1HmsIzOP0iNPTwWBtzHRYctxp/JD6No746YZSHaz7GeNUjMsl6ja3FpDA==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTY0OTYwMDAiL2NlbGVzdGlhMW52bXhjeHczbHUyNHp5cXV3cnJ1ZzIwaDZzYWd3c2Q2cDh3dXNsKitvc21vMW52bXhjeHczbHUyNHp5cXV3cnJ1ZzIwaDZzYWd3c2Q2Y2t2dXVxMgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMsLPlFqbpSPiAm6sWWoJl05EXv21L1f03q/+RppRJD4RIECgIIfxITCg0KBHV0aWESBTI3NTkyEOa1CBpACQLxf/HgqkzpARc6tfFxGlefi9dd53ebJ3PTTkZ+c2onreZxIE1+cTqG6kmlu/o4e30LBH+Ey/yrYEub/GgLsw==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgk0ODYwMDAwMDAiL2NlbGVzdGlhMWhqaHR4ZWFlOGZuNnJ1cnpod216NXdjcXJxZmNocDdtcnM1NXpoKitvc21vMWhqaHR4ZWFlOGZuNnJ1cnpod216NXdjcXJxZmNocDdtNnBrNXdnMgcIARCwjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQOLuvJNGdyZyvWRdXTF9x8WqPnMx+cfgZGJq0AQ+H1hLRIECgIIfxITCg0KBHV0aWESBTI3NjAxEJO2CBpA9yQ5Tg177o+ApoSVT5oCO8XrcXITLW3BA96BmDauy1g1zIMuAoR4Z433VFvIWFqni6ShK7af+bVQ6OUz4tkEUQ==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTk0eXB0bW1tYXlyZmMya3hxeGV1NXBnZnl5bTUwbm53ajdwYXlsEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjIxMDAwMDASCTEwMjY2MjgzORJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECwi7N32325LePuyKZf2GZVBAUk71SXzmZbo333sg78tsSBAoCCH8YARITCg0KBHV0aWESBTE5MjQ1EODvBRpA0ZPVDDZ1r+bU/c2P+6227uaxBbVvi63aodIx6JvARJoDS5LVQtPga0x3XE/LH/M05TxO7lxBiwrW3zGgV7UD8A==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTMwMDAwMDAiL2NlbGVzdGlhMXMycnlwdHg4bGE2dGdyOWdxODA4dnpwcnVrNnJqemZ2OWU4NTU0Kitvc21vMXMycnlwdHg4bGE2dGdyOWdxODA4dnpwcnVrNnJqemZ2dWc5NWMyMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNv8+xdHT+nBednvIyRKPusBrgVHpzcu+Oz9rwbxHp6nBIECgIIfxITCg0KBHV0aWESBTI3NjEwEMC2CBpA/FyZWTBVuAaH0f9POPc5ZwWFaR0mWoaXM83HVsYvicpwsoD4u0v5h3pmU0W94LPzC0Az9sUj8PN9XgjrxgvLPA==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTc5ODAwMDAiL2NlbGVzdGlhMW1meTA5cGEydTIwbHd3MjZmMnd1OWxjc3hlZW45dnMwbWNlZHA4Kitvc21vMW1meTA5cGEydTIwbHd3MjZmMnd1OWxjc3hlZW45dnMwemZtZGRjMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKHKyLU9HlD9/212zQeg4YI2bwqndIGiN8bGGmrx2jiyRIECgIIfxITCg0KBHV0aWESBTI3MDEzEJefCBpA4LlL+/Nl0gdR2TXyiAyx2mEQceRVpzA/DzEKoPWP0TZtAgITwsGnamXmdWB80SN7dtpKYm+YajD7NdQyja1mjA==", + "Cr8BCrwBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKOAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoQCgR1dGlhEgg1NzAwMDAwMCIvY2VsZXN0aWExemM0eDQ2OWtweTVqbmo2djB5NjU0OWVmZXBxeWZuYXFkaDV4M3AqK29zbW8xemM0eDQ2OWtweTVqbmo2djB5NjU0OWVmZXBxeWZuYXE1eGt4YTcyBwgBELKM5QUSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAym4Jc1h2MV23NpSidwP1/hwdJiWd2qEZnHKyq38AzO+EgQKAgh/EhMKDQoEdXRpYRIFMjc2MjUQi7cIGkAMtV/G2/4yx6xVzAab7IDbjuzfOACi+mCL7BdzhX+TA2mL0oR1tHEfLUf0cQ1ok3dKrUQO6M20OESGqq1/y2wH", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTQ5ODAwMDAiL2NlbGVzdGlhMXAyODNrc3Yzcmw2a3Bkc3IwODBubTR4ZGRwamE5anFhdjdlYzJhKitvc21vMXAyODNrc3Yzcmw2a3Bkc3IwODBubTR4ZGRwamE5anFhNDBtY3h6MgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLOd068Uvbmb2nVk2HN0ayoeyDPxqEwiosUxzbuDBXJrhIECgIIfxITCg0KBHV0aWESBTI3MDEzEJefCBpAxxPGA7rRwk+OgDhP5bZg/9/K0V9QJo2T8XBXFqIpqEkaTOlhKkK/YIZtWUicS7kb6VR4PejmU8ug/Nw52zFLxQ==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgk0ODcwMDAwMDAiL2NlbGVzdGlhMXdtbGxqc2F6a2Vrenp6dHNtajdyN2VwM256emRwNnYwZjk5cjQyKitvc21vMXdtbGxqc2F6a2Vrenp6dHNtajdyN2VwM256emRwNnYwczU4cmU0MgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJyikxXPysCXujxI9vmL2mQMkkoRbYrNXCKPhWINeDfBBIECgIIfxITCg0KBHV0aWESBTI3NjAxEJO2CBpA+rLxb8pbN8ZIufMAffd0tfVkDV9IB/rdLt0e9x4P23Ux3elR/sZQDZqkEaYeYNCecaevj/igPdNbdt6pnW6p4g==", + "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcxMDAwMDAwIi9jZWxlc3RpYTF6MmdnN3ZteTd5Y3hmN2E4ZzBzN2hnemdsemx6bGRnY3ZrZjhsOCorb3NtbzF6MmdnN3ZteTd5Y3hmN2E4ZzBzN2hnemdsemx6bGRnYzQ4dDhuYzIHCAEQsozlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDSElGZBkru0CydktVWPHIAwXNNQrB2nSXF0gbstXQTRESBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQC4xaHSBw+kiG+sj6c7alP5DCVyJRqKRsPDt5XooyI+bbgK0MiXqtDbl4mixTJUPsqAjRTIP/NvbFVc9gvcOJUo=", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTYwMDAwMDAiL2NlbGVzdGlhMW5nN251MHlxZzR2bDc0N2toaGV6NGozODNkOGU5ZWhoNWxyMHY0Kitvc21vMW5nN251MHlxZzR2bDc0N2toaGV6NGozODNkOGU5ZWhoZHdwMHEyMgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIJEL8Twu0Kvx+p+GjSqak00PcBxOMvvVdgRfPcUtNRxhIECgIIfxITCg0KBHV0aWESBTI3NjAxEJO2CBpAQn92pafS4ZYw1x5yhbWzeEPbloLJqITy5iY2eituz613FiQf2Zkj6w29lJWvCMP04RClnnE+AS5H47hXOkDswg==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTAwMDAwMDAiL2NlbGVzdGlhMWo5N3Y1MjNlcGhmaHM5NGxrZnE0ajVsN2UwNGh5d3E4NWhzeXE1Kitvc21vMWo5N3Y1MjNlcGhmaHM5NGxrZnE0ajVsN2UwNGh5d3E4ZHhqeXZ0MgcIARCyjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQMe7SFzeKGI0YJAHw54yvU7yLYWusXUsq3jVTvelTi4QBIECgIIfxITCg0KBHV0aWESBTI3NjEwEMC2CBpAsDhZPKYuJYvn9s0PuKavVowtU6c9j/IBtUD64p/Tnh40r6daXWFRTSUfr+4EzjQHy1VTlUPBa7OSm+6CMvRjMA==", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMWhxcGozZWtjY243cWQ5eDBjcGgwZTd1Z3g1MHUwbW16dnZqZThhEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggyMDAwMDAwMBIJMTAyNDUxMDI3EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQPGnAgEC7/zoaZNPMU2hXoalCLAMTR0XNVa583KPu7XXxIECgIIfxgCEhMKDQoEdXRpYRIFMTkyNDUQ4O8FGkCODMfyXfikVArgMnlLqE7CLpgzrjoORGTS85a9SI/JqH9CsWydvUQxEEiGR06QCzOLbxMeYdyiZaMC7s6JY9r7", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXpyZGwydmM3eTk4aGYwMHBzZWN1dTg2YWV3dHdra2ZjMHJuY2tqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxMDAwMDASCTEwMDEyODAyMRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDeC474+u1TA2b8MBSLPMM5mFqNIKimqUYkcnGDftDKTQSBAoCCH8SEwoNCgR1dGlhEgUzMzU1MBDEngoaQBU3vJ6+6YZzYJydQZVwb0Z7lRr7qFqfXmt0wkcANMGfN0y9WdQjRhKxKkyslL+cNwEPFIgurbet8JQhPgK+mT4=", + "Cr4BCrsBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKNAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoPCgR1dGlhEgcxMDAwMDAwIi9jZWxlc3RpYTF6bGszNHNhcnU4dzZ3NjY3cjd1MG52dGtma3IyZzRyd2VtajNlNCorb3NtbzF6bGszNHNhcnU4dzZ3NjY3cjd1MG52dGtma3IyZzRyd3EyczM0MjIHCAEQs4zlBRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDLctNrn6HD1FintXoU3DahV9YzeYG836Pl5CiYR30ydYSBAoCCH8SEwoNCgR1dGlhEgUyNzYyMhD8tggaQLq6omcqEQYuFqzQpPEdcrgM2el+JAcEtzk54Gwf5dF2WghAjQTidUB88SOs5d8WfZuFhOsA+e2bm0pqn0rDxgw=", + "CqYBCqMBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ8Ci9jZWxlc3RpYTFyZ2ZzZ2prZDRzNm1zc3o0dTlyZmpzbHk0Y2Y2dnk0MjNkdDdhZxI2Y2VsZXN0aWF2YWxvcGVyMXI1eHQ3dHdxbWgzOWt5NzJmNHR4eGpyaGx0MnowcXd3bWRhbDhjGhEKBHV0aWESCTEyNTAwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDacHoHJdaAUo+Jhu3At1P7k2FLbehoc7dvqCOg/x+eqcSBAoCCH8YARITCg0KBHV0aWESBTQxNjAwEP3YDBpAnGPeuHJE0wdKZmlh7tC/sk+vS/BAm7vUfzUlUGNTbIRChCWeGHryWKW7X8NTJzU9w2YC05t+bzQxYG67HLwyow==", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWVyZ3dodGdjemNzcTB5MHdoM3UwcHM4dGF4NHJmaDZ5bWV3ZnFrEi9jZWxlc3RpYTFhczJqaDA0cXllOHR5dWpkcDVmdGtsazZyMjV4dWMzbm5zdnphZhoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQND2GR99cf9jUZo9oQ18TR1/qQWrVqAzOjHU1O/B+ue0hIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAwoIdp64K8SM8+ILjE9IhbU41goETWQJ8c0p0DoDsyCdp7qoedM4KIsOLrP+4Q0vJLN3XISOiwBED0GZsDZBrwQ==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXNyNjc2eWt0YXh2ZmpjcWMzbTM3MjRsOHAycXc0dTZjdnY1ZXEzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMTgxODIyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECU0gTpRo9yS9A7zd+V2t1ebwhqx85cf3UF2/kikeSsEISBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQKKIl4YFYpHGXs/D0HMDNK1V6CdomEij/KYy+t/wgRKzMAWAwjYmKDb2fEIo3kEaePLJBcD57QexUdw6byFA8XI=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWx0eWE0bTdxZTg0eXBsZXNmeDVjZXVheDIwdHFuMHZ5eDdlbTR6Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjYwMjYSCTEwMjIyMzE5OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECaD+55Gz2Cn1WZb3O6mB2NH178EFKvW5UJoZwzeNEMQgSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQJK5Ix4anRdcxZu+bUYmJb9t6sYRa45U+IC4aCR2H2HQHl8OZikM8wxMlSz9Nad0MbHx4pYGAXaXlX0UoersC4o=", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWQ3aDQ1Y2FsbXlocHl0YWY1c2ZjcnhldXV1ZnM5Y3VwemM5eW5xEi9jZWxlc3RpYTFnOGZoZnE0a3AyMHdqcHM2ZzY1bGpmcXFtNTV1dDQ2bHZzcTNuYxoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLHXkT62orf0FobJifmlnT56sNtcrsgONwfDYj2E01FUxIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAVNM9qqjfJiPKKiyLd6mmNbeA4RBXuPmvt6QslFJ9q+lTZ+/H9F94NmbdWUhmbsyJT8KRLlZCq/EA5f10BfrA0Q==", + "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", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTVkOTRlMjc0ZWdxZnNxbGg4bjhjZ254MDNya2xoM2Q0OW10N2thEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNDAwMDASCTEwMjQwOTQyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECuGRudDAUbvwOMUtCxASN5wcAm/UKyASpGCfREuXpSO0SBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQNvmW0IDwC2dHYWW7fWi11UBGsxtJbSaHlihZKiaZNDYS4zGS14DIWTWHOrYcPQ005J6Vv7kUciui73bTaeVeL4=", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxMDAwMDAwMDAiL2NlbGVzdGlhMTJqejlhNjlzcjQ2Mzl1YTBsdHEwNXhzZTVrNzJjaDljczM5aDN5Kitvc21vMTJqejlhNjlzcjQ2Mzl1YTBsdHEwNXhzZTVrNzJjaDljZnE4aGFtMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQN8+g7RMAwm81KYlcTQSBFVuiVDyGC735M2vmtOUk+knxIECgIIfxgEEhMKDQoEdXRpYRIFMjQ1NDIQ1b4HGkC0DNoQVg7v0i1PYwjOsS6Kd9B82XYwOJlMLiGILXxXwVCNNv1TLHF6bp6qmPhEGQY3tQ2ae0dePnXdpmmzwuTh", + "CpcBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMTRxOXJoZDJwd3czc3B3azhuazlxNGNqNndwNGYwZjNlcXk4c3EwEi9jZWxlc3RpYTF1bXYzNzc3cHAwNDU0MjlzeHRkZWRqangwa3o1c3g2cnhlejJnaxoQCgR1dGlhEggxMTAwMDAwMBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECPIi6gOfSCTfwmRsJC+e9RZhTKFZAIq48y066Hg5L/7MSBAoCCH8SEwoNCgR1dGlhEgUyNTcxOBDN7AcaQKoj0Rtd0k1H3DpP/CtXi71NHtviy8/HEIAUGymNKDwaImGmskZhCfvArxagMNzvhaPQlULLNSl2eBSUvXcPoZY=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXMyNmRmajN2Y2VqNjNhczRrY254dzBncHFkMzUyY3o3OWV1bHF4Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxMzYwMjYSCTEwMDk3MTA5NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECU01DWY3yS8eB0fD9mPe+IXb44yJGMNYzJnA7bHVn6FgSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQEkNOZOoDLXDw6BSt4mIGrs9UTkhatzfxX2AmDIKpcYVJeBOSsHsee70TBSe3KSuFHjGGFyUtEz/9sDFLm+73jQ=", + "CqYBCqMBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ8Ci9jZWxlc3RpYTFma3J3bHN5ejJxODl6a3RoeGd5eTNqNGV3bjQ1czM4dmtza3d5YxI2Y2VsZXN0aWF2YWxvcGVyMTV1cnEyZHRwOXFjZTRmeWM4NW02dXB3bTl4dWwzMDQ5Z3dkejB4GhEKBHV0aWESCTEwMDAwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECYvcxDu4CmrJ76EeXYJv235y5pdhdRdRFkj8Dj1/kjp0SBAoCCH8YAhITCg0KBHV0aWESBTQyMDgxEOPrDBpAgKTag5sJ5IsIltVeJhFnQYdqWwkjOMX4LUJmQyMd4T5lMPDRqxtW6iFlU7QfFLCp+d6nvW8jd15w+MM5bxeNog==", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMThjbTN0NjdlNjV1cWthdDdybG1oZ2hlaGo0M252cXpxcThkZG0wEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyOTQwMDAwMDASCjE4ODQ1MTA0NzkSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA24LMD4CO2G1tDMpqe89d+8qdAOaAq8jP7qIpXdw3r8jEgQKAgh/EhMKDQoEdXRpYRIFMjEzMDUQnMAGGkCIGIIK7yBJPKnnlFCbVHP2Q3g1+XFVhp1Zq/V3HmkXPgxJ74JNS9Bfgr6/nQ927l5PY3jGvAL5bJbp0uOw1ycN", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTRwOTd1NHFwc3k5c2N1emFxdnZkYTI4djlxZjlwN3N3ZjVhNXN5Ei9jZWxlc3RpYTE3ZHd3a3Jlbmw3ejVrMGhtcThwcTcwa3FoYXZmOGFoanNjOGtoZBoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNZCGOeNjlQT3jp9fAjnp/KFCRo2AcWLo0tAV6/GDSw1xIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAvkOpzAVwg0ddJZdH0QQiIjtatxzOTV5slrCkVBLRkg16pZtaeQD9A7HZO235AWwk4ekX2kFEvwPax0OnW6eUhA==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWw5N2htZHU3OTR2OXR3NjRkM3FsaDBzcXc0a3VleTBnbXVrcW4wEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NDAwMDASCTEwMjQzMDU1MRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEC7fJSxCAYH7o5X6z22zB9Q/D7igV/3sLxYYTilXzUbSMSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQGYy49YNXMt1IsXkA3bCxf+7q/MiM5JvYLE996AbRE8ucOno34MYi9hLC6ariVUexQcrhCeIyJHWlVYy45dBZUA=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTAzeTdyNzJxand6NnduZjlhenRlZzd3MGw5M25jYXdyYXd0dGZlEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTAwMDAwMDASCTEwMjA1OTAzMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDTFMAsMZxQnBD/q7QjT+j3ltg9aBqX1lyEi6ASTojzmYSBAoCCH8YAhITCg0KBHV0aWESBTIwNDg3EKKgBhpAO1pSyNOFOakEpOMHSVs0odAYkNjzlMF4x5Ah+w6T9kI1H05Kj9w+oJCxCv1Z60HXElJL1HRGYmJo4YJMJgOsGw==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTA4M21hODJtbjlkdzhwaGo3OHFzaHUybG1lMnN2cnRjZ3lyNmVyEi9jZWxlc3RpYTF2ZHhweTN3MnowOWEwNTY1NGZkeTc5ZzM1bXk3N2ZlcTVkbGtqcBoRCgR1dGlhEgkyMjk1MTg3MzQSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAmYI1TIMvf+CZFW3OsaLWc2zM4M57tedebTz8G6bJhD5EgQKAgh/EhMKDQoEdXRpYRIFMjEyNjYQ2b4GGkCsxRie3IAoLL3JSwjLgJvCfYatngNBg8Q6HDOR2T6+wxPgSfaDkJryy0FmRls5Vh9urK9/ocYfXVX4Cxg35cPS", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWozeHJoa210NWFybnBtNWVkbWZrNDcyN2xqOTNxejl4OWp6aHhxEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMjc1NDA0NRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDu4Lc8AQNNHjPSFn5dZJcpJZ9xKQJXrYFVYrjoS3iC3YSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQEXz7ogZnR6gG5mo9yKKhDCp3xl5vEjwn0J3l13teUmCW3eA+//3NCoo2yZyJqEkEVBkMESQTDdPNooHxFd1Eyk=", + "CqABCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMTl3eHNnYTlzdHVjZTgyd3UzcGEwdTk5Y3VqbG5oa2pybXc5cDd3Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoOCgR1dGlhEgYxMjAwMDASCTEwMjQzNDM5MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECWvmM1ACDUWHiupLC+oWe0jykrdoxY1nzdZfKxC1w9S0SBAoCCH8SEwoNCgR1dGlhEgUyMTgxMxCI1AYaQO7MFSkcKQsacFCdpyRDU6prf3Z2XD2X4vs564n4sl5qceYBEzwznpkV7pS4acp8Wfqg6psj7H2q61FbxCpDCjA=", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWttZGRlazVjNzc0bm52N3dyM2hlZjBxNWtwNWZlcjM4ZHVtYzY2Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyMjk1MTg2OTUSCjE4ODYyNzUyMzcSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohArXDjkMankX84+Bria2U/T3YTucgMDS7tjLtfiqUEEe1EgQKAgh/EhMKDQoEdXRpYRIFMjEzMDUQnMAGGkAnL6JqWfXOLy+CY6/pSsidU2/5AnTOanuCJgF8D7D3zxQQ457hAR8rmh6RHDXbstEc8Uo+xVaNUTPBLwkyLaXj", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW01ZXl5bXEwODJmcDJxdWdxNno5a2tlNXhhZ3c3NTJuOTZta3l0Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxMjAwMDASCTEwMDE4NzA5MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDPCOmhrn5gkWR9LSIRExcol3MFGY3JkLXMsvhdTbepgwSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQBguRfSGZ432tLNhH8ey//Gatkc5DQmRrRWabY5YCACrduE7imh6d9IeTJQuBr8vmTGb9F0efpHVEwqc/IG+OJA=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJraGZseDh6NWx2dXl5Y3NjdDRmeTA4ZDA5NnN3enpsODdmOTdqEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjk1MTQ4MjQSCTEwMjYyMTM2MRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECGbgtKiWR1spTY14YbgtXmnTGvUi0OLeHB4u8ZEPME4MSBAoCCH8SEwoNCgR1dGlhEgUyNTE3NhC31wcaQNEFktParx4u3xW2vNnGy2VjeKH418BDm4FerCEjhxFLB8FRqMWnpoB2gJ/EcXOhj0rNmzRCwkZx6AO+1kuz06w=", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMWc0c3RoanZoanp4dHVka3d0dTBscnd0eDQ1eHlyNnd5a3BhazR0Ei9jZWxlc3RpYTFqY3N4dDVkdGRwbmwyZG1qMmtmNHhhemNxcGE4eTRoN3J2OWs3YxoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJkdjU9JlnSRa/RBGMSYrqpRZv4nTxaCYwxUpKPN8hdPxIECgIIfxITCg0KBHV0aWESBTI1NzE4EM3sBxpAt1FzLk4SyXFUMaOnXgm6GmFFl4xhnOp3L23ms0lsykQLm0G8xnHndO1LoEEOLdJfYB737bdpGmnyiJIubMaFwg==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWczdnMzbmVsdWYyaGhmN3d0dmR0Y3p2emw4OGVndXZtOHJscW02Ei9jZWxlc3RpYTEzcTQ5ajdsZXpwbnBxZzJ5Y3d1bWhmN2N1ampkYTkwbW50OHplYxoRCgR1dGlhEgkxNjMxNjYwMjYSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8x5yVvLLkaET0ZneSDRjOqru1rt44zsp2Q36ghSDijbEgQKAgh/EhMKDQoEdXRpYRIFMjM5NzQQvagHGkBZxknIGpIibGspyH+5xEUpEYd+Y4kVahZ+Mhm5zrM2A39SWNG0lPCus7vYh+4DZgNLCKxMREXE6eQBqs+qf5OS", + "CpUBCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMXZteTR6MnBhamg3aGU0Mmt5bHVyZ253ZW54bGVkdTJzd2ZlNW4wEi9jZWxlc3RpYTFkaGM5M3JmZTRjamF0azgycWMwcXA4d2s4NW1hbTQwNDB1NndndxoOCgR1dGlhEgYxOTgyMDkSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAt6smo1zVX4t8Mob2jYT+aXxOPT19FIfuUs/uf2/jF2DEgQKAgh/GAMSEwoNCgR1dGlhEgUyMjU1MBDt8AYaQOS/UejiCj2EqwH7AXjvUK94XTdtSFQ5+unxsylU9XW1JOI+jSYjh3c0KtElv8UxWcP49zQTko6D8L0+HnDYNq0=", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWoyeXVzcHJ3bmt6bXMzZTJzdGtjcnF5ZDB4dzBuYXJndzN4bnI1Ei9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkyMjgwMDAwMDASCjE5MzQ4MDg1MjESZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA+hI2DXROEpTV8B23YMncTeuMxXyIC6u+okHaxT5T81VEgQKAgh/EhMKDQoEdXRpYRIFMjM5NzQQvagHGkBPPEquUnU9cgSSBcxfBA2lH402V5o5ignt2SkUyKigyl9XSYRbB/0LPwO8SW6Y6gRB/q+f7rZkgChKkhtF39nQ", + "CqMBCqABCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ5Ci9jZWxlc3RpYTFxY2NoN3JncmR3MDhlMzRwZjhyNGgwdDl5emo2dXF6ODA2dW40dRI2Y2VsZXN0aWF2YWxvcGVyMXBhdmFjOXlybGd3eXc2djl5eDg0c3R0Yzk2bjllZTl6cmphMnU3Gg4KBHV0aWESBjEwMDAwMBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECn8eQqQ0lTAKURpIwLgiyROB62rpL8f6p4QYSQEpku2MSBAoCCH8YARITCg0KBHV0aWESBTM4OTI4EM/wCxpAIRYgSGdKy7fCF2ZN2bu6Sk6KCRITm3xPKnyp4MxnO+UxAkaJ06bIvUxHj83sAuy68m8zQhsETvr7fE0RA7r0Ug==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWwwdW44ZXI3YXhjZnZtenQ1cXhnbHQ3OXM0NWF5NWF4a3MzenVlEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMjYzMDg1ORJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDWvemKTmZveygpI0IqfjzfRcuxfc7fp+bWctfdTOa/akSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQJxuqLq+VqEhwLVT9hwxcyfSveObXnLrstHS+jiEO5aMV53SEL/ymJaTeOv19L7iNFjW7ZRUtzwcPeW0NaPrUs0=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXVjNXJ4OWV5aDJkdWVhMGhqeHh4a2c3Nm1leTcycTR4bW16OXgzEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NTYwMjYSCTEwMjcxOTU2MBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED0MBnI3n7ZZBKu6ldwXLuJAdXRHJpJDc5VQvXKEy03xQSBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQFK/FWtbR3xt1emQjh9zOowBAX0Z0VTbKPX2BLSSd71EBlpV+KT/mQtGt4j7TQCj4vnAmQrposOndDX1jrrfOV0=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWp6cGZoMnNweWR0c3FubThrejNuM2Y1ajBucWt0dm1mNmV1ajMwEi9jZWxlc3RpYTF6ZTBqOWRhZDQ5ZWQ1a2FxMzU3d3VqbGpmNmczOTB1Y25rZTc3NBoRCgR1dGlhEgkyOTQ5NTg3MTMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA8Ij9ejRk6EEsoQSeqqGvXF5ozwIhE034XZno0nYmXYCEgQKAgh/EhMKDQoEdXRpYRIFMjEyODcQwr8GGkB29Ubfk97xL+fKi1MaOcHO0y3iveCcfQnyA3Eg3hAzHG2wS6emhpewSsnRQ41TEQE3ljP8J8Z6h6EgL8qhEgkd", + "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTFsMnVnOXhzOHBwc2dwZzRlOTdocnpjZHBsdGZoNXk5NmdrNzZ0bBI2Y2VsZXN0aWF2YWxvcGVyMXpxanBmeHR2M3lwNmtkbGdyYTRoYzl6ZWh4Z3ZwYXc4Mmh4cjV3GhAKBHV0aWESCDE1MTAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQK4RRYhsQzBPiMSsY+zp/zv3jb0PbYg/UpD6xUs9KB0dhIECgIIfxITCg0KBHV0aWESBTQ0ODAyEIjWDRpAbtG1aGWruGZBCRKgvxkuwpZFDZBXdBPH+n2HdwVJxFk/LX0nYS2VDq7oAplhMlqFlyVbST51N6je+GR+d37zcw==", + "CpUBCpIBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnIKL2NlbGVzdGlhMTgyeTdseWx3djQyNjB3eDVscHlmamF3dXh2NnR3ZWFoOXQ0eXkzEi9jZWxlc3RpYTFxNXZkYThtcm5lM3c3NDc5OWxwcHRqcHNtbG5xZm1uNWR6NTY3cBoOCgR1dGlhEgYxMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAwZQkP/z9wR4LdQnOBl3+ps5/j9V5UaTmZ6sTe4SC/7cEgQKAgh/EhMKDQoEdXRpYRIFMjU2OTkQ7usHGkA5/yt6jaqgOua2WQxyeWlQmaSKL6TalR1cS+YQLdo9q10v3Z96qXx4hp5tE4quiENhxaPHZvnovfpfgmjmFclE", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWVxM200MGFrYW5rODkwc3MycDQ1ZGFxODhlZHdrbnh4dGZlNHN1Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjg2OTUSCTEwMDE1MzYyMxJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDsq+OcgWYhYgTJtFOz0ERY2LxTwq1IUW/USYOn28tgBcSBAoCCH8SEwoNCgR1dGlhEgUyMTMwNRCcwAYaQBwg4vkYmufVk1JYQ3u5jpzqL7kjKil8s9N2DuSStk3hE1HFZNEQl2K5JhefQ2PgSsOImDVdvUp0WIG9+0xFBJE=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWZ6bmp3Zmc4eDRkdGpqaHR3bDlseHR3cW45ZHVhbjJzYXRjbTZyEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNjYwMjYSCTEwMjc1NTE2NhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECM4MXzyIYyxzzsU2BpPLvSi6gKdueyT2YM16r2z6IqUESBAoCCH8SEwoNCgR1dGlhEgUyMzk3NBC9qAcaQJzuzgxYwh+SB4njOA4e8g96pfTmWngRWrlUWgSe+DgBTLahIOHNpnlOTWG5dDyzIFD9nWyEh5Nr2fZiCq8FfqM=", + "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", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWxwbWFjOGszZ2ZyaGg2ZHdjam5sNW42dzAzdzhjcGQyeGNmd2tsEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTM5Mzk0NDESCTEwMjY4NTY2OBJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECfcPgodL2eOQJekbdDNjYRRQ0A2xD6ikhIIxdCOKx9NQSBAoCCH8YARITCg0KBHV0aWESBTE4NzE3EJHbBRpA9pzMYW8MLWfusZwufIeNyEDVk6NCnY0zFiItaxz7r9FjMgQphn0r59qF4Ju4VLpElOnvAEMynWg+nAEc42sEng==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWw1eTJuanAwYzYzdXBndWh0NW50ODg0bXMzYXR2eDduZXdkcTVwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjIxMzY0NDkSCTEwMTc3MzIwMRJnClAKRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECZmuBO3OrEamXo3VzKG6jJkgUd53clpVN++kE+EUTr5wSBAoCCH8YARITCg0KBHV0aWESBTE4NzE3EJHbBRpAg646Hxa6eXdvY+9Zj4bo0HI8yzC7WYOYJYTnEflvx/c/6vl1DO5HUNldbL/7Q+FIY77dZraGFrhFcfQWJMvEWg==", + "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTFtcHFudjZtcHpreTNxM3FmeHVuYWg3ZGFmcDUzOWNtcXFxMDZsbRI2Y2VsZXN0aWF2YWxvcGVyMXI1eHQ3dHdxbWgzOWt5NzJmNHR4eGpyaGx0MnowcXd3bWRhbDhjGhAKBHV0aWESCDEwMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQK61pTxp4ZLK1tQpJKq7f1EHyEB9+Oli92wlzAPC9ehJxIECgIIfxITCg0KBHV0aWESBTQ1MDY2ELHgDRpAdvzgo9mTnjO/lk69Wj/P71sNPt6M6V4+/JO901A0hD8/l/2ICdbqEyTuSt9qze4zT3Bk6eb8fyFeFvaK98SWzQ==", + "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", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTJ0a3AwZGU2endxOHA0cnZ2cWFrbndleHh0eDlqeHZocnF1Z2RrEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyOTM5NTg3MDcSCTEwMjc1OTg0MBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDZKUxZ7wH1NlcJxu/UdTncXfhDQnUCm7QHzY2pPMXh/cSBAoCCH8SEwoNCgR1dGlhEgUxMDY0NxDdvwYaQIvcaFdxTIABSS6rNnr10GJ0rgg4UeoGHV7Sr+LC5A9WQanJhZIGAIiw76feo0lGsYKkCnNJuqBDIMF4JlMHZVM=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW5tbGY2OTJqd2RhNmszMHljbWd3NWM5bHk0Y3VkeHB3bWp0OXVlEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjMxNzkzNTESCTEwMjM5NDYyOBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDp5uzXCp9CDJIIv6DB/VyyXOCPbBCL4mKU28b32LK+WUSBAoCCH8SEwoNCgR1dGlhEgUxMDY0ORDxvwYaQJjUIPMYCYw5caOs+awbQekbLuK7q+kE0qzbZ9sQWXNmRDMzcGyCm0p2kNnTH8MGB0/XWzlV3ZY1NT/noDYnWNo=", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkzNTUwMDAwMDAiL2NlbGVzdGlhMXlqaGNyOHJ0c3Jzcmt5Zzd6ZGtnaHBtZzVwcmtnYWVmcnptcDh4Kitvc21vMXlqaGNyOHJ0c3Jzcmt5Zzd6ZGtnaHBtZzVwcmtnYWVmNm5lcHRlMgcIARCwjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQNtDe0c8O0ly5bOKgEw5gLRKAIIyJ+F0jkU48Yw0CPqJBIECgIIfxgBEhMKDQoEdXRpYRIFMTIyNzAQw74HGkDAo2RqlmHCqFqhsQtM7WpyOaxQauPTI0zyZxs9HJS0sWbmJyXSC5QcG18QUCoQJMhZ2HqXxiHXgmdU3oMmAuiE", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMXkwYXZ5OXZucmdmbG15ZHpwZTN5MG5kbDhmejhkanpsZXhxZndwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEgg0ODk2OTI1ORIJMTAxMzkyNDg0EmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLZ98byr2AQImfNn+cLJwRi4uoWWbZKtF9HKDi27PFeiRIECgIIfxgEEhMKDQoEdXRpYRIFMTAyNDUQqqAGGkDyeuW+uZqE0nT6/vAHXDJMlrzZx3UcYrKpDiV3tRXAIXnaOZoTeCCsa90/XiNVBVX7ZJFLfLvpDqkao4zIItFY", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNzgwMDAwMDAiL2NlbGVzdGlhMTVwZHljeWE1Zmd4Zm15bWZkcmZkbnNkODc0c2g4dzAwZzBwc3h5Kitvc21vMTVwZHljeWE1Zmd4Zm15bWZkcmZkbnNkODc0c2g4dzAwMzdyczJtMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQK0vax8/2ROV5uD91x1PLk5RsIdysjlzAgcsd5hxqdvERIECgIIfxgDEhMKDQoEdXRpYRIFMTIyNzkQnb8HGkB7hyELegTnEpzJ6yVQq5xADeS8hOB1YxegAkHlWPhagHyH/pO5+W1uTZMO0xF8B9Qe3J/DY1rpIZ7/ESjjU6sh", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXg2bjI4dHBzYWd6Mm5hNmxnNmY1OGtwa3JzeXRnY2xmNjRuZnRjEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyMjk0MDAwMDASCTEwMjUyNTk3MRJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiEDduD95P+9xFU1YJiPULfsC+YzqTZeWHG+d2Y7vV8tF3ISBAoCCAESEwoNCgR1dGlhEgUxMjU4OBCv1wcaQJuRPd9360ZgfJypf/N8JOTH9/txgc0FkT3C/QKUB+4BL5ZcWw2SNeLmW64Kz/q/BqjikP0caP2v1guBreshrvI=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXNnN2pkcW1obGZnczl2NGVsOWVoNDl1ZDNzcmo0bmRhdjNlOGhjEi9jZWxlc3RpYTF4bjJ4eDM4c3l5cTJjdWZtd3FmeHI2cnYwc202enBjaHRyNjJ6dRoRCgR1dGlhEgkxNjIwMDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA6RIW5AgxitOzAcTILQwVX3Gun2Tapi2v6Veqx9PMPEJEgQKAggBEhMKDQoEdXRpYRIFMTQ4MzgQk4cJGkAsVcwklqNUw9ahe2nBl+LPCYPy40IGmfNDxrDyaHwL7xfmPFLx02wOgOzRrmpsnkEGKuPt6LgIIP58Qw0/XVFG", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyOTQ5ODAwMDAiL2NlbGVzdGlhMTdocDNqOTdzaHBhMGF4dWU1MnFjaGg3bHozeWV5azVnaDU5bW40Kitvc21vMTdocDNqOTdzaHBhMGF4dWU1MnFjaGg3bHozeWV5azVndzk4bWwyMgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJZ6EQ+Bw3vv90kXbXB3ZbWKL5ZZqgLsWvXDgZwBp+o3xIECgIIfxITCg0KBHV0aWESBTEzNTA3EJefCBpA79MxhIgwhMgnCi517OqdL8YL8qeSS5r/f6UY8JF0JAB9T2ffzMTtkNKHCTHiZwgZNXwLKlPWebJSI/2A30kVAQ==", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW5jZHV4MGVyNjlnNm1hZXA2c2RrNndmaGEweXZ3cXV2YzNlc2h3Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkyNTc5NjkzNDcSCTEwMjc2MzI5MhJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiED42HoHg4+KsSUbwjLFgG7V5SoBJ8MoR36kH7dX6ayHmoSBAoCCH8SEwoNCgR1dGlhEgUxMDY1MxCcwAYaQKzpYC9RoYpkZ5mRX4CGDGkGqjDhnhW9gEFqyt4dbYOoTBzTu/o5NzIstj+nHcK89yUj74z00lYlcfp6xFUyneE=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXl1azNkaHNtOXVrY3c0MjMyOHg5NGMzeTBmZmg0cWczZHV5Y21kEi9jZWxlc3RpYTF0ZmF2aGVzY3A2Nzk0NG44ajNhNjI5cnB1NjZoemV6ZjVsanNtORoRCgR1dGlhEgkyOTAwMDAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA/zxFzltVbNFLK1fQ2PJWGVcjpKHWOP3ARkcrZ5NlzzkEgQKAggBGAESEwoNCgR1dGlhEgUxMTA2ORDd4AYaQLYCx1XzEUSmw2mNB+4KL8G4g3AzQMJsFS6RJue7/eXtaUTbrtCtdTTLiPxz2mMo0xtWQZsl16IfLCRWHtEqQsY=", + "CqMBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMW02eHAwZ2RkajB5bnFnNWtrYXV5Y2ZhY3RuNHYwdHB1OGZ5ZXhwEi9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoRCgR1dGlhEgkxNjAwMDAwMDASCTEwMjAxMjM1OBJlCk4KRgofL2Nvc21vcy5jcnlwdG8uc2VjcDI1NmsxLlB1YktleRIjCiECzEm3tA43yRuBZhGyd9T42S//2VNEXD+lsQXkwdfnYBoSBAoCCAESEwoNCgR1dGlhEgUxMjU5MhDc1wcaQIAxK8Q+Ia365RuvFuvwRk06cIGRcC3UOqg2e2t6hfQFAGu/S4wvuGyrbMXezCF4/RtAQq6BpDtNuP5US8jTgXk=", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWdnbm1jYWZmOHNhODVmaHUyZ2Ezem11dTBlNjUwZ3pheGN3aDAwEi9jZWxlc3RpYTFjNnZsN2VnbXdnN3ZndDM3YXZlNThzdzY4Nng1a3c4bGF0c2dxaxoRCgR1dGlhEgkxNjMwMDQ4MDMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAx8GxxOWZ5JeoeB2G0VFqhnhLs46R0rRHXwcGyG9h/lGEgQKAgh/EhMKDQoEdXRpYRIFMTI1OTkQodgHGkACX04hswLeYFBPynwkI17RziddBPgAxvzpzB45CedB/HgGNTIsR0XHsEmaStx7TT6wmZV/Mneg75LwJTqCpsNY", + "CqQBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTBsajd2OWozeTBjZjQ2a2oyZGo2dzZnNWxoMHhseWZldWdnbGthEi9jZWxlc3RpYTFjeWxnanlkNzBtaGVnM2ozZTJuN3Q3NThyMDdyYXJ3eXRhZ2x0choRCgR1dGlhEgkxNjMxMzcyODcSCjE5MzQ3MTU2MjMSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAxYvKxOdeUz4a+oc7J2BEbAn/mt3knkylb4EH0bc9Mh2EgQKAggBEhMKDQoEdXRpYRIFMTI1NjYQ19UHGkDF9m5As/1aV98iIelipASZzm1PvTRnqfgoT7HpcCrcg1Cb3gFtIdWvJDKfp76TNY5YEuOfbq3G0VSIsQ3ET7uf", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyNTc4Njg5ODkiL2NlbGVzdGlhMTlhZTI5YTVuYTI4Y3llZTI1NDhjYXd4MnUydnFlMDRldGhncXZ3Kitvc21vMTlhZTI5YTVuYTI4Y3llZTI1NDhjYXd4MnUydnFlMDRlangycXEzMgcIARCyjOUFEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIh2zJlzW2gjTziGHZBkV79OczrYnMwbD/7ok0us7yvhhIECgIIfxgBEhMKDQoEdXRpYRIFMTIyNjUQlr4HGkBSu0ZiESLd1iq0kknIwpiAmMsVX8lVa676shjFUQMkaGyy080Z5BsvoLMIRTAcQ/q9ba1XNBZvIEPTeAUC1Q4D", + "CqIBCpQBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnQKL2NlbGVzdGlhMWFuaGpxcW1xcjV2bHprcnN1ODBkMnBreHg1cTNzOWx4djNndG43Ei9jZWxlc3RpYTFmZDNtY2x4cDRlMmZoMHdwYXUzZWc1NXgyZnNtN3lqeHpnMjlqMhoQCgR1dGlhEggzMDAwMDAwMBIJMTAyNzI0MjY3EmYKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQJout2TwsIxX3skbzypF1nJQO3LwBcwMqyxeHeH0sRr8hIECgIIfxgCEhIKDAoEdXRpYRIEOTYxNBCK7wUaQGsVRdTxRnRcgRJgH8Nl+qIwNzX0wUKAODe7xuFoRxNWUCFBh/IPfa8C04/miw91j6kY/I6wgIUr+If9KwJU2fs=", + "Cr8BCrwBCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKOAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoQCgR1dGlhEgg2MDAwMDAwMCIvY2VsZXN0aWExOGY0cnF5ZDgwM3cwbWhyeTUyOXV3dndnd3J6bmt6NHZkam1sODcqK29zbW8xOGY0cnF5ZDgwM3cwbWhyeTUyOXV3dndnd3J6bmt6NHY1cmVsdHAyBwgBELKM5QUSZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAtYTIMFyK52jX7oZdlzTih+U9WtysypDJ0CVDrTtln9BEgQKAgh/GAESEwoNCgR1dGlhEgUxMjI3MhDdvgcaQCUjJk6RVZue1dwBeXgkvHX9+Ztl6hZc0kH1PK0Nn/Q6PvQhHYbmfRbhu4Q/haxegyVzpKGKhXc+YbjlKD7wj6M=", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkyMjgwMDAwMDAiL2NlbGVzdGlhMW50dGRxc3RybjRrN2Nud2Rjc3loZGprNThlanB2YTc0NnR2cXlyKitvc21vMW50dGRxc3RybjRrN2Nud2Rjc3loZGprNThlanB2YTc0cjZ3cWd1MgcIARCxjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQKceM5jVEYYws9GwbyjjM6aXcORckeUn6pGiZ7TN7qd/xIECgIIfxITCg0KBHV0aWESBTEzODA1EMC2CBpATQFLZo6V1k2wQTmrW8MC8zqEbP39cdHY5dzQvc9d9rBM+Ph4Twaph+sHOSa9gnA5WEUX09tb4wtG+SXvTsh6yA==", + "CpYBCpMBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnMKL2NlbGVzdGlhMTQ5NWV6MjBrdDVyYXI4bnR6NjhlN3ZoYTJsaG40NXVxMnEzZ3VlEi9jZWxlc3RpYTFraDJqanByOHA2ZXpmN25qcGFueHI5cDB2NWpleTc1NWVlczQ2bRoPCgR1dGlhEgcxMDAwMDAwEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQLy77tGvn/YFUhm8QMa2L4O144Rf7yE9lYn5m187tvfFRIECgIIfxITCg0KBHV0aWESBTEyNjAzEMzYBxpAHa8B+4ccCh0YbzNaD9lnBpdr4S2+Mti6amqlkMvd4RgJ8YBgml+370NtCmKkpzWc3PKjvn6Eb5GmAAGTXAqggQ==", + "CsABCr0BCikvaWJjLmFwcGxpY2F0aW9ucy50cmFuc2Zlci52MS5Nc2dUcmFuc2ZlchKPAQoIdHJhbnNmZXISCWNoYW5uZWwtMhoRCgR1dGlhEgkxNjMwMDAwMDAiL2NlbGVzdGlhMW5mcHF6dGt4dmFhNGhtbmFxZ2ZwMjMyeXBsNjh5dDc3MmxrcHloKitvc21vMW5mcHF6dGt4dmFhNGhtbmFxZ2ZwMjMyeXBsNjh5dDc3bnc1cGdnMgcIARCwjOUFEmUKTgpGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIZ4TJotB00C5eJ/dGA4GkEJViM5jXIrqAKI++gACWMzxIECgIIfxITCg0KBHV0aWESBTEzNzk2EOa1CBpAaTy02W4IXwjtDw9xUw2uziXxUAN6h8M6NaUknVikLXZZvBH9q8pkVMN9RJmdo3gs5ljYqT6ARnH04EuaYKw6wA==", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMWpzbDJtcWVjdmNyN25neDB2ZXN1eDdsdWh2a3lnY3dlamZsZDBjEi9jZWxlc3RpYTEwMzhmd3gybjJrbDk3a2ttdjR3dGQ4Nnc0ZzZkaHp5bXZ0czk5eRoRCgR1dGlhEgkxNjMxNzUwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA+TF4JkVFb3wXqJJLTVD7pI+ClQkXORK00afL3EgFwoWEgQKAggBEhMKDQoEdXRpYRIFMTI1NjgQ7tUHGkAVSbBaDc+V0ErHo3nv4EYNpIvtBTvN2SYJBXkILDStQ2OJ1WyOe3f/91WMqK0pOR3JvkVXhdvLgdqV07OgCWmw", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMTY3d3Bqa2Nsd2x2Nmx6eWs1djdwaDAzc2s0Y3N1ZDA4dHhuam1kEi9jZWxlc3RpYTE3bjh5cDAwazNtbDB5a3B6cXRtZ2xjOGVhdGNwc2hnZHRhNGY0cBoRCgR1dGlhEgkyNTc4MDAwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAzoDmw6+uK16/CwX7WOto6Ah25BCXTEnhW+hbeg71dBtEgQKAgh/EhMKDQoEdXRpYRIFMTA2NDQQxr8GGkA1cYlKKmFPsjh9HQA0yVzCLR7my2+JVCTHhnHy7EKLzjcbn+oPuzJpG09wXtEj8YQn+ek2Pr5Isj7lhaE97/3o", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXp5NDc2NjZxenIyMnFrZW54ZmZlaGp4bmR0bWgwOXljampobnNhEi9jZWxlc3RpYTFyY3U2anpyNXRhY3d5bGw0NHduMGpmeGd5enJlaDc0dnlrbGhqdxoRCgR1dGlhEgkyMjk1MjUwMDASZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAuhRbrGSARCH3Lt8MJeBUngJXj8FWiLaxTD+W4sePB4mEgQKAggBEhMKDQoEdXRpYRIFMTI5ODUQuPYHGkCjIT1INS+XIkwjFl9yl5LD7w0RDcK/owPbDqBOK4/Wmj6BK8DsLpVMUNd3XbdSHWc/kqvYndylMdeYFhm3JOM2", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMThlZTc1bGwybnFlNjJ5NDJ1cjdtcHhjc2RheXl4bXB2NGczaGVuEi9jZWxlc3RpYTEzNTYwNXR0YWN5ZzNxNDJjMDYyZHhnNjZnODZ5OHd0NWRsMHk3MhoRCgR1dGlhEgkyNTc5NjkzNTYSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAkusY9NPsu/dpJiMYkO12ne6GuX3YtepyXtUaqsEl6EbEgQKAgh/EhMKDQoEdXRpYRIFMTA2NDQQxr8GGkDk6EJLAx2/CajElMc5oyw9cB6zo3Jh1RdXwm+iGL6eZ1BhC/+Jre1yJg8sDR36+ahNHhK5TBPsbQRqZKOcaOvZ", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXdzYW5mNWNkejZjd2doZjZjNGdrOHFqdXd6eGVqNWcwZ3lhZzU5Ei9jZWxlc3RpYTFyMmM0eXJ2OTBjbHpmcG1ma3g0c242NnJ3MnRmcmhjc2xocnF2eBoRCgR1dGlhEgkxNjMxMzcyOTYSZQpOCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohAghntZfGeKEvc/y3TF8GHZCyKPPaJDax/1HrwDJId0azEgQKAggBEhMKDQoEdXRpYRIFMTUwMDAQ8JMJGkDI/M+2iM7o0Cu7EypjBjPXp2j40hLEbaNi4bz7xJs43EyLh+Fe35gz+9yknESXDWqL5LmOCtV9lEwNuA4z/OI9", + "CqUBCqIBCiMvY29zbW9zLnN0YWtpbmcudjFiZXRhMS5Nc2dEZWxlZ2F0ZRJ7Ci9jZWxlc3RpYTFxcmszNTQ2ZnA4bGtndHZlaGtoanBqa2tzenIzbWhwdXd4MGZtORI2Y2VsZXN0aWF2YWxvcGVyMWRsc2w0dTQyeWNhaHpqZndjNnRkNnVwZ3N1cDl0dDdjejh2cW00GhAKBHV0aWESCDg0OTIwMDAwEmcKUApGCh8vY29zbW9zLmNyeXB0by5zZWNwMjU2azEuUHViS2V5EiMKIQIYSDXV4/+3MZ/ZbVhXe+RvEto7Id2HPf6AjrFuNvAqRBIECgIIfxgCEhMKDQoEdXRpYRIFMTgyMTgQpI8LGkBPiaYclVlRMvliRpIxeca7iPtdoN59NOfpQ8B34GQvMXQSCMUkcR3ppYC1Py9asWu3zEzgv+ZgiUvz+tQtD7Wq", + "CpgBCpUBChwvY29zbW9zLmJhbmsudjFiZXRhMS5Nc2dTZW5kEnUKL2NlbGVzdGlhMXgycHI1dmE5dTJobTNqZndzZnhjd2hqanI4eWdjYzNuY2RoZGFtEi9jZWxlc3RpYTF2cHZsYzZrcGdhdmRzMDd4NDJjOG40YTl5a3R0dnAwOWdjbTlxeRoRCgR1dGlhEgkyOTQ5ODAwMDASZwpQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohArr6IG+7imLVNmKT4KmQ2rNHzHK6uYzqG+RV31TWaFjvEgQKAggBGAESEwoNCgR1dGlhEgUxNTAwMBDwkwkaQNKi+RjKee0fQiGlMW6vEA9/bfgL0wfsPZ9JgefoxzwiQD2MG4BNy5Ou1KFk71gcsnh3ZEgxIvLZqB2+rfhgke4=", + "CtACCqEBCp4BCiAvY2VsZXN0aWEuYmxvYi52MS5Nc2dQYXlGb3JCbG9icxJ6Ci9jZWxlc3RpYTE4eTN5ZHluN3VzbGh1eHU0bGNtMng4M2drZGhycmN5YXF2ZzZnaxIdAAAAAAAAAAAAAAAAAAAAAAAAAAAACOX2eb9xFssaA7uqCiIg4XsmYi/c5bsBWqT1oeCk/65PVIDyAZlcGFzKUTqhnrFCAQASaApQCkYKHy9jb3Ntb3MuY3J5cHRvLnNlY3AyNTZrMS5QdWJLZXkSIwohA7D2Sad13Zq2W5ImfITzxUOB2F68P9ymaAXa2pS/6UQkEgQKAggBGAMSFAoOCgR1dGlhEgYxNTE3NTAQtM9cGkD5Rmt5KbCUAE+GL/iGgw3FQiXaj1EvffAPWhPxD0/ZADG7cZHnCdy3SfbHZcsta0efPwdc6ylnLunPSf0WMwxdEt2qCgocAAAAAAAAAAAAAAAAAAAAAAAAAAAI5fZ5v3EWyxK7qgr/2P/gABBKRklGAAEBAQBIAEgAAP/bAEMABwUFBgUEBwYGBggHBwgLEgsLCgoLFg8QDRIaFhsaGRYZGBwgKCIcHiYeGBkjMCQmKistLi0bIjI1MSw1KCwtLP/bAEMBBwgICwkLFQsLFSwdGR0sLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLP/AABEIBQAEKwMBIgACEQEDEQH/xAAcAAEAAQUBAQAAAAAAAAAAAAAAAQIDBAUGBwj/xABcEAABAwMBBQQGBgYJAgUAARUBAAIDBAURIQYSMUFRE2FxgQcUIjKRoRUjQlKxwTNicoKS0QgWJENTorLh8GPxJTREc8KDFzVUk9IYJ0V0s8PiJtM3RlWElKS0/8QAGgEBAAMBAQEAAAAAAAAAAAAAAAECAwQFBv/EADMRAAICAQQBAwIGAQQCAwEAAAABAhEDBBIhMUETIlEyYQUUQnGBkaEjUrHwYsEVM9Hh/9oADAMBAAIRAxEAPwDw9ERekQERQUAREwhIU4REBGFKkIgH2UREJCIiAKWoiAIiIAiIpJCIiAKVClAMIiKwCIiEhThMIUIJUFSqUAREQkIiqQFKKpUoAqlGFKAIiIWCIiFQiIrAIiYQsETClARhMKUQBERAEREAREUgIiIAiIgCIiAIiIAiIoAREQBE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" + ], + "square_size": "32", + "hash": "l7prxH6ZB/63PBYZ0Y2d0p5n0GTPIm4ZXGjazp0P6mY=" + }, + "evidence": { + "evidence": [] + }, + "last_commit": { + "height": "407", + "round": 0, + "block_id": { + "hash": "cRLIkUkIlw2UeyPve1aSEO57zuHiIgsa8jSSgU2XCGA=", + "part_set_header": { + "total": 2, + "hash": "Mn1TmmyxpsI42IV2S8xt1tgrzYuLWpQov+9l+Hs37gQ=" + } + }, + "signatures": [ + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Q0ribtCJqnJWVjr436BJBtJ3iRY=", + "timestamp": "2023-10-31T15:24:10.468224161Z", + "signature": "/H5Ev+gstJHk33t45nqWHKexqpFWsLK0Kdz7WMqmzF3nWOnezCH6wHSMGWD1j9sKdQcs2/jUODnDt/PItASiCg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "2DhJUZpctz5KnjvN8ETG7ooyFWs=", + "timestamp": "2023-10-31T15:24:10.428950139Z", + "signature": "AtAB9ubh+iLZiGbzOsUVnUu6+SHAXMVp5P/UkyeqOXxG2/OFELaQJNYG/J3HQFvkLoE0SkZIIaXUue9vMkHWBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "BdLiLBIWzTAQS822sSKx5/Gstc0=", + "timestamp": "2023-10-31T15:24:10.445491441Z", + "signature": "BHfIhsk5TpMuAVuF06Y6LMIGZ+g4pcMVrd/swWcnWJfRJWZEkruvtJb7YgLq42+YymJ84EbjbngHuXGH1cITCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "L33o2hRWe4awJvBF2spF9VdOfkA=", + "timestamp": "2023-10-31T15:24:10.517867939Z", + "signature": "PzquYYkLwfD6lUHfVHxTziaAurAbKoye2FmcKh9dP4SMe1JD8ack3fPnNIR4WnJiW7pX+HoUNFI1ka4LPyWIBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "BxvkzS8EhvKXxlMJGIBCYQNMj3w=", + "timestamp": "2023-10-31T15:24:10.509576453Z", + "signature": "h4ZE/yEh3BRGw63oGL+bmKP3oGzxthr/69dgDv5ygM8GFwZ5njngTwmh81tDjIoxrX/xUVy8Y0xXg7DcyjqBAw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "y2EzwoKZHDKYWsJ3nqJ37ol4rGM=", + "timestamp": "2023-10-31T15:24:10.450940301Z", + "signature": "1OmJzMNdvDKcEnp7ndlfANVWUl9cSv1iL6GsTRcRxJp7UBQZHCXk1XidzEVZkDz9PViJuQTq6xVs3C/ElaXOBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "4r1PiV+d4LRrLtS6oS7i3mpBVFA=", + "timestamp": "2023-10-31T15:24:10.440160480Z", + "signature": "Q655LvlceKNHuJ1hyIYFf6HJg8/I88bIeAMz4g2cZ3UYgdpjzNFUIahHCzMKgqHjxa7F0e8CCIeiIhGRkJ6CDg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "107Cnm5Fl5Q5Qufpex9RmgYV47Q=", + "timestamp": "2023-10-31T15:24:10.406061289Z", + "signature": "Tm1hz4pJAeCQdgJ1oQGonb4PX756L2FHtswGEcQHg8O8gmJJ/goXxWNw2IYprX9UqAiXHP4/EzLC0yurF6tnDQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "YzJSeVFcHDqR1+LbGvjRvyAZSPs=", + "timestamp": "2023-10-31T15:24:10.410975096Z", + "signature": "3Rfyjc69LfFurl5lnslcjbF0v9CJEbK8gMFl7BYGh3E85n1+YChgBfnxhIHpX9ru2kHe9JfvrcjgI38ST8NQCQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "HnuiCqz37yzepBzf+Nzt+88S82M=", + "timestamp": "2023-10-31T15:24:10.483534525Z", + "signature": "9C6kTnSnwR4ylTYPzL33Rt1AYFSMeNGGMfart9f8fWuz1u6LAnbAhrqpIk2SKIdNRS4zJzxRVwSWMCq5ssF1CQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Za+gYDqtb4VPjsO/jxAw5tBWhIY=", + "timestamp": "2023-10-31T15:24:10.404091915Z", + "signature": "7HvWtAd8cfK6v1OKUx61cO7errcJmTmBcQi0RP7YGUhfJfiZGEMZtvifYGWoBi9dg5bAisrYfluglPLI+WQSBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "ezpsaDi5DFZjy1Toe5U1lBqH0ns=", + "timestamp": "2023-10-31T15:24:10.455368079Z", + "signature": "FxomxoaZgz1H0PPMGx2Rt22jJC9AQN7m+PGKM4WMuB8fU9+8yDIpFKYvd1oNnT1L7L9m2y/Q1ohTfNfPUaevBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "67wjo15D5qJGC947zQJNlkaX//o=", + "timestamp": "2023-10-31T15:24:10.439581475Z", + "signature": "d3H+vqeGNQSmQP/tKfsZDr1N3Ko15/02RZbMum+LHZ9IU0h8PRGw/ctaY6uYmn3CHJdzjqcrEKDsDZ5z/MXGDQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "n25/MFjM79c2+o1vHC/nNyYjBng=", + "timestamp": "2023-10-31T15:24:10.414045948Z", + "signature": "bfQhhQRqM1L/dqKScnB/JPD3/7HXmMZM+qkNB4Q+IZoD9MVNzHrHhymODWF/YHTTIyaDESyTVJZbTOol3HqNBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "cMa9AO5k211g9azItGKc1hA0aIk=", + "timestamp": "2023-10-31T15:24:10.541091272Z", + "signature": "5Qlj8nbPkn2QH28V7RjBuxJEcs5+gd8b5qZyyZVua9HTeOUCk4vbMOjYxghNZhLadDmDabklr3xpmjudnb0MCA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Sdn61HMptBiub/9B+OVIxNGrcAM=", + "timestamp": "2023-10-31T15:24:10.453553176Z", + "signature": "qBurjnfsnSlllAzAuSgA7i5F3tJA5DwAurOmIaJtGSFrERKzzE6PJNXRD91H4tHIjxsou8m0oK5JaR18h525CA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Mmepq9+ox0ljwFm2s++bxooHTK4=", + "timestamp": "2023-10-31T15:24:10.523622951Z", + "signature": "20afpH4lFy/ak6VGAZiw4A4Gla/TLPk15a94vIzIyVwxtapOOsMjLO6Wmqo4/LcFCOeIRD+T2mhUSRn6d+NqDg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "y/uRP8lnkyJgZnkJcnZ2dg+o+iQ=", + "timestamp": "2023-10-31T15:24:10.466416058Z", + "signature": "0NoKUjVWwnNNFvsERx0vIWYtqVg6TVun9RlS9tEO1Q/PgIqDLQdD6nQowYM7JSpV0oVG0iN7jLaRYeHIbfkjBg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "5kHHoslkgz5Vau+TT78Wa3EodLY=", + "timestamp": "2023-10-31T15:24:10.445512414Z", + "signature": "lE49OPXbgEl/R9wPq0y/NtRFT7poA9XrtY507e73VUbikrzlLVOz5506xdrr8VGypaHh/QsUkxY8jMLhmdz2AA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "isjueULXm6wntbOM7dJATF4Ni70=", + "timestamp": "2023-10-31T15:24:10.443259299Z", + "signature": "h/5ikzMHLQ9er8x68y6u1KVgSoyJ0wNii+kORwB6rG1l8R0aFoW71DLHnqI41wCIylQAH2NQ3KVf2Rd2GTgaCQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "F+Ag/JLe5W8y5lLOrL2N6CDj2HI=", + "timestamp": "2023-10-31T15:24:10.497792090Z", + "signature": "bJVAehukuCmkRv9ijiYmRdg7CJsO90JMqpMlkK+CKHvEhKvH8YkEVzG2pi3yuQAEHf/UzsODA4tWm6LDtVbSCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "4Dsd5wZwxkWDIu9ZYdZjWXTAk1s=", + "timestamp": "2023-10-31T15:24:10.418971453Z", + "signature": "Mih+gvk9ylSKOGXH15/tO2BFFGSpLuGl2ebPrjrtxl6n+Y8ncqSSWFnO2CtEPmVC/77SOeP0/bj6gyswhEf3AQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "B+Xq/uAzuYl+QTbd8w2XFeasY64=", + "timestamp": "2023-10-31T15:24:10.507987332Z", + "signature": "uYf21MZwfWQ8Uq87XFcOaEkuLGdwxwrMGkGG76JVIaubyeYgfqldYD/lgKFf1MKG/kvtjE4LfQTIpTDyZ5sCAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "3pTzUcPfxZsXO7crrEU00jfS6JU=", + "timestamp": "2023-10-31T15:24:10.490869655Z", + "signature": "5c7YHyrdVIDaLidqJvIYETBltcwlbtsQ+TG/MiYF5+1c1uW77imS0pqbSn9J/+9SbSToqR1CcL9eiwOIbmYJDA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "z7dEXyp9e2g1e9ojWCJu0mKF6Ck=", + "timestamp": "2023-10-31T15:24:10.503883183Z", + "signature": "HbeT/x5d1f0uiq1xYWKMyA0hXZVhhsvY4KXaJ+Q4gAYFoJSqJYkbw+3nnmGjfrTyC2nefQ0yw60h5ub6su94Dg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "qzsUqcbEWmKuwh8PjeZr5MUmjYY=", + "timestamp": "2023-10-31T15:24:10.651984219Z", + "signature": "3F2pohlyn5/a82ElGuv+6YTfwIzkrVqmDP3/FEW3hXAsgMQz/1aP7yW9iCyx94eF9W9mB9xlVOxIGcAoM2JRBQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "tvrukfzGH52OF7ZiW2d37CV19LQ=", + "timestamp": "2023-10-31T15:24:10.453433366Z", + "signature": "y/1sBa0uum7Sq/hdlKcfVPthHbVhgxIg+RRYaPUknQ8q2z8jvXRSAA05hA4JUar9TRihrdmEJcGoXcys7hDXAQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "7OffCQCGuTJc2xyOmurLTfX/+3U=", + "timestamp": "2023-10-31T15:24:10.466367071Z", + "signature": "5xjnUXKZ082VPrlqZy/Y8y8IOnrAM/Y1OH5ddeGZ3KHcMoRR/3ICzKMsZz4IGJriEtmQih9Yl5L6cc7xiJq6Bg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "2TR01hmM281W4O7UJVvYUcLmQCM=", + "timestamp": "2023-10-31T15:24:10.476785060Z", + "signature": "pvADZnTrjI7N7KLNMcnjqBLJffAzg0a55nHr3SowBZTmBKAWf8WSZtFLenQmTdGdKctzWnzKQ+fzz3LImtrdBQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "sDghrNwKTp82/EJbhUSX8lERb2o=", + "timestamp": "2023-10-31T15:24:10.446614238Z", + "signature": "KKEl8hUrxfSGq3xpEmMZFmg5MJ3HbLgTk6ntQnNG5UA919pFu5DRYMuUucdjBkOU641T1EwKhMO/9JWQ1v+7Dw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "e89GcMp8/UN8lZV9BlpR5E6V6fU=", + "timestamp": "2023-10-31T15:24:10.502134351Z", + "signature": "JIFDMj7OQBvPRO+fcdEM+nfoWEb1NP1855nGx6xvO7QgWdl2th2RFf/jj1ZgH6vKntNsc1tF2e/d1CjiIzGRAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "l+EImAd5uWOemBcpcUbH1fAWrw0=", + "timestamp": "2023-10-31T15:24:10.443049968Z", + "signature": "iEvCwkfcjR4DP+BfUj+oyUzJaXySUVV47piw/E5sWdO4RAClEen/vA4lcp6qGIFeua1Ew6tHZJr7Oe3O0pSQAA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "7omTDMkayHI7gJujMPJzCET8h/Q=", + "timestamp": "2023-10-31T15:24:10.524384388Z", + "signature": "c5D75N8YHnvClQeXmJJeYa5kytcwZsPxOdvJ/EPqb8cI1eHgKR4He3jpfKJYr3geG9gj7TT2fGPinHssJvQWCA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Wv/4jj4laoSgyes0iwRMrbkSGXs=", + "timestamp": "2023-10-31T15:24:10.536311937Z", + "signature": "UFBfZb+azJXMM2O/t/UIZkF7dh/y/R8AC1Gan1z0HJ6EwiY83JS8S8PYAZ6Y5aGxbMNHjL37Y44n1OmF7OLUAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "ZKaZB9auGEUCUMeCD3xndsLAb8Y=", + "timestamp": "2023-10-31T15:24:10.492787427Z", + "signature": "rXWt9iZP58EdXsAo7NpMYolvDt+zdm0WXxlSo02raijH8NDA4MDc2LeQqB9MwuZgar3kxFfox9lc6nyeXDOZAA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "ao2tkiBeujSzc+j30qLVAGD/23g=", + "timestamp": "2023-10-31T15:24:10.449664759Z", + "signature": "ac8ylMh+s6sVEuVkWmBoQDh331y8PTXZNNSmpkfuHJCWDpQdV/2tHlQztJdNRReHbdznQU3Pyi4oYoouFlNaBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "kWXw41M+Bm1XSgazKsVOf653HYw=", + "timestamp": "2023-10-31T15:24:10.467041480Z", + "signature": "KAmGNl7Oysw9GvXmtOp0YUhI79o73LLv7UNHWVKPfnwWop03WYulIa8qmzOlMjsO40kopnue3ldfgQljbA1hAw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Y6YkRFpxpeGHMIVM5b4dnJPcrW4=", + "timestamp": "2023-10-31T15:24:10.582334952Z", + "signature": "AbVpmkqLtPitDaWKciyaPPdXCAntb8ruQvZ5zwzQkXAiEMFX+MeZX8oguQyCEclmnTJ46s3W5kCOO+KtINQ8BQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "FfehumsHcAsfU3yvyQdzfUPP9I8=", + "timestamp": "2023-10-31T15:24:08.506787980Z", + "signature": "YATLkIgbcQrQa5hVmniQsS9NPrnQ2j+VpiHZL7GOKPVIopJFKjCsy92ZKakuAWXEFKmTKsHn0tGNhbNR29khDw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "MYwYoiZUq1HWXwhZhTvEhdHhfyE=", + "timestamp": "2023-10-31T15:24:10.509900253Z", + "signature": "YOaZUi26DiOP1XGLdqauXuIe06jYLLsPW7lQMUXgKEev4W4W81t0adVQ/JFcc9uqhhVVgpqKA+0pv5aHLdaQAA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "rxV+9kQFXJhH+Q/4lslahIZ07Dg=", + "timestamp": "2023-10-31T15:24:10.405976137Z", + "signature": "yA4cjYoMDW2OXZAaq5JoEXpQnu3h6NBXY8BUtbvuiYqDBKSDRAU0VNtDxjw7rlQrzXwRu9dQmNZG8k4r48mYCg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "VP1QpV/twNkzhCGrMvCMmprWbL4=", + "timestamp": "2023-10-31T15:24:10.438795348Z", + "signature": "cP5OnDkvHzpf4ByMNPw5OcQjcmpWsCU8zdpvd5SGxxLBUH2ZVvX2VthWF9uXz98BNKFWlsNA4OkXqTjeNiBKCA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "UqkqDULZ2jXPl2tEEcOUBy5qee8=", + "timestamp": "2023-10-31T15:24:10.482381123Z", + "signature": "k5i6XdeEOdgVtWnc7AZcP6263didGSoxbZai/cCTuIsxTiGYJZsp/p7s2zmVA8ZaauXdGXcgCMTI2AKn1GaJBQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "o5MIWoskAc2d0BhcejVD0NlDIZM=", + "timestamp": "2023-10-31T15:24:10.461989240Z", + "signature": "ZF0fHO/JIImH1mqnK/KJKDk6juZn0oGTgbuGM8bnJBs2Zef8VkdsxG3/2l6QjaoeLPplxHjOQUdWK1EFkzINAQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_ABSENT", + "validator_address": null, + "timestamp": "0001-01-01T00:00:00Z", + "signature": null + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "XvSscAwxItw8UnOMh8Vd2pUyZFo=", + "timestamp": "2023-10-31T15:24:10.583700920Z", + "signature": "WM3VdE1yYAVamcAoFqMsvDzB7wkQO9FaEjtV/YGVDmr1EXzQSZGvedoErGaF+nvguyyn9GrQZHBUaj54NArTBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "98OoKsieARSxNrmTUulNok6XJDY=", + "timestamp": "2023-10-31T15:24:10.470245155Z", + "signature": "Gr7P0VRXR5jMFiUqkF8aaTPudJYX90rYRAXVC9WHlD9BRbLB8TNdeMMG1eLArAHVh37+o70LjaNqOUZvM58QDA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "oLTUnWNrNgVPxclHvJuTRmMzI5E=", + "timestamp": "2023-10-31T15:24:10.368800486Z", + "signature": "cEb+3D8DwkMBqc3BapCtxI2ocWa/QEEXI3eRt9tt9Q+IKYAkWuF28TDYSf8FbT9uCmZURJnMxlMJTHgA/zdUCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "t+IxG/lJOreT8eQ2aaPRWANCzGk=", + "timestamp": "2023-10-31T15:24:10.492178975Z", + "signature": "M2wkoeQWEP0XzXBchdVq1wgVkP5tfkRvq2m+hT8rRWrHjT0lIVjL61THApInADxve/HBMOQs6pyv5q+v5xfjBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "OPvFKLiCGi4dkkKk4uJvHUUjx24=", + "timestamp": "2023-10-31T15:24:10.559976693Z", + "signature": "3hoNiLVrRT28EukjEPoB8KgojHhvDQ975281P1dbbvRoDGQ2jJn1gjRTvdlE7731oyneRrs7J8sQ3mjkOdF4Bw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "mUUy9+0e+XJrL324YTt3vFpMjK4=", + "timestamp": "2023-10-31T15:24:10.519096528Z", + "signature": "BXeZMNodmgCCivRfr2lRauqqyDDjyn4eLX/3jpEtqPVlEdUo/WYjFsBjNZ0yJ5FfV3Rr1Rb+wMF5zsIlByVzCQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "1nLP7vanrmBdNx5zYQB9h/McWU0=", + "timestamp": "2023-10-31T15:24:10.495770653Z", + "signature": "vWKmw5juPbrH0i2papnjHKY0PSSxMI6o2J7HBiFoC9KhX+tYWjJC79bvvtp8b9R8tzd0u44sowwAXkOuxKDyAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "+iiIgJ10syyUdL/kinaAHWSmnKY=", + "timestamp": "2023-10-31T15:24:10.473277021Z", + "signature": "x8fd0oIlH+SVPL6ZMrFJAO2AVRC06JemsF5T0xtYry1womOQT2I1p9zfekzxwEgsyHlECkrhR+K3kt6NmulNAQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "g1Ls9i7899us3oUubZ/BoVg8FNM=", + "timestamp": "2023-10-31T15:24:10.454471431Z", + "signature": "jzx9nxYt65gxVJ2c7ePtLxbDw0mzZ6z6J29WP/dcBVlXgKdpNtB3UEiqTmqrwVnUODH9Ov1GdJD5liSUxWh1Bw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "P4nkVlnJZDyoMh7IpQlFU8ULbEw=", + "timestamp": "2023-10-31T15:24:10.480465343Z", + "signature": "8dQPsT6yxDlsDbsihI3nJblay/PiX0uS3PSUkAIXs//pKBhenHYU3nIq3Ay0XPwKKzMEqnmWAyEYj7jqKyYCCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "d3HZqvjMvvqnVA6GL0LUHCw0Ao0=", + "timestamp": "2023-10-31T15:24:10.451756276Z", + "signature": "lFEd3eUcN4Hcs6Uuqm1RvG3CPnM3ChPqlmLvPxxCy3tcL+BySVqEDAmaIllJlADNpCfhedDUuhfOWy4oO1seAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "JWBYtlcy7Hxri8RMX9JQIhE3mt8=", + "timestamp": "2023-10-31T15:24:10.453279371Z", + "signature": "4cvaJGg+hGGKeFuNLe/CP5FxzmKkrcXodXGG2hakHDJPMM8XsrTkE/nUwQ7XfMIyIKKcUItTQeFerjrNHobqBQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "m4rFXdOLGYXMKfo7sWpJyK1x810=", + "timestamp": "2023-10-31T15:24:10.504380355Z", + "signature": "vx4baMOaVdUluiNJN3Pb9SW7CGQhg7WDbi8Rw35coykz6YYkA/aB99wkF2qqHB1V784bEx1gw7EliGUXQer4AA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Ioh+9fP99KBDrFtpgxDEXo/H/GI=", + "timestamp": "2023-10-31T15:24:10.504272141Z", + "signature": "Uh2ke3OYiBwR4VD7YAgrFtrF969lXajXTfIwhHSc+8Vz8eClX15uhr04zeXJ3WMEKer8Rd8kv9Hgh2YIK+/8Bg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "Nl0dboaw3mYobqYkwXzgnU2I2gE=", + "timestamp": "2023-10-31T15:24:10.477033796Z", + "signature": "vL4clrc5S/xWkuHVWQxR7lDEBPUnTSnyPQ28wjKrW7CIRX5GVglC7gpIsGAcKucQsQIzAZ3txG3hsHC/K4JWBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "NvN1An1BvNMoyvyJprduOUmYvnQ=", + "timestamp": "2023-10-31T15:24:10.499483915Z", + "signature": "MjQFx1yxQeBb0XCRSuTv3NkAM9K2Wox9SYUySyORADNpk0vphG25EMqDYJ9ayoistrT3ZmUvkPADQp0PB7c2CA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "YuSHApmlH9MJK8Ds1SIrwYluuos=", + "timestamp": "2023-10-31T15:24:10.485839171Z", + "signature": "UY+CoSKvN5EwxkPPKKPPS/RlM3ZPsByDu1ognnrNFlllh3vPamSjoFk0qCgmKTPT+3POtXhGtxhoOEBqnM4YBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "ayxjhy9tNAKutbYWtjroOYLWtfY=", + "timestamp": "2023-10-31T15:24:10.451214075Z", + "signature": "NLdnhBMiJYSibiGKDbsSd+FnvXyMwwHcTLoJGDzYgIKGZnKxT1X90r7tRETkdSlyhnYNpVGmp6YGmV9iIdwJDw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "GcYzcCsCUggqQQyBREMzrWv4FN8=", + "timestamp": "2023-10-31T15:24:10.488433591Z", + "signature": "mQXNiOSLSDUZFmec5rMVUJL3Yu5tSdnHgI8h25NiSKmtQevxs7soMhv0geldYkesbqFScu1/vxtCFKY8diE+Bg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "reA42PZ+OIcQwB9j/aV0MvMC4Ik=", + "timestamp": "2023-10-31T15:24:10.585367155Z", + "signature": "8pZ5Rb7afU9OG+dEcDlhOa8FACAPEaW6eex1BiMuwxzSd6n6UN8l4PgGomj5Vjh5zAgDnlw4vM22te3wfkGOBQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "x0tw4y/Dp74KSTlOJ5pfoCNRavc=", + "timestamp": "2023-10-31T15:24:10.529528450Z", + "signature": "6niorpE3J4bkmylK/iKJr41LZhAQjaRontknTNxLwjEfzd7J8IouGx14d9TGWGQ9hP3lOgWwj/2Ke4kQ7iSODw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "csaN7GzroqkNSs/BCX3TnscWanI=", + "timestamp": "2023-10-31T15:24:10.474462406Z", + "signature": "2dQIuUfVetl0wzi84p7MNhJo9YZj8SmqgR6JMpOiNSg4uBztFGmUwtzAWsz+vTEcs6lfoq9ebKx2IEcjietrAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "03l8gutjvKaeEkCx/8eslC1tQyc=", + "timestamp": "2023-10-31T15:24:10.404978212Z", + "signature": "irV8b+QqNvXOA0lCzAhJ1pcXdJa9Z0DXPAl2L++wGSpH3rNrWigNGFsd3UICs5Klzz/jy0W2xfR1uX2G7yBTCA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "pGD3qYaOPDGPvo9ClmWi6BrkRzE=", + "timestamp": "2023-10-31T15:24:10.543490359Z", + "signature": "5p3qgY16ShAv/RAxD/DG42MwHzSKzVBUYF1oCIMlXVwiCL2Wr8ynqsufqGQEI3sNOSAIdrmBpFoMpv9S5RQBCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "KviULpBzi/bUVb5JDhdq1CCpwNQ=", + "timestamp": "2023-10-31T15:24:10.412231383Z", + "signature": "ZtMx5KB7ag/aQpOlUweaztJCdtBz4NNW3LvpQORLEj3uvc7rMSIj3Ti4dh84QD5Z8fFMxge+382ErV3jJ8p6Dw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "UG2vcGsU6sU7B8rKdJuhaIfdz4A=", + "timestamp": "2023-10-31T15:24:10.417035850Z", + "signature": "yAimFfHW12tPsfi/NcDwEX4Q5a7/4YpBAV65wR2tJIFp2BxB0LRjzS2rGV+SAKXl2pHQmG8YeQ1n0Tnsu+ZoDg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "EmQDosqjbb3g+2SnrnLtgpeTZvc=", + "timestamp": "2023-10-31T15:24:10.459811131Z", + "signature": "QDZAMMNV3p4leqddtPBlLeo9Fg9O5WoBlaP+7rBFQvTNn2Ci6msqGXjyHtPuvCt0uEd+5ANNeT72b/2sS647Ag==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "/CteRs4eqYw9QCPXTN/CBPAnuCc=", + "timestamp": "2023-10-31T15:24:10.454033411Z", + "signature": "6o9vZbozBo63kYUewoWiJQJsOsmGb2N/pqogmgq4DOw50Qz4cELUNT9gP2/aG5lX7YvYgvBa4tf2Os1liH/+Bg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "ot1ek5Hlvcfy24maeFZPrAwHo8o=", + "timestamp": "2023-10-31T15:24:10.565205293Z", + "signature": "IndTPFggfyn2It4bdjYD/Gnv4VfCFRBCA2zm8N6F7jnMrI+YlZsV6Xs3sr6zziBA01+xVJchsQPkZyXQ/TgyCQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "g0BkH0iF8pBPcz8IDP/XSbddm5M=", + "timestamp": "2023-10-31T15:24:10.518935595Z", + "signature": "V0EmXLPm41HEgXqL5dR7t3ZzndbONQMZ9YOh1XH7KKmr4nOB+gF8ptQnWOg+DsQh545M8TBJbYo1G/E0ZL1aCg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "JvnQvD9BWW0qhXmEtl3IXQMJROI=", + "timestamp": "2023-10-31T15:24:10.612709776Z", + "signature": "ueQkua4em5tv2uwCDic29nvgvd+ARaEm/SqvQ2JzIMekAx5tE1xUioeerx4pmRp3pLVqmDTu5lGsmBco5sh8Bg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "5l1yuJy++ab0Gcm95sl1qgvyGpc=", + "timestamp": "2023-10-31T15:24:10.497913501Z", + "signature": "wHLHFudWP4cKp1bbQr8mdbrW7/UVW0g0QX7EZ0P6zs2UG9irq5NQSxBUK+MZ+ozh2HTbABFPctk6+W/iy8UsAw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "INGg+avF6+4WBQfmuXlIZwZHG6E=", + "timestamp": "2023-10-31T15:24:10.421017415Z", + "signature": "A8HJMwhE2gfRNY7T1WQmifCQwQQuaADyk7mos1azztZHEz7zZNIddo5lUGcddGJMODKmn3f5ICT8rIOPYcOYCQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "0pFREoO+6ae5G9Ii5A8Jp01K9Vg=", + "timestamp": "2023-10-31T15:24:10.502984812Z", + "signature": "dL3QQIdTLP2weLB3KJJ+ncpWpZ93TOM+it6jUao5lg0Xuv/cRxqSOekW1E8zHp3IFijY15FMw8OmXq/RAeVkAg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "4t3FDes/VqpY8p6x67RjGmhPdoQ=", + "timestamp": "2023-10-31T15:24:10.500609319Z", + "signature": "Hi+/CnC/MA5TgBKXRqeyfoyByoYzw7fy4P/PDAkiS9O3BLvHvKlxTaiaQPN0fhcClzs6KPvwiwIt3TF0gFOlCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "VAfMBR7R9/W+jsyFawYRIbsXDXk=", + "timestamp": "2023-10-31T15:24:10.460851029Z", + "signature": "1qTKQ1Q10ZoCuEoVM/2pySMfwXGP2RtjHOhMyYjJgePpHBDKi59t93B9ct+GtCUiWg31xrG5dO8ggK2oNwoWBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "0LVTNfZSTNztPT8IUt0rXyIEffA=", + "timestamp": "2023-10-31T15:24:10.477415126Z", + "signature": "a7hwFi6ujqCtSq4EpIJonWGWYJQe2wdXeh4px5o660eD5tYXMORHPuLQpKzqV8l6TtrHGRU3VcZFtsfQrq6tBw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "V+y15rtM++CFQblx3CQPM+7IgL0=", + "timestamp": "2023-10-31T15:24:10.585263544Z", + "signature": "havhksUs3zU6Ym0qHA8pfa1K6nPRw1kkV9cqtMAO6FNTtcOUjnpYj028AzIqHpGTvCxqUOpwCMX0g2zHhV+kDA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "0uf5m1aGmEQRA9fFJ+nRFvBcmZk=", + "timestamp": "2023-10-31T15:24:10.556882998Z", + "signature": "pxXkJmHWdy5icNFLgFgLSok5mi3PeEwkkQ0Pxrxt/26JgeSav8Zuy10aru0rDsjsy/L+wQUgVbo8P2cTb0eEAQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "DYpkS/WM/GDP+/xarDoNYbLX7WE=", + "timestamp": "2023-10-31T15:24:10.442343312Z", + "signature": "ZPJFFzy3HctggO5WY/QbrqO/YyCAI8jUItmM94Ognrw3YZ0z2GcVu704NuCItw6w6E1ZAHK1dXkIPzFy6bSSDw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "IKzh8ZwGXIYFmsXDZRUPcFECzcI=", + "timestamp": "2023-10-31T15:24:10.462043126Z", + "signature": "/L/uX5GLCJTpkb5G6g+ninBfv84hSSITddKikgKdJBCWbgquWA5zkIl+WtVjKukj/IYVIMPST/blLNsQ7/fdBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "FlAUb0eKYJbk+YCANkb8juPDYQM=", + "timestamp": "2023-10-31T15:24:10.446018907Z", + "signature": "IuZyCCIjPbnI6FQepIPs10iERsOKF5vEuIlYqkX5V9nkCjzStn9H84krpxoQruxBbReNVERQugNj2GpVTx0UCQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "U+4nF0WnN5xfGjVOVMXUHoDfm/Q=", + "timestamp": "2023-10-31T15:24:10.439780992Z", + "signature": "9Wd/UrdZyb5y4wD2bLtdVqxQtpMXhUQ70XYzmenfM7hNX2IjXSe01/zcySx6U8F9kz4Y4WzXhYPVbsqIe3+BBg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "H+UHbrIJC6ui9lfs+jrT8mbuP8Y=", + "timestamp": "2023-10-31T15:24:10.479177769Z", + "signature": "vhpthS9ricvyf8TAw76aqW++Xq9sW4ysvPQZaYA9tcs3PPZB3xpvLE/I06rOyC0qNZdJeZ/uMU3Wijy1mSV8Dg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "lg4RNeZYmqwM+xquZJW8C6IKhK4=", + "timestamp": "2023-10-31T15:24:10.502231555Z", + "signature": "Hh587jNlE8bZoSYwCIdfpdOdMwGDL2seWhfQFJ+9chMzjiJq5R/81aWqCaRYFhoZBGq3co6Yj3dVp66UCVZKCA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "tSww3sU64wdJkgZz7w/16Q0er/0=", + "timestamp": "2023-10-31T15:24:10.481022031Z", + "signature": "NT4e/G9stYU3uj9/58x8Usap+cCj3BL6ihgTUl+1wozFRcfenJSJbZnWKgyAP3bdB8D/UgfcPptc6EQ302sHDg==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "qm3nSGvh7KWq4pKYB7Q/U9mC35Y=", + "timestamp": "2023-10-31T15:24:10.506441168Z", + "signature": "j3eQVVdAWUirXzpHNMqr04KKQabD+63nnby+RqeOknNbuHU5+ifiU1Lvo2/39QUNtn9IZyiKIjLPUE/5mvxyBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "87nu5eEQn48fjSwOsylN8g+eGl0=", + "timestamp": "2023-10-31T15:24:10.477923220Z", + "signature": "r7fGqjzld5KyzgQ/Epd3v6S2TIA7HNlJ9cxJYGbPAs2lN/SuqnXfkzovy54BNsPH0ZOKjrZcut22MaplMDO6Dw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "QPYyBjVq/5c6YgQXjtwWD+WjMWs=", + "timestamp": "2023-10-31T15:24:10.486109179Z", + "signature": "+rHT3GuyM8Aviqwke2+Ck9Y7L6Qg+UYRWxVnSeskZE0yyDI024EoM1Acqat3wvXv9ozqzAJJR/32CXBh9MI7AQ==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "IevUUpRIaw8BCbd+PD4opUyHQ28=", + "timestamp": "2023-10-31T15:24:10.458383587Z", + "signature": "zHgLgFF/tHoBcyAwRv+twPZ0RQOeH+PUNQa/77UEKimFq3sAqnrBd+85W7Dskic5h6TST5ntEiex/0py7bQkCw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "J2o1WsZ7bb0aRTNcKFRDacwMHuY=", + "timestamp": "2023-10-31T15:24:10.517722577Z", + "signature": "sjc9bKZ6PLgiL2DmluJhrCoHBxVH1Jz9WJxivOjvJpOs/uaurL3fB4wTF1VazGh2ppyDLtN2qrkZgc88g18QBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "i8pn0pK7hrzW44igdRAtiKRrp+s=", + "timestamp": "2023-10-31T15:24:10.467455214Z", + "signature": "SGm/7GeS9Nwspzx6X/Cq7nWabu6wIsKb2z5gZ8UN3ZRvy+P97ZcMt3yX+waAvu60RlhO95ZwCo1TZcC9rRfsBA==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "nhfbvvcp1R0vq3dII0N4NXLKKn0=", + "timestamp": "2023-10-31T15:24:10.412664423Z", + "signature": "wUvxuEX/GNLlCEB/KRKU5QtZzRNhzleBud/B3vEg4VX41nZYfp7Ohedp5eq9kxYjf0UKwJm1U9O3tZ4N8IN8Cw==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "THFXsCNNkEy9FtmT5N2OqVoHAw8=", + "timestamp": "2023-10-31T15:24:10.422253905Z", + "signature": "jaOReCBkX4wlPgaQg9bFMBDrfPyaRnWfulvw6KEVmUW3qSALocUHPc0h9zXjgImAG0jcuvjzp2ywAdQAy/04Ag==" + }, + { + "block_id_flag": "BLOCK_ID_FLAG_COMMIT", + "validator_address": "zktsysg1rTc4dR4URQAQk9t9jQ8=", + "timestamp": "2023-10-31T15:24:10.466320601Z", + "signature": "/H3JjSj7K4hNsQ6Y8nDJxKz0fa40sXsA082ORX8rHVc16V6Nl3hdbcx0h13kJn9+X1CsVVYEfMFCF1Gn0mPLDQ==" + } + ] + } + } +} diff --git a/x/blob/types/blob_tx.go b/x/blob/types/blob_tx.go new file mode 100644 index 0000000000..249c37b574 --- /dev/null +++ b/x/blob/types/blob_tx.go @@ -0,0 +1,128 @@ +package types + +import ( + "bytes" + + "github.com/celestiaorg/go-square/blob" + "github.com/celestiaorg/go-square/inclusion" + appns "github.com/celestiaorg/go-square/namespace" + shares "github.com/celestiaorg/go-square/shares" + "github.com/cosmos/cosmos-sdk/client" + "github.com/tendermint/tendermint/crypto/merkle" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" +) + +// NewBlob creates a new coretypes.Blob from the provided data after performing +// basic stateless checks over it. +func NewBlob(ns appns.Namespace, data []byte, shareVersion uint8) (*blob.Blob, error) { + err := ValidateBlobNamespace(ns) + if err != nil { + return nil, err + } + + if len(data) == 0 { + return nil, ErrZeroBlobSize + } + + return &blob.Blob{ + NamespaceId: ns.ID, + Data: data, + ShareVersion: uint32(shareVersion), + NamespaceVersion: uint32(ns.Version), + }, nil +} + +// ValidateBlobTx performs stateless checks on the BlobTx to ensure that the +// blobs attached to the transaction are valid. +func ValidateBlobTx(txcfg client.TxEncodingConfig, bTx *blob.BlobTx, subtreeRootThreshold int) error { + if bTx == nil { + return ErrNoBlobs + } + + sdkTx, err := txcfg.TxDecoder()(bTx.Tx) + if err != nil { + return err + } + + // TODO: remove this check once support for multiple sdk.Msgs in a BlobTx is + // supported. + msgs := sdkTx.GetMsgs() + if len(msgs) != 1 { + return ErrMultipleMsgsInBlobTx + } + msg := msgs[0] + msgPFB, ok := msg.(*MsgPayForBlobs) + if !ok { + return ErrNoPFB + } + err = msgPFB.ValidateBasic() + if err != nil { + return err + } + + // perform basic checks on the blobs + sizes := make([]uint32, len(bTx.Blobs)) + for i, pblob := range bTx.Blobs { + sizes[i] = uint32(len(pblob.Data)) + } + err = ValidateBlobs(bTx.Blobs...) + if err != nil { + return err + } + + // check that the sizes in the blobTx match the sizes in the msgPFB + if !equalSlices(sizes, msgPFB.BlobSizes) { + return ErrBlobSizeMismatch.Wrapf("actual %v declared %v", sizes, msgPFB.BlobSizes) + } + + for i, ns := range msgPFB.Namespaces { + msgPFBNamespace, err := appns.From(ns) + if err != nil { + return err + } + + // this not only checks that the pfb namespaces match the ones in the blobs + // but that the namespace version and namespace id are valid + blobNamespace, err := appns.New(uint8(bTx.Blobs[i].NamespaceVersion), bTx.Blobs[i].NamespaceId) + if err != nil { + return err + } + + if !bytes.Equal(blobNamespace.Bytes(), msgPFBNamespace.Bytes()) { + return ErrNamespaceMismatch.Wrapf("%v %v", blobNamespace.Bytes(), msgPFB.Namespaces[i]) + } + } + + // verify that the commitment of the blob matches that of the msgPFB + for i, commitment := range msgPFB.ShareCommitments { + calculatedCommit, err := inclusion.CreateCommitment(bTx.Blobs[i], merkle.HashFromByteSlices, subtreeRootThreshold) + if err != nil { + return ErrCalculateCommitment + } + if !bytes.Equal(calculatedCommit, commitment) { + return ErrInvalidShareCommitment + } + } + + return nil +} + +func BlobTxSharesUsed(btx tmproto.BlobTx) int { + sharesUsed := 0 + for _, blob := range btx.Blobs { + sharesUsed += shares.SparseSharesNeeded(uint32(len(blob.Data))) + } + return sharesUsed +} + +func equalSlices[T comparable](a, b []T) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if a[i] != b[i] { + return false + } + } + return true +} diff --git a/x/blob/types/blob_tx_test.go b/x/blob/types/blob_tx_test.go new file mode 100644 index 0000000000..1964edde33 --- /dev/null +++ b/x/blob/types/blob_tx_test.go @@ -0,0 +1,248 @@ +package types_test + +import ( + "bytes" + "testing" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" + "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/blob" + "github.com/celestiaorg/go-square/inclusion" + "github.com/celestiaorg/go-square/merkle" + "github.com/celestiaorg/go-square/namespace" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + tmrand "github.com/tendermint/tendermint/libs/rand" +) + +func TestNewBlob(t *testing.T) { + rawBlob := []byte{1} + validBlob, err := types.NewBlob(namespace.RandomBlobNamespace(), rawBlob, appconsts.ShareVersionZero) + require.NoError(t, err) + require.Equal(t, validBlob.Data, rawBlob) + + _, err = types.NewBlob(namespace.TxNamespace, rawBlob, appconsts.ShareVersionZero) + require.Error(t, err) + + _, err = types.NewBlob(namespace.RandomBlobNamespace(), []byte{}, appconsts.ShareVersionZero) + require.Error(t, err) +} + +func TestValidateBlobTx(t *testing.T) { + encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) + signer, err := testnode.NewOfflineSigner() + require.NoError(t, err) + ns1 := namespace.MustNewV0(bytes.Repeat([]byte{0x01}, namespace.NamespaceVersionZeroIDSize)) + acc := signer.Account(testfactory.TestAccName) + require.NotNil(t, acc) + addr := acc.Address() + + type test struct { + name string + getTx func() *blob.BlobTx + expectedErr error + } + + validRawBtx := func() []byte { + btx := blobfactory.RandBlobTxsWithNamespacesAndSigner( + signer, + []namespace.Namespace{ns1}, + []int{10}, + )[0] + return btx + } + + tests := []test{ + { + name: "normal transaction", + getTx: func() *blob.BlobTx { + rawBtx := validRawBtx() + btx, _ := blob.UnmarshalBlobTx(rawBtx) + return btx + }, + expectedErr: nil, + }, + { + name: "invalid transaction, mismatched namespace", + getTx: func() *blob.BlobTx { + rawBtx := validRawBtx() + btx, _ := blob.UnmarshalBlobTx(rawBtx) + btx.Blobs[0].NamespaceId = namespace.RandomBlobNamespace().ID + return btx + }, + expectedErr: types.ErrNamespaceMismatch, + }, + { + name: "invalid transaction, no pfb", + getTx: func() *blob.BlobTx { + sendTx := blobfactory.GenerateManyRawSendTxs(signer, 1) + b, err := types.NewBlob(namespace.RandomBlobNamespace(), tmrand.Bytes(100), appconsts.ShareVersionZero) + require.NoError(t, err) + return &blob.BlobTx{ + Tx: sendTx[0], + Blobs: []*blob.Blob{b}, + } + }, + expectedErr: types.ErrNoPFB, + }, + { + name: "mismatched number of pfbs and blobs", + getTx: func() *blob.BlobTx { + rawBtx := validRawBtx() + btx, _ := blob.UnmarshalBlobTx(rawBtx) + blob, err := types.NewBlob(namespace.RandomBlobNamespace(), tmrand.Bytes(100), appconsts.ShareVersionZero) + require.NoError(t, err) + btx.Blobs = append(btx.Blobs, blob) + return btx + }, + expectedErr: types.ErrBlobSizeMismatch, + }, + { + name: "invalid share commitment", + getTx: func() *blob.BlobTx { + b, err := types.NewBlob(namespace.RandomBlobNamespace(), tmrand.Bytes(100), appconsts.ShareVersionZero) + require.NoError(t, err) + msg, err := types.NewMsgPayForBlobs( + addr.String(), + appconsts.LatestVersion, + b, + ) + require.NoError(t, err) + + badCommit, err := inclusion.CreateCommitment( + &blob.Blob{ + NamespaceVersion: uint32(namespace.RandomBlobNamespace().Version), + NamespaceId: namespace.RandomBlobNamespace().ID, + Data: tmrand.Bytes(99), + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + merkle.HashFromByteSlices, + appconsts.DefaultSubtreeRootThreshold, + ) + require.NoError(t, err) + + msg.ShareCommitments[0] = badCommit + + rawTx, err := signer.CreateTx([]sdk.Msg{msg}) + require.NoError(t, err) + + btx := &blob.BlobTx{ + Tx: rawTx, + Blobs: []*blob.Blob{b}, + } + return btx + }, + expectedErr: types.ErrInvalidShareCommitment, + }, + { + name: "complex transaction with one send and one pfb", + getTx: func() *blob.BlobTx { + sendMsg := banktypes.NewMsgSend(addr, addr, sdk.NewCoins(sdk.NewCoin(app.BondDenom, sdk.NewInt(10)))) + tx := blobfactory.ComplexBlobTxWithOtherMsgs( + t, + tmrand.NewRand(), + signer, + sendMsg, + ) + btx, isBlob := blob.UnmarshalBlobTx(tx) + require.True(t, isBlob) + return btx + }, + expectedErr: types.ErrMultipleMsgsInBlobTx, + }, + { + name: "only send tx", + getTx: func() *blob.BlobTx { + sendtx := blobfactory.GenerateManyRawSendTxs(signer, 1)[0] + return &blob.BlobTx{ + Tx: sendtx, + } + }, + expectedErr: types.ErrNoPFB, + }, + { + name: "normal transaction with two blobs w/ different namespaces", + getTx: func() *blob.BlobTx { + rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), + blobfactory.RandBlobsWithNamespace( + []namespace.Namespace{namespace.RandomBlobNamespace(), namespace.RandomBlobNamespace()}, + []int{100, 100})) + require.NoError(t, err) + btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) + require.True(t, isBlobTx) + return btx + }, + expectedErr: nil, + }, + { + name: "normal transaction with two large blobs w/ different namespaces", + getTx: func() *blob.BlobTx { + rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), + blobfactory.RandBlobsWithNamespace( + []namespace.Namespace{namespace.RandomBlobNamespace(), namespace.RandomBlobNamespace()}, + []int{100000, 1000000}), + ) + require.NoError(t, err) + btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) + require.True(t, isBlobTx) + return btx + }, + expectedErr: nil, + }, + { + name: "normal transaction with two blobs w/ same namespace", + getTx: func() *blob.BlobTx { + ns := namespace.RandomBlobNamespace() + rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), + blobfactory.RandBlobsWithNamespace( + []namespace.Namespace{ns, ns}, + []int{100, 100}), + ) + require.NoError(t, err) + btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) + require.True(t, isBlobTx) + return btx + }, + expectedErr: nil, + }, + { + name: "normal transaction with one hundred blobs of the same namespace", + getTx: func() *blob.BlobTx { + count := 100 + ns := namespace.RandomBlobNamespace() + sizes := make([]int, count) + namespaces := make([]namespace.Namespace, count) + for i := 0; i < count; i++ { + sizes[i] = 100 + namespaces[i] = ns + } + rawBtx, _, err := signer.CreatePayForBlobs(acc.Name(), + blobfactory.RandBlobsWithNamespace( + namespaces, + sizes, + )) + require.NoError(t, err) + btx, isBlobTx := blob.UnmarshalBlobTx(rawBtx) + require.True(t, isBlobTx) + return btx + }, + expectedErr: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := types.ValidateBlobTx(encCfg.TxConfig, tt.getTx(), appconsts.DefaultSubtreeRootThreshold) + if tt.expectedErr != nil { + assert.ErrorIs(t, err, tt.expectedErr, tt.name) + } + }) + } +} diff --git a/x/blob/types/codec.go b/x/blob/types/codec.go new file mode 100644 index 0000000000..ad1b11d783 --- /dev/null +++ b/x/blob/types/codec.go @@ -0,0 +1,33 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" +) + +var ModuleCdc = codec.NewProtoCodec(codectypes.NewInterfaceRegistry()) + +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(&MsgPayForBlobs{}, URLMsgPayForBlobs, nil) +} + +func RegisterInterfaces(registry codectypes.InterfaceRegistry) { + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgPayForBlobs{}, + ) + + registry.RegisterInterface( + "cosmos.auth.v1beta1.BaseAccount", + (*authtypes.AccountI)(nil), + ) + + registry.RegisterImplementations( + (*authtypes.AccountI)(nil), + &authtypes.BaseAccount{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} diff --git a/x/blob/types/errors.go b/x/blob/types/errors.go new file mode 100644 index 0000000000..fd97105532 --- /dev/null +++ b/x/blob/types/errors.go @@ -0,0 +1,39 @@ +package types + +// DONTCOVER + +import ( + "cosmossdk.io/errors" +) + +var ( + ErrReservedNamespace = errors.Register(ModuleName, 11110, "cannot use reserved namespace IDs") + ErrInvalidNamespaceLen = errors.Register(ModuleName, 11111, "invalid namespace length") + ErrInvalidDataSize = errors.Register(ModuleName, 11112, "data must be multiple of shareSize") + ErrBlobSizeMismatch = errors.Register(ModuleName, 11113, "actual blob size differs from that specified in the MsgPayForBlob") + ErrCommittedSquareSizeNotPowOf2 = errors.Register(ModuleName, 11114, "committed to invalid square size: must be power of two") + ErrCalculateCommitment = errors.Register(ModuleName, 11115, "unexpected error calculating commitment for share") + ErrInvalidShareCommitment = errors.Register(ModuleName, 11116, "invalid commitment for share") + ErrParitySharesNamespace = errors.Register(ModuleName, 11117, "cannot use parity shares namespace ID") + ErrTailPaddingNamespace = errors.Register(ModuleName, 11118, "cannot use tail padding namespace ID") + ErrTxNamespace = errors.Register(ModuleName, 11119, "cannot use transaction namespace ID") + ErrInvalidShareCommitments = errors.Register(ModuleName, 11122, "invalid share commitments: all relevant square sizes must be committed to") + ErrUnsupportedShareVersion = errors.Register(ModuleName, 11123, "unsupported share version") + ErrZeroBlobSize = errors.Register(ModuleName, 11124, "cannot use zero blob size") + ErrMismatchedNumberOfPFBorBlob = errors.Register(ModuleName, 11125, "mismatched number of blobs per MsgPayForBlob") + ErrNoPFB = errors.Register(ModuleName, 11126, "no MsgPayForBlobs found in blob transaction") + ErrNamespaceMismatch = errors.Register(ModuleName, 11127, "namespace of blob and its respective MsgPayForBlobs differ") + ErrProtoParsing = errors.Register(ModuleName, 11128, "failure to parse a transaction from its protobuf representation") + ErrMultipleMsgsInBlobTx = errors.Register(ModuleName, 11129, "not yet supported: multiple sdk.Msgs found in BlobTx") + ErrMismatchedNumberOfPFBComponent = errors.Register(ModuleName, 11130, "number of each component in a MsgPayForBlobs must be identical") + ErrNoBlobs = errors.Register(ModuleName, 11131, "no blobs provided") + ErrNoNamespaces = errors.Register(ModuleName, 11132, "no namespaces provided") + ErrNoShareVersions = errors.Register(ModuleName, 11133, "no share versions provided") + ErrNoBlobSizes = errors.Register(ModuleName, 11134, "no blob sizes provided") + ErrNoShareCommitments = errors.Register(ModuleName, 11135, "no share commitments provided") + ErrInvalidNamespace = errors.Register(ModuleName, 11136, "invalid namespace") + ErrInvalidNamespaceVersion = errors.Register(ModuleName, 11137, "invalid namespace version") + // ErrTotalBlobSize is deprecated, use ErrBlobsTooLarge instead. + ErrTotalBlobSizeTooLarge = errors.Register(ModuleName, 11138, "total blob size too large") + ErrBlobsTooLarge = errors.Register(ModuleName, 11139, "blob(s) too large") +) diff --git a/x/blob/types/estimate_gas_test.go b/x/blob/types/estimate_gas_test.go new file mode 100644 index 0000000000..bfeaec94f9 --- /dev/null +++ b/x/blob/types/estimate_gas_test.go @@ -0,0 +1,110 @@ +package types_test + +import ( + "fmt" + "testing" + + "github.com/celestiaorg/celestia-app/v2/app" + "github.com/celestiaorg/celestia-app/v2/app/encoding" + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v2/pkg/user" + testutil "github.com/celestiaorg/celestia-app/v2/test/util" + "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" + "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" + "github.com/celestiaorg/go-square/blob" + "github.com/stretchr/testify/require" + + blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + abci "github.com/tendermint/tendermint/abci/types" + tmrand "github.com/tendermint/tendermint/libs/rand" +) + +func TestPFBGasEstimation(t *testing.T) { + encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) + rand := tmrand.NewRand() + + testCases := []struct { + blobSizes []int + }{ + {blobSizes: []int{1}}, + {blobSizes: []int{100, 100, 100}}, + {blobSizes: []int{1020, 2099, 96, 4087, 500}}, + {blobSizes: []int{12074}}, + {blobSizes: []int{36908}}, + {blobSizes: []int{100, 100, 100, 1000, 1000, 10000, 100, 100, 100, 100}}, + {blobSizes: []int{1099704}}, + } + for idx, tc := range testCases { + t.Run(fmt.Sprintf("case %d", idx), func(t *testing.T) { + accnts := testfactory.GenerateAccounts(1) + testApp, kr := testutil.SetupTestAppWithGenesisValSet(app.DefaultInitialConsensusParams(), accnts...) + signer, err := user.NewSigner(kr, encCfg.TxConfig, testutil.ChainID, appconsts.LatestVersion, user.NewAccount(accnts[0], 1, 0)) + require.NoError(t, err) + blobs := blobfactory.ManyRandBlobs(rand, tc.blobSizes...) + gas := blobtypes.DefaultEstimateGas(toUint32(tc.blobSizes)) + tx, _, err := signer.CreatePayForBlobs(accnts[0], blobs, user.SetGasLimitAndGasPrice(gas, appconsts.DefaultMinGasPrice)) + require.NoError(t, err) + blobTx, ok := blob.UnmarshalBlobTx(tx) + require.True(t, ok) + resp := testApp.DeliverTx(abci.RequestDeliverTx{ + Tx: blobTx.Tx, + }) + require.EqualValues(t, 0, resp.Code, resp.Log) + require.Less(t, resp.GasUsed, int64(gas)) + }) + } +} + +func toUint32(arr []int) []uint32 { + res := make([]uint32, len(arr)) + for i, v := range arr { + res[i] = uint32(v) + } + return res +} + +func FuzzPFBGasEstimation(f *testing.F) { + var ( + numBlobs = 3 + maxBlobSize = 418 + seed = int64(9001) + ) + encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) + f.Add(numBlobs, maxBlobSize, seed) + f.Fuzz(func(t *testing.T, numBlobs, maxBlobSize int, seed int64) { + if numBlobs <= 0 || maxBlobSize <= 0 { + t.Skip() + } + rand := tmrand.NewRand() + rand.Seed(seed) + blobSizes := randBlobSize(rand, numBlobs, maxBlobSize) + + accnts := testfactory.GenerateAccounts(1) + testApp, kr := testutil.SetupTestAppWithGenesisValSet(app.DefaultConsensusParams(), accnts...) + signer, err := user.NewSigner(kr, encCfg.TxConfig, testutil.ChainID, appconsts.LatestVersion, user.NewAccount(accnts[0], 1, 0)) + require.NoError(t, err) + blobs := blobfactory.ManyRandBlobs(rand, blobSizes...) + gas := blobtypes.DefaultEstimateGas(toUint32(blobSizes)) + tx, _, err := signer.CreatePayForBlobs(accnts[0], blobs, user.SetGasLimitAndGasPrice(gas, appconsts.DefaultMinGasPrice)) + require.NoError(t, err) + blobTx, ok := blob.UnmarshalBlobTx(tx) + require.True(t, ok) + resp := testApp.DeliverTx(abci.RequestDeliverTx{ + Tx: blobTx.Tx, + }) + require.EqualValues(t, 0, resp.Code, resp.Log) + require.Less(t, resp.GasUsed, int64(gas)) + }) +} + +func randBlobSize(rand *tmrand.Rand, numBlobs, maxBlobSize int) []int { + res := make([]int, numBlobs) + for i := 0; i < numBlobs; i++ { + if maxBlobSize == 1 { + res[i] = 1 + continue + } + res[i] = rand.Intn(maxBlobSize-1) + 1 + } + return res +} diff --git a/x/blob/types/event.pb.go b/x/blob/types/event.pb.go new file mode 100644 index 0000000000..3f6b1f2019 --- /dev/null +++ b/x/blob/types/event.pb.go @@ -0,0 +1,487 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: celestia/blob/v1/event.proto + +package types + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// EventPayForBlobs defines an event that is emitted after a pay for blob has +// been processed. +type EventPayForBlobs struct { + Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` + BlobSizes []uint32 `protobuf:"varint,2,rep,packed,name=blob_sizes,json=blobSizes,proto3" json:"blob_sizes,omitempty"` + // namespaces is a list of namespaces that the blobs in blob_sizes belong to. + // A namespace has length of 29 bytes where the first byte is the + // namespaceVersion and the subsequent 28 bytes are the namespaceID. + Namespaces [][]byte `protobuf:"bytes,3,rep,name=namespaces,proto3" json:"namespaces,omitempty"` +} + +func (m *EventPayForBlobs) Reset() { *m = EventPayForBlobs{} } +func (m *EventPayForBlobs) String() string { return proto.CompactTextString(m) } +func (*EventPayForBlobs) ProtoMessage() {} +func (*EventPayForBlobs) Descriptor() ([]byte, []int) { + return fileDescriptor_9d90f0a63835a06e, []int{0} +} +func (m *EventPayForBlobs) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EventPayForBlobs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EventPayForBlobs.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *EventPayForBlobs) XXX_Merge(src proto.Message) { + xxx_messageInfo_EventPayForBlobs.Merge(m, src) +} +func (m *EventPayForBlobs) XXX_Size() int { + return m.Size() +} +func (m *EventPayForBlobs) XXX_DiscardUnknown() { + xxx_messageInfo_EventPayForBlobs.DiscardUnknown(m) +} + +var xxx_messageInfo_EventPayForBlobs proto.InternalMessageInfo + +func (m *EventPayForBlobs) GetSigner() string { + if m != nil { + return m.Signer + } + return "" +} + +func (m *EventPayForBlobs) GetBlobSizes() []uint32 { + if m != nil { + return m.BlobSizes + } + return nil +} + +func (m *EventPayForBlobs) GetNamespaces() [][]byte { + if m != nil { + return m.Namespaces + } + return nil +} + +func init() { + proto.RegisterType((*EventPayForBlobs)(nil), "celestia.blob.v1.EventPayForBlobs") +} + +func init() { proto.RegisterFile("celestia/blob/v1/event.proto", fileDescriptor_9d90f0a63835a06e) } + +var fileDescriptor_9d90f0a63835a06e = []byte{ + // 214 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x2d, 0x4b, + 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, + 0xca, 0x0c, 0x95, 0x32, 0xb9, 0x04, 0x5c, 0x41, 0x0a, 0x02, 0x12, 0x2b, 0xdd, 0xf2, 0x8b, 0x9c, + 0x72, 0xf2, 0x93, 0x8a, 0x85, 0xc4, 0xb8, 0xd8, 0x8a, 0x33, 0xd3, 0xf3, 0x52, 0x8b, 0x24, 0x18, + 0x15, 0x18, 0x35, 0x38, 0x83, 0xa0, 0x3c, 0x21, 0x59, 0x2e, 0x2e, 0x90, 0xb6, 0xf8, 0xe2, 0xcc, + 0xaa, 0xd4, 0x62, 0x09, 0x26, 0x05, 0x66, 0x0d, 0xde, 0x20, 0x4e, 0x90, 0x48, 0x30, 0x48, 0x40, + 0x48, 0x8e, 0x8b, 0x2b, 0x2f, 0x31, 0x37, 0xb5, 0xb8, 0x20, 0x31, 0x39, 0xb5, 0x58, 0x82, 0x59, + 0x81, 0x59, 0x83, 0x27, 0x08, 0x49, 0xc4, 0xc9, 0xeb, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, + 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, + 0xe5, 0x18, 0xa2, 0x0c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x61, + 0x2e, 0xcc, 0x2f, 0x4a, 0x87, 0xb3, 0x75, 0x13, 0x0b, 0x0a, 0xf4, 0x2b, 0x20, 0x3e, 0x2a, 0xa9, + 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xfb, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x7b, + 0x9e, 0x60, 0xef, 0x00, 0x00, 0x00, +} + +func (m *EventPayForBlobs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *EventPayForBlobs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EventPayForBlobs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Namespaces) > 0 { + for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Namespaces[iNdEx]) + copy(dAtA[i:], m.Namespaces[iNdEx]) + i = encodeVarintEvent(dAtA, i, uint64(len(m.Namespaces[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.BlobSizes) > 0 { + dAtA2 := make([]byte, len(m.BlobSizes)*10) + var j1 int + for _, num := range m.BlobSizes { + for num >= 1<<7 { + dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j1++ + } + dAtA2[j1] = uint8(num) + j1++ + } + i -= j1 + copy(dAtA[i:], dAtA2[:j1]) + i = encodeVarintEvent(dAtA, i, uint64(j1)) + i-- + dAtA[i] = 0x12 + } + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintEvent(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintEvent(dAtA []byte, offset int, v uint64) int { + offset -= sovEvent(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *EventPayForBlobs) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovEvent(uint64(l)) + } + if len(m.BlobSizes) > 0 { + l = 0 + for _, e := range m.BlobSizes { + l += sovEvent(uint64(e)) + } + n += 1 + sovEvent(uint64(l)) + l + } + if len(m.Namespaces) > 0 { + for _, b := range m.Namespaces { + l = len(b) + n += 1 + l + sovEvent(uint64(l)) + } + } + return n +} + +func sovEvent(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozEvent(x uint64) (n int) { + return sovEvent(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *EventPayForBlobs) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: EventPayForBlobs: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EventPayForBlobs: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvent + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvent + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType == 0 { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BlobSizes = append(m.BlobSizes, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthEvent + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthEvent + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.BlobSizes) == 0 { + m.BlobSizes = make([]uint32, 0, elementCount) + } + for iNdEx < postIndex { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BlobSizes = append(m.BlobSizes, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field BlobSizes", wireType) + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvent + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthEvent + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthEvent + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespaces = append(m.Namespaces, make([]byte, postIndex-iNdEx)) + copy(m.Namespaces[len(m.Namespaces)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipEvent(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvent + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipEvent(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowEvent + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowEvent + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowEvent + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthEvent + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupEvent + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthEvent + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthEvent = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowEvent = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupEvent = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/blob/types/events.go b/x/blob/types/events.go new file mode 100644 index 0000000000..9537ba5a3f --- /dev/null +++ b/x/blob/types/events.go @@ -0,0 +1,16 @@ +package types + +import ( + "github.com/cosmos/gogoproto/proto" +) + +var EventTypePayForBlob = proto.MessageName(&EventPayForBlobs{}) + +// NewPayForBlobsEvent returns a new EventPayForBlobs +func NewPayForBlobsEvent(signer string, blobSizes []uint32, namespaces [][]byte) *EventPayForBlobs { + return &EventPayForBlobs{ + Signer: signer, + BlobSizes: blobSizes, + Namespaces: namespaces, + } +} diff --git a/x/blob/types/genesis.go b/x/blob/types/genesis.go new file mode 100644 index 0000000000..0785224ae9 --- /dev/null +++ b/x/blob/types/genesis.go @@ -0,0 +1,17 @@ +package types + +// DefaultIndex is the default capability global index +const DefaultIndex uint64 = 1 + +// DefaultGenesis returns the default Capability genesis state +func DefaultGenesis() *GenesisState { + return &GenesisState{ + Params: DefaultParams(), + } +} + +// Validate performs basic genesis state validation returning an error upon any +// failure. +func (gs GenesisState) Validate() error { + return gs.Params.Validate() +} diff --git a/x/blob/types/genesis.pb.go b/x/blob/types/genesis.pb.go new file mode 100644 index 0000000000..1811495e62 --- /dev/null +++ b/x/blob/types/genesis.pb.go @@ -0,0 +1,321 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: celestia/blob/v1/genesis.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// GenesisState defines the capability module's genesis state. +type GenesisState struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_c0b3a6e29bb6777c, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*GenesisState)(nil), "celestia.blob.v1.GenesisState") +} + +func init() { proto.RegisterFile("celestia/blob/v1/genesis.proto", fileDescriptor_c0b3a6e29bb6777c) } + +var fileDescriptor_c0b3a6e29bb6777c = []byte{ + // 198 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0x4e, 0xcd, 0x49, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, + 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xeb, 0x81, + 0xe4, 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, + 0x9d, 0x94, 0x2c, 0x86, 0x39, 0x05, 0x89, 0x45, 0x89, 0xb9, 0x50, 0x63, 0x94, 0xdc, 0xb8, 0x78, + 0xdc, 0x21, 0xe6, 0x06, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x99, 0x71, 0xb1, 0x41, 0xe4, 0x25, 0x18, + 0x15, 0x18, 0x35, 0xb8, 0x8d, 0x24, 0xf4, 0xd0, 0xed, 0xd1, 0x0b, 0x00, 0xcb, 0x3b, 0xb1, 0x9c, + 0xb8, 0x27, 0xcf, 0x10, 0x04, 0x55, 0xed, 0xe4, 0x75, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, + 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, + 0x72, 0x0c, 0x51, 0x06, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x30, + 0xb3, 0xf2, 0x8b, 0xd2, 0xe1, 0x6c, 0xdd, 0xc4, 0x82, 0x02, 0xfd, 0x0a, 0x88, 0xeb, 0x4a, 0x2a, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x4e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x63, + 0x14, 0xe2, 0x03, 0x01, 0x00, 0x00, +} + +func (m *GenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { + offset -= sovGenesis(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovGenesis(uint64(l)) + return n +} + +func sovGenesis(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenesis(x uint64) (n int) { + return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenesis(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenesis + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenesis + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenesis + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenesis + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/blob/types/genesis_test.go b/x/blob/types/genesis_test.go new file mode 100644 index 0000000000..63359d58b3 --- /dev/null +++ b/x/blob/types/genesis_test.go @@ -0,0 +1,52 @@ +package types_test + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/stretchr/testify/require" +) + +func TestGenesisState_Validate(t *testing.T) { + for _, tc := range []struct { + desc string + genState *types.GenesisState + valid bool + }{ + { + desc: "default is valid", + genState: types.DefaultGenesis(), + valid: true, + }, + { + desc: "valid genesis state", + genState: &types.GenesisState{ + Params: types.Params{ + GasPerBlobByte: 20, + GovMaxSquareSize: uint64(appconsts.DefaultSquareSizeUpperBound), + }, + }, + valid: true, + }, + { + desc: "invalid genesis state because GovMaxSquareSize", + genState: &types.GenesisState{ + Params: types.Params{ + GasPerBlobByte: 20, + GovMaxSquareSize: uint64(appconsts.DefaultSquareSizeUpperBound + 1), + }, + }, + valid: false, + }, + } { + t.Run(tc.desc, func(t *testing.T) { + err := tc.genState.Validate() + if tc.valid { + require.NoError(t, err) + } else { + require.Error(t, err) + } + }) + } +} diff --git a/x/blob/types/keys.go b/x/blob/types/keys.go new file mode 100644 index 0000000000..e7a4aa470c --- /dev/null +++ b/x/blob/types/keys.go @@ -0,0 +1,22 @@ +package types + +const ( + // ModuleName defines the module name + ModuleName = "blob" + + // StoreKey defines the primary module store key + StoreKey = ModuleName + + // RouterKey is the message route for slashing + RouterKey = ModuleName + + // QuerierRoute defines the module's query routing key + QuerierRoute = ModuleName + + // MemStoreKey defines the in-memory store key + MemStoreKey = "mem_blob" +) + +func KeyPrefix(p string) []byte { + return []byte(p) +} diff --git a/x/blob/types/params.go b/x/blob/types/params.go new file mode 100644 index 0000000000..3fc2bb724d --- /dev/null +++ b/x/blob/types/params.go @@ -0,0 +1,95 @@ +package types + +import ( + "fmt" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/go-square/shares" + paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "gopkg.in/yaml.v2" +) + +var _ paramtypes.ParamSet = (*Params)(nil) + +var ( + KeyGasPerBlobByte = []byte("GasPerBlobByte") + DefaultGasPerBlobByte uint32 = appconsts.DefaultGasPerBlobByte + KeyGovMaxSquareSize = []byte("GovMaxSquareSize") + DefaultGovMaxSquareSize uint64 = appconsts.DefaultGovMaxSquareSize +) + +// ParamKeyTable returns the param key table for the blob module +func ParamKeyTable() paramtypes.KeyTable { + return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) +} + +// NewParams creates a new Params instance +func NewParams(gasPerBlobByte uint32, govMaxSquareSize uint64) Params { + return Params{ + GasPerBlobByte: gasPerBlobByte, + GovMaxSquareSize: govMaxSquareSize, + } +} + +// DefaultParams returns a default set of parameters +func DefaultParams() Params { + return NewParams(DefaultGasPerBlobByte, appconsts.DefaultGovMaxSquareSize) +} + +// ParamSetPairs gets the list of param key-value pairs +func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { + return paramtypes.ParamSetPairs{ + paramtypes.NewParamSetPair(KeyGasPerBlobByte, &p.GasPerBlobByte, validateGasPerBlobByte), + paramtypes.NewParamSetPair(KeyGovMaxSquareSize, &p.GovMaxSquareSize, validateGovMaxSquareSize), + } +} + +// Validate validates the set of params +func (p Params) Validate() error { + err := validateGasPerBlobByte(p.GasPerBlobByte) + if err != nil { + return err + } + return validateGovMaxSquareSize(p.GovMaxSquareSize) +} + +// String implements the Stringer interface. +func (p Params) String() string { + out, _ := yaml.Marshal(p) + return string(out) +} + +// validateGasPerBlobByte validates the GasPerBlobByte param +func validateGasPerBlobByte(v interface{}) error { + gasPerBlobByte, ok := v.(uint32) + if !ok { + return fmt.Errorf("invalid parameter type: %T", v) + } + + if gasPerBlobByte == 0 { + return fmt.Errorf("gas per blob byte cannot be 0") + } + + return nil +} + +// validateGovMaxSquareSize validates the GovMaxSquareSize param +func validateGovMaxSquareSize(v interface{}) error { + govMaxSquareSize, ok := v.(uint64) + if !ok { + return fmt.Errorf("invalid parameter type: %T", v) + } + + if govMaxSquareSize == 0 { + return fmt.Errorf("gov max square size cannot be zero") + } + + if !shares.IsPowerOfTwo(govMaxSquareSize) { + return fmt.Errorf( + "gov max square size must be a power of two: %d", + govMaxSquareSize, + ) + } + + return nil +} diff --git a/x/blob/types/params.pb.go b/x/blob/types/params.pb.go new file mode 100644 index 0000000000..ba0f2b2ff3 --- /dev/null +++ b/x/blob/types/params.pb.go @@ -0,0 +1,341 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: celestia/blob/v1/params.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// Params defines the parameters for the module. +type Params struct { + GasPerBlobByte uint32 `protobuf:"varint,1,opt,name=gas_per_blob_byte,json=gasPerBlobByte,proto3" json:"gas_per_blob_byte,omitempty" yaml:"gas_per_blob_byte"` + GovMaxSquareSize uint64 `protobuf:"varint,2,opt,name=gov_max_square_size,json=govMaxSquareSize,proto3" json:"gov_max_square_size,omitempty" yaml:"gov_max_square_size"` +} + +func (m *Params) Reset() { *m = Params{} } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_2145b82d3e5371c6, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +func (m *Params) GetGasPerBlobByte() uint32 { + if m != nil { + return m.GasPerBlobByte + } + return 0 +} + +func (m *Params) GetGovMaxSquareSize() uint64 { + if m != nil { + return m.GovMaxSquareSize + } + return 0 +} + +func init() { + proto.RegisterType((*Params)(nil), "celestia.blob.v1.Params") +} + +func init() { proto.RegisterFile("celestia/blob/v1/params.proto", fileDescriptor_2145b82d3e5371c6) } + +var fileDescriptor_2145b82d3e5371c6 = []byte{ + // 270 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x4e, 0xcd, 0x49, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x48, 0x2c, + 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0x49, 0xeb, 0x81, 0xa4, + 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, + 0xd2, 0x32, 0x46, 0x2e, 0xb6, 0x00, 0xb0, 0x46, 0x21, 0x77, 0x2e, 0xc1, 0xf4, 0xc4, 0xe2, 0xf8, + 0x82, 0xd4, 0xa2, 0x78, 0x90, 0x9e, 0xf8, 0xa4, 0xca, 0x92, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, + 0x5e, 0x27, 0x99, 0x4f, 0xf7, 0xe4, 0x25, 0x2a, 0x13, 0x73, 0x73, 0xac, 0x94, 0x30, 0x94, 0x28, + 0x05, 0xf1, 0xa5, 0x27, 0x16, 0x07, 0xa4, 0x16, 0x39, 0xe5, 0xe4, 0x27, 0x39, 0x55, 0x96, 0xa4, + 0x0a, 0xf9, 0x72, 0x09, 0xa7, 0xe7, 0x97, 0xc5, 0xe7, 0x26, 0x56, 0xc4, 0x17, 0x17, 0x96, 0x26, + 0x16, 0xa5, 0xc6, 0x17, 0x67, 0x56, 0xa5, 0x4a, 0x30, 0x29, 0x30, 0x6a, 0xb0, 0x38, 0xc9, 0x7d, + 0xba, 0x27, 0x2f, 0x05, 0x35, 0x0a, 0x53, 0x91, 0x52, 0x90, 0x40, 0x7a, 0x7e, 0x99, 0x6f, 0x62, + 0x45, 0x30, 0x58, 0x2c, 0x38, 0xb3, 0x2a, 0xd5, 0x8a, 0x65, 0xc6, 0x02, 0x79, 0x06, 0x27, 0xaf, + 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, + 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x48, 0xcf, 0x2c, 0xc9, 0x28, + 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xf9, 0x3a, 0xbf, 0x28, 0x1d, 0xce, 0xd6, 0x4d, 0x2c, + 0x28, 0xd0, 0xaf, 0x80, 0x04, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0xef, 0xc6, + 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x2d, 0x7d, 0x23, 0x44, 0x01, 0x00, 0x00, +} + +func (m *Params) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.GovMaxSquareSize != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.GovMaxSquareSize)) + i-- + dAtA[i] = 0x10 + } + if m.GasPerBlobByte != 0 { + i = encodeVarintParams(dAtA, i, uint64(m.GasPerBlobByte)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func encodeVarintParams(dAtA []byte, offset int, v uint64) int { + offset -= sovParams(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.GasPerBlobByte != 0 { + n += 1 + sovParams(uint64(m.GasPerBlobByte)) + } + if m.GovMaxSquareSize != 0 { + n += 1 + sovParams(uint64(m.GovMaxSquareSize)) + } + return n +} + +func sovParams(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozParams(x uint64) (n int) { + return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Params) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Params: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GasPerBlobByte", wireType) + } + m.GasPerBlobByte = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GasPerBlobByte |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GovMaxSquareSize", wireType) + } + m.GovMaxSquareSize = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.GovMaxSquareSize |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipParams(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthParams + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipParams(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowParams + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthParams + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupParams + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthParams + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/blob/types/params_test.go b/x/blob/types/params_test.go new file mode 100644 index 0000000000..5e77f9bc7d --- /dev/null +++ b/x/blob/types/params_test.go @@ -0,0 +1,44 @@ +package types + +import ( + "testing" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/stretchr/testify/assert" +) + +func Test_validateGovMaxSquareSize(t *testing.T) { + type test struct { + name string + input interface{} + expectErr bool + } + tests := []test{ + { + name: "valid", + input: uint64(appconsts.DefaultGovMaxSquareSize), + expectErr: false, + }, + { + name: "not a power of 2", + input: uint64(appconsts.DefaultSquareSizeUpperBound - 1), + expectErr: true, + }, + { + name: "wrong type", + input: int64(appconsts.DefaultGovMaxSquareSize), + expectErr: true, + }, + { + name: "zero", + input: uint64(0), + expectErr: true, + }, + } + for _, tt := range tests { + err := validateGovMaxSquareSize(tt.input) + if tt.expectErr { + assert.Error(t, err) + } + } +} diff --git a/x/blob/types/payforblob.go b/x/blob/types/payforblob.go new file mode 100644 index 0000000000..2ea0e07834 --- /dev/null +++ b/x/blob/types/payforblob.go @@ -0,0 +1,258 @@ +package types + +import ( + fmt "fmt" + + "cosmossdk.io/errors" + + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/go-square/blob" + "github.com/celestiaorg/go-square/inclusion" + "github.com/celestiaorg/go-square/merkle" + appns "github.com/celestiaorg/go-square/namespace" + appshares "github.com/celestiaorg/go-square/shares" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx" + auth "github.com/cosmos/cosmos-sdk/x/auth/types" + "golang.org/x/exp/slices" +) + +const ( + URLMsgPayForBlobs = "/celestia.blob.v1.MsgPayForBlobs" + + // PFBGasFixedCost is a rough estimate for the "fixed cost" in the gas cost + // formula: gas cost = gas per byte * bytes per share * shares occupied by + // blob + "fixed cost". In this context, "fixed cost" accounts for the gas + // consumed by operations outside the blob's GasToConsume function (i.e. + // signature verification, tx size, read access to accounts). + // + // Since the gas cost of these operations is not easy to calculate, linear + // regression was performed on a set of observed data points to derive an + // approximate formula for gas cost. Assuming gas per byte = 8 and bytes per + // share = 512, we can solve for "fixed cost" and arrive at 65,000. gas cost + // = 8 * 512 * number of shares occupied by the blob + 65,000 has a + // correlation coefficient of 0.996. To be conservative, we round up "fixed + // cost" to 75,000 because the first tx always takes up 10,000 more gas than + // subsequent txs. + PFBGasFixedCost = 75000 + + // BytesPerBlobInfo is a rough estimation for the amount of extra bytes in + // information a blob adds to the size of the underlying transaction. + BytesPerBlobInfo = 70 +) + +// MsgPayForBlobs implements the `LegacyMsg` interface. +// See: https://github.com/cosmos/cosmos-sdk/blob/v0.46.15/docs/building-modules/messages-and-queries.md#legacy-amino-legacymsgs +var _ legacytx.LegacyMsg = &MsgPayForBlobs{} + +func NewMsgPayForBlobs(signer string, version uint64, blobs ...*blob.Blob) (*MsgPayForBlobs, error) { + err := ValidateBlobs(blobs...) + if err != nil { + return nil, err + } + commitments, err := inclusion.CreateCommitments(blobs, merkle.HashFromByteSlices, appconsts.SubtreeRootThreshold(version)) + if err != nil { + return nil, fmt.Errorf("creating commitments: %w", err) + } + + namespaceVersions, namespaceIDs, sizes, shareVersions := ExtractBlobComponents(blobs) + namespaces := []appns.Namespace{} + for i := range namespaceVersions { + namespace, err := appns.New(uint8(namespaceVersions[i]), namespaceIDs[i]) + if err != nil { + return nil, err + } + namespaces = append(namespaces, namespace) + } + + msg := &MsgPayForBlobs{ + Signer: signer, + Namespaces: namespacesToBytes(namespaces), + ShareCommitments: commitments, + BlobSizes: sizes, + ShareVersions: shareVersions, + } + + return msg, msg.ValidateBasic() +} + +func namespacesToBytes(namespaces []appns.Namespace) (result [][]byte) { + for _, namespace := range namespaces { + result = append(result, namespace.Bytes()) + } + return result +} + +// Route fulfills the legacytx.LegacyMsg interface +func (msg *MsgPayForBlobs) Route() string { return RouterKey } + +// Type fulfills the legacytx.LegacyMsg interface +func (msg *MsgPayForBlobs) Type() string { + return URLMsgPayForBlobs +} + +// ValidateBasic fulfills the sdk.Msg interface by performing stateless +// validity checks on the msg that also don't require having the actual blob(s) +func (msg *MsgPayForBlobs) ValidateBasic() error { + if len(msg.Namespaces) == 0 { + return ErrNoNamespaces + } + + if len(msg.ShareVersions) == 0 { + return ErrNoShareVersions + } + + if len(msg.BlobSizes) == 0 { + return ErrNoBlobSizes + } + + if len(msg.ShareCommitments) == 0 { + return ErrNoShareCommitments + } + + if len(msg.Namespaces) != len(msg.ShareVersions) || len(msg.Namespaces) != len(msg.BlobSizes) || len(msg.Namespaces) != len(msg.ShareCommitments) { + return ErrMismatchedNumberOfPFBComponent.Wrapf( + "namespaces %d blob sizes %d share versions %d share commitments %d", + len(msg.Namespaces), len(msg.BlobSizes), len(msg.ShareVersions), len(msg.ShareCommitments), + ) + } + + for _, namespace := range msg.Namespaces { + ns, err := appns.From(namespace) + if err != nil { + return errors.Wrap(ErrInvalidNamespace, err.Error()) + } + err = ValidateBlobNamespace(ns) + if err != nil { + return err + } + } + + for _, v := range msg.ShareVersions { + if v != uint32(appconsts.ShareVersionZero) { + return ErrUnsupportedShareVersion + } + } + + _, err := sdk.AccAddressFromBech32(msg.Signer) + if err != nil { + return err + } + + for _, commitment := range msg.ShareCommitments { + if len(commitment) != appconsts.HashLength() { + return ErrInvalidShareCommitment + } + } + + return nil +} + +func (msg *MsgPayForBlobs) Gas(gasPerByte uint32) uint64 { + return GasToConsume(msg.BlobSizes, gasPerByte) +} + +// GasToConsume works out the extra gas charged to pay for a set of blobs in a PFB. +// Note that transactions will incur other gas costs, such as the signature verification +// and reads to the user's account. +func GasToConsume(blobSizes []uint32, gasPerByte uint32) uint64 { + var totalSharesUsed uint64 + for _, size := range blobSizes { + totalSharesUsed += uint64(appshares.SparseSharesNeeded(size)) + } + + return totalSharesUsed * appconsts.ShareSize * uint64(gasPerByte) +} + +// EstimateGas estimates the total gas required to pay for a set of blobs in a PFB. +// It is based on a linear model that is dependent on the governance parameters: +// gasPerByte and txSizeCost. It assumes other variables are constant. This includes +// assuming the PFB is the only message in the transaction. +func EstimateGas(blobSizes []uint32, gasPerByte uint32, txSizeCost uint64) uint64 { + return GasToConsume(blobSizes, gasPerByte) + (txSizeCost * BytesPerBlobInfo * uint64(len(blobSizes))) + PFBGasFixedCost +} + +// DefaultEstimateGas runs EstimateGas with the system defaults. The network may change these values +// through governance, thus this function should predominantly be used in testing. +func DefaultEstimateGas(blobSizes []uint32) uint64 { + return EstimateGas(blobSizes, appconsts.DefaultGasPerBlobByte, auth.DefaultTxSizeCostPerByte) +} + +// ValidateBlobNamespace returns an error if the provided namespace is an +// invalid user-specifiable blob namespace (e.g. reserved, parity shares, or +// tail padding). +func ValidateBlobNamespace(ns appns.Namespace) error { + if ns.IsReserved() { + return ErrReservedNamespace + } + + if !slices.Contains(appns.SupportedBlobNamespaceVersions, ns.Version) { + return ErrInvalidNamespaceVersion + } + + return nil +} + +// GetSignBytes fulfills the legacytx.LegacyMsg interface by returning a deterministic set +// of bytes to sign over +func (msg *MsgPayForBlobs) GetSignBytes() []byte { + return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(msg)) +} + +// GetSigners fulfills the sdk.Msg interface by returning the signer's address +func (msg *MsgPayForBlobs) GetSigners() []sdk.AccAddress { + address, err := sdk.AccAddressFromBech32(msg.Signer) + if err != nil { + panic(err) + } + return []sdk.AccAddress{address} +} + +// ValidateBlobs performs basic checks over the components of one or more PFBs. +func ValidateBlobs(blobs ...*blob.Blob) error { + if len(blobs) == 0 { + return ErrNoBlobs + } + + for _, blob := range blobs { + if blob.NamespaceVersion > appconsts.NamespaceVersionMaxValue { + return fmt.Errorf("namespace version %d is too large", blob.NamespaceVersion) + } + ns, err := appns.New(uint8(blob.NamespaceVersion), blob.NamespaceId) + if err != nil { + return err + } + err = ValidateBlobNamespace(ns) + if err != nil { + return err + } + + if len(blob.Data) == 0 { + return ErrZeroBlobSize + } + + if !slices.Contains(appconsts.SupportedShareVersions, uint8(blob.ShareVersion)) { + return ErrUnsupportedShareVersion + } + } + + return nil +} + +// ExtractBlobComponents separates and returns the components of a slice of +// blobs. +func ExtractBlobComponents(pblobs []*blob.Blob) (namespaceVersions []uint32, namespaceIDs [][]byte, sizes []uint32, shareVersions []uint32) { + namespaceVersions = make([]uint32, len(pblobs)) + namespaceIDs = make([][]byte, len(pblobs)) + sizes = make([]uint32, len(pblobs)) + shareVersions = make([]uint32, len(pblobs)) + + for i, pblob := range pblobs { + namespaceVersions[i] = pblob.NamespaceVersion + namespaceIDs[i] = pblob.NamespaceId + sizes[i] = uint32(len(pblob.Data)) + shareVersions[i] = pblob.ShareVersion + } + + return namespaceVersions, namespaceIDs, sizes, shareVersions +} diff --git a/x/blob/types/payforblob_test.go b/x/blob/types/payforblob_test.go new file mode 100644 index 0000000000..b7aac4a4aa --- /dev/null +++ b/x/blob/types/payforblob_test.go @@ -0,0 +1,410 @@ +package types_test + +import ( + "bytes" + "testing" + + sdkerrors "cosmossdk.io/errors" + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/go-square/blob" + "github.com/celestiaorg/go-square/inclusion" + appns "github.com/celestiaorg/go-square/namespace" + shares "github.com/celestiaorg/go-square/shares" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/crypto/merkle" + tmrand "github.com/tendermint/tendermint/libs/rand" +) + +func TestMsgTypeURLParity(t *testing.T) { + require.Equal(t, sdk.MsgTypeURL(&types.MsgPayForBlobs{}), types.URLMsgPayForBlobs) +} + +func TestValidateBasic(t *testing.T) { + type test struct { + name string + msg *types.MsgPayForBlobs + wantErr *sdkerrors.Error + } + + validMsg := validMsgPayForBlobs(t) + + // MsgPayForBlobs that uses parity shares namespace + paritySharesMsg := validMsgPayForBlobs(t) + paritySharesMsg.Namespaces[0] = appns.ParitySharesNamespace.Bytes() + + // MsgPayForBlobs that uses tail padding namespace + tailPaddingMsg := validMsgPayForBlobs(t) + tailPaddingMsg.Namespaces[0] = appns.TailPaddingNamespace.Bytes() + + // MsgPayForBlobs that uses transaction namespace + txNamespaceMsg := validMsgPayForBlobs(t) + txNamespaceMsg.Namespaces[0] = appns.TxNamespace.Bytes() + + // MsgPayForBlobs that uses intermediateStateRoots namespace + intermediateStateRootsNamespaceMsg := validMsgPayForBlobs(t) + intermediateStateRootsNamespaceMsg.Namespaces[0] = appns.IntermediateStateRootsNamespace.Bytes() + + // MsgPayForBlobs that uses the max primary reserved namespace + maxReservedNamespaceMsg := validMsgPayForBlobs(t) + maxReservedNamespaceMsg.Namespaces[0] = appns.MaxPrimaryReservedNamespace.Bytes() + + // MsgPayForBlobs that has an empty share commitment + emptyShareCommitment := validMsgPayForBlobs(t) + emptyShareCommitment.ShareCommitments[0] = []byte{} + + // MsgPayForBlobs that has an invalid share commitment size + invalidShareCommitmentSize := validMsgPayForBlobs(t) + invalidShareCommitmentSize.ShareCommitments[0] = bytes.Repeat([]byte{0x1}, 31) + + // MsgPayForBlobs that has no namespaces + noNamespaces := validMsgPayForBlobs(t) + noNamespaces.Namespaces = [][]byte{} + + // MsgPayForBlobs that has no share versions + noShareVersions := validMsgPayForBlobs(t) + noShareVersions.ShareVersions = []uint32{} + + // MsgPayForBlobs that has no blob sizes + noBlobSizes := validMsgPayForBlobs(t) + noBlobSizes.BlobSizes = []uint32{} + + // MsgPayForBlobs that has no share commitments + noShareCommitments := validMsgPayForBlobs(t) + noShareCommitments.ShareCommitments = [][]byte{} + + tests := []test{ + { + name: "valid msg", + msg: validMsg, + wantErr: nil, + }, + { + name: "parity shares namespace", + msg: paritySharesMsg, + wantErr: types.ErrReservedNamespace, + }, + { + name: "tail padding namespace", + msg: tailPaddingMsg, + wantErr: types.ErrReservedNamespace, + }, + { + name: "tx namespace", + msg: txNamespaceMsg, + wantErr: types.ErrReservedNamespace, + }, + { + name: "intermediate state root namespace", + msg: intermediateStateRootsNamespaceMsg, + wantErr: types.ErrReservedNamespace, + }, + { + name: "max reserved namespace", + msg: maxReservedNamespaceMsg, + wantErr: types.ErrReservedNamespace, + }, + { + name: "empty share commitment", + msg: emptyShareCommitment, + wantErr: types.ErrInvalidShareCommitment, + }, + { + name: "incorrect hash size share commitment", + msg: invalidShareCommitmentSize, + wantErr: types.ErrInvalidShareCommitment, + }, + { + name: "no namespace ids", + msg: noNamespaces, + wantErr: types.ErrNoNamespaces, + }, + { + name: "no share versions", + msg: noShareVersions, + wantErr: types.ErrNoShareVersions, + }, + { + name: "no blob sizes", + msg: noBlobSizes, + wantErr: types.ErrNoBlobSizes, + }, + { + name: "no share commitments", + msg: noShareCommitments, + wantErr: types.ErrNoShareCommitments, + }, + { + name: "invalid namespace version", + msg: invalidNamespaceVersionMsgPayForBlobs(t), + wantErr: types.ErrInvalidNamespaceVersion, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.msg.ValidateBasic() + if tt.wantErr != nil { + require.Error(t, err) + assert.Contains(t, err.Error(), tt.wantErr.Error()) + space, code, log := sdkerrors.ABCIInfo(err, false) + assert.Equal(t, tt.wantErr.Codespace(), space) + assert.Equal(t, tt.wantErr.ABCICode(), code) + t.Log(log) + } + }) + } +} + +// totalBlobSize subtracts the delimiter size from the desired total size. this +// is useful for testing for blobs that occupy exactly so many shares. +func totalBlobSize(size int) int { + return size - shares.DelimLen(uint64(size)) +} + +func validMsgPayForBlobs(t *testing.T) *types.MsgPayForBlobs { + signer, err := testnode.NewOfflineSigner() + require.NoError(t, err) + ns1 := appns.NamespaceVersionZeroPrefix + ns1 = append(ns1, bytes.Repeat([]byte{0x01}, appns.NamespaceVersionZeroIDSize)...) + data := bytes.Repeat([]byte{2}, totalBlobSize(appconsts.ContinuationSparseShareContentSize*12)) + + pblob := &blob.Blob{ + Data: data, + NamespaceId: ns1, + NamespaceVersion: uint32(appns.NamespaceVersionZero), + ShareVersion: uint32(appconsts.ShareVersionZero), + } + + addr := signer.Account(testfactory.TestAccName).Address() + pfb, err := types.NewMsgPayForBlobs(addr.String(), appconsts.LatestVersion, pblob) + assert.NoError(t, err) + + return pfb +} + +func invalidNamespaceVersionMsgPayForBlobs(t *testing.T) *types.MsgPayForBlobs { + signer, err := testnode.NewOfflineSigner() + require.NoError(t, err) + ns1 := appns.NamespaceVersionZeroPrefix + ns1 = append(ns1, bytes.Repeat([]byte{0x01}, appns.NamespaceVersionZeroIDSize)...) + data := bytes.Repeat([]byte{2}, totalBlobSize(appconsts.ContinuationSparseShareContentSize*12)) + + pblob := &blob.Blob{ + Data: data, + NamespaceId: ns1, + NamespaceVersion: uint32(255), + ShareVersion: uint32(appconsts.ShareVersionZero), + } + + blobs := []*blob.Blob{pblob} + + commitments, err := inclusion.CreateCommitments(blobs, merkle.HashFromByteSlices, appconsts.DefaultSubtreeRootThreshold) + require.NoError(t, err) + + namespaceVersions, namespaceIDs, sizes, shareVersions := types.ExtractBlobComponents(blobs) + namespaces := []appns.Namespace{} + for i := range namespaceVersions { + namespace, err := appns.New(uint8(namespaceVersions[i]), namespaceIDs[i]) + require.NoError(t, err) + namespaces = append(namespaces, namespace) + } + + namespacesBytes := make([][]byte, len(namespaces)) + for idx, namespace := range namespaces { + namespacesBytes[idx] = namespace.Bytes() + } + + addr := signer.Account(testfactory.TestAccName).Address() + pfb := &types.MsgPayForBlobs{ + Signer: addr.String(), + Namespaces: namespacesBytes, + ShareCommitments: commitments, + BlobSizes: sizes, + ShareVersions: shareVersions, + } + + return pfb +} + +func TestNewMsgPayForBlobs(t *testing.T) { + type testCase struct { + name string + signer string + blobs []*blob.Blob + expectedErr bool + } + ns1 := appns.MustNewV0(bytes.Repeat([]byte{1}, appns.NamespaceVersionZeroIDSize)) + ns2 := appns.MustNewV0(bytes.Repeat([]byte{2}, appns.NamespaceVersionZeroIDSize)) + + testCases := []testCase{ + { + name: "valid msg PFB with small blob", + signer: testfactory.TestAccAddr, + blobs: []*blob.Blob{ + { + NamespaceVersion: uint32(ns1.Version), + NamespaceId: ns1.ID, + Data: []byte{1}, + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + }, + expectedErr: false, + }, + { + name: "valid msg PFB with large blob", + signer: testfactory.TestAccAddr, + blobs: []*blob.Blob{ + { + NamespaceVersion: uint32(ns1.Version), + NamespaceId: ns1.ID, + Data: tmrand.Bytes(1000000), + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + }, + expectedErr: false, + }, + { + name: "valid msg PFB with two blobs", + signer: testfactory.TestAccAddr, + blobs: []*blob.Blob{ + { + NamespaceVersion: uint32(ns1.Version), + NamespaceId: ns1.ID, + Data: []byte{1}, + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + { + NamespaceVersion: uint32(ns2.Version), + NamespaceId: ns2.ID, + Data: []byte{2}, + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + }, + }, + { + name: "unsupported share version returns an error", + signer: testfactory.TestAccAddr, + blobs: []*blob.Blob{ + { + NamespaceVersion: uint32(ns1.Version), + NamespaceId: ns1.ID, + Data: tmrand.Bytes(1000000), + ShareVersion: uint32(10), // unsupported share version + }, + }, + expectedErr: true, + }, + { + name: "msg PFB with tx namespace returns an error", + signer: testfactory.TestAccAddr, + blobs: []*blob.Blob{ + { + NamespaceVersion: uint32(appns.TxNamespace.Version), + NamespaceId: appns.TxNamespace.ID, + Data: tmrand.Bytes(1000000), + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + }, + expectedErr: true, + }, + { + name: "msg PFB with invalid signer returns an error", + signer: testfactory.TestAccAddr[:10], + blobs: []*blob.Blob{ + { + NamespaceVersion: uint32(ns1.Version), + NamespaceId: ns1.ID, + Data: []byte{1}, + ShareVersion: uint32(appconsts.ShareVersionZero), + }, + }, + expectedErr: true, + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + msgPFB, err := types.NewMsgPayForBlobs(tc.signer, appconsts.LatestVersion, tc.blobs...) + if tc.expectedErr { + assert.Error(t, err) + return + } + + for i, blob := range tc.blobs { + assert.Equal(t, uint32(len(blob.Data)), msgPFB.BlobSizes[i]) + ns, err := appns.From(msgPFB.Namespaces[i]) + assert.NoError(t, err) + assert.Equal(t, ns.ID, blob.NamespaceId) + assert.Equal(t, uint32(ns.Version), blob.NamespaceVersion) + + expectedCommitment, err := inclusion.CreateCommitment(blob, merkle.HashFromByteSlices, appconsts.DefaultSubtreeRootThreshold) + require.NoError(t, err) + assert.Equal(t, expectedCommitment, msgPFB.ShareCommitments[i]) + } + }) + } +} + +func TestValidateBlobs(t *testing.T) { + type test struct { + name string + blob *blob.Blob + expectError bool + } + + tests := []test{ + { + name: "valid blob", + blob: &blob.Blob{ + Data: []byte{1}, + NamespaceId: appns.RandomBlobNamespace().ID, + ShareVersion: uint32(appconsts.DefaultShareVersion), + NamespaceVersion: uint32(appns.NamespaceVersionZero), + }, + expectError: false, + }, + { + name: "invalid share version", + blob: &blob.Blob{ + Data: []byte{1}, + NamespaceId: appns.RandomBlobNamespace().ID, + ShareVersion: uint32(10000), + NamespaceVersion: uint32(appns.NamespaceVersionZero), + }, + expectError: true, + }, + { + name: "empty blob", + blob: &blob.Blob{ + Data: []byte{}, + NamespaceId: appns.RandomBlobNamespace().ID, + ShareVersion: uint32(appconsts.DefaultShareVersion), + NamespaceVersion: uint32(appns.NamespaceVersionZero), + }, + expectError: true, + }, + { + name: "invalid namespace", + blob: &blob.Blob{ + Data: []byte{1}, + NamespaceId: appns.TxNamespace.ID, + ShareVersion: uint32(appconsts.DefaultShareVersion), + NamespaceVersion: uint32(appns.NamespaceVersionZero), + }, + expectError: true, + }, + } + + for _, tt := range tests { + err := types.ValidateBlobs(tt.blob) + if tt.expectError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + } +} diff --git a/x/blob/types/query.pb.go b/x/blob/types/query.pb.go new file mode 100644 index 0000000000..c28b5b01ed --- /dev/null +++ b/x/blob/types/query.pb.go @@ -0,0 +1,534 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: celestia/blob/v1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + grpc1 "github.com/gogo/protobuf/grpc" + proto "github.com/gogo/protobuf/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// QueryParamsRequest is the request type for the Query/Params RPC method. +type QueryParamsRequest struct { +} + +func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } +func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryParamsRequest) ProtoMessage() {} +func (*QueryParamsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_29ba8a4248383b64, []int{0} +} +func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsRequest.Merge(m, src) +} +func (m *QueryParamsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo + +// QueryParamsResponse is the response type for the Query/Params RPC method. +type QueryParamsResponse struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` +} + +func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } +func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryParamsResponse) ProtoMessage() {} +func (*QueryParamsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_29ba8a4248383b64, []int{1} +} +func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryParamsResponse.Merge(m, src) +} +func (m *QueryParamsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryParamsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo + +func (m *QueryParamsResponse) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func init() { + proto.RegisterType((*QueryParamsRequest)(nil), "celestia.blob.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "celestia.blob.v1.QueryParamsResponse") +} + +func init() { proto.RegisterFile("celestia/blob/v1/query.proto", fileDescriptor_29ba8a4248383b64) } + +var fileDescriptor_29ba8a4248383b64 = []byte{ + // 275 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x2c, 0x4d, + 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, + 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, + 0x4c, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x7e, 0x62, 0x41, 0xa6, 0x7e, 0x62, 0x5e, 0x5e, 0x7e, + 0x49, 0x62, 0x49, 0x66, 0x7e, 0x5e, 0x31, 0x54, 0x56, 0x16, 0xc3, 0x8e, 0x82, 0xc4, 0xa2, 0xc4, + 0x5c, 0xa8, 0xb4, 0x92, 0x08, 0x97, 0x50, 0x20, 0xc8, 0xce, 0x00, 0xb0, 0x60, 0x50, 0x6a, 0x61, + 0x69, 0x6a, 0x71, 0x89, 0x92, 0x2f, 0x97, 0x30, 0x8a, 0x68, 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, + 0x90, 0x19, 0x17, 0x1b, 0x44, 0xb3, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xb7, 0x91, 0x84, 0x1e, 0xba, + 0x13, 0xf5, 0x20, 0x3a, 0x9c, 0x58, 0x4e, 0xdc, 0x93, 0x67, 0x08, 0x82, 0xaa, 0x36, 0x2a, 0xe7, + 0x62, 0x05, 0x1b, 0x27, 0x94, 0xc7, 0xc5, 0x06, 0x51, 0x20, 0xa4, 0x82, 0xa9, 0x15, 0xd3, 0x1d, + 0x52, 0xaa, 0x04, 0x54, 0x41, 0xdc, 0xa5, 0x24, 0xde, 0x74, 0xf9, 0xc9, 0x64, 0x26, 0x41, 0x21, + 0x7e, 0x34, 0x3f, 0x3a, 0x79, 0x9d, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, + 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, + 0x41, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xcc, 0x8e, 0xfc, 0xa2, + 0x74, 0x38, 0x5b, 0x37, 0xb1, 0xa0, 0x40, 0xbf, 0x02, 0x62, 0x5e, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0x38, 0xc0, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x7e, 0x20, 0x5f, 0xb5, + 0x01, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// QueryClient is the client API for Query service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type QueryClient interface { + // Params queries the parameters of the module. + Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { + out := new(QueryParamsResponse) + err := c.cc.Invoke(ctx, "/celestia.blob.v1.Query/Params", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // Params queries the parameters of the module. + Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryParamsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Params(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/celestia.blob.v1.Query/Params", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "celestia.blob.v1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Params", + Handler: _Query_Params_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "celestia/blob/v1/query.proto", +} + +func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { + offset -= sovQuery(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *QueryParamsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryParamsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Params.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipQuery(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowQuery + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthQuery + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupQuery + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthQuery + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/blob/types/query.pb.gw.go b/x/blob/types/query.pb.gw.go new file mode 100644 index 0000000000..5ee1f38d19 --- /dev/null +++ b/x/blob/types/query.pb.gw.go @@ -0,0 +1,153 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: celestia/blob/v1/query.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryParamsRequest + var metadata runtime.ServerMetadata + + msg, err := server.Params(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". +// UnaryRPC :call QueryServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. +func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterQueryHandler(ctx, mux, conn) +} + +// RegisterQueryHandler registers the http handlers for service Query to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) +} + +// RegisterQueryHandlerClient registers the http handlers for service Query +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QueryClient" to call the correct interceptors. +func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { + + mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"blob", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_Params_0 = runtime.ForwardResponseMessage +) diff --git a/x/blob/types/tx.pb.go b/x/blob/types/tx.pb.go new file mode 100644 index 0000000000..35860ed8a0 --- /dev/null +++ b/x/blob/types/tx.pb.go @@ -0,0 +1,875 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: celestia/blob/v1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + grpc1 "github.com/gogo/protobuf/grpc" + proto "github.com/gogo/protobuf/proto" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// MsgPayForBlobs pays for the inclusion of a blob in the block. +type MsgPayForBlobs struct { + // signer is the bech32 encoded signer address. See + // https://en.bitcoin.it/wiki/Bech32. + Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` + // namespaces is a list of namespaces that the blobs are associated with. A + // namespace is a byte slice of length 29 where the first byte is the + // namespaceVersion and the subsequent 28 bytes are the namespaceId. + Namespaces [][]byte `protobuf:"bytes,2,rep,name=namespaces,proto3" json:"namespaces,omitempty"` + // blob_sizes is a list of blob sizes (one per blob). Each size is in bytes. + BlobSizes []uint32 `protobuf:"varint,3,rep,packed,name=blob_sizes,json=blobSizes,proto3" json:"blob_sizes,omitempty"` + // share_commitments is a list of share commitments (one per blob). + ShareCommitments [][]byte `protobuf:"bytes,4,rep,name=share_commitments,json=shareCommitments,proto3" json:"share_commitments,omitempty"` + // share_versions are the versions of the share format that the blobs + // associated with this message should use when included in a block. The + // share_versions specified must match the share_versions used to generate the + // share_commitment in this message. + ShareVersions []uint32 `protobuf:"varint,8,rep,packed,name=share_versions,json=shareVersions,proto3" json:"share_versions,omitempty"` +} + +func (m *MsgPayForBlobs) Reset() { *m = MsgPayForBlobs{} } +func (m *MsgPayForBlobs) String() string { return proto.CompactTextString(m) } +func (*MsgPayForBlobs) ProtoMessage() {} +func (*MsgPayForBlobs) Descriptor() ([]byte, []int) { + return fileDescriptor_9157fbf3d3cd004d, []int{0} +} +func (m *MsgPayForBlobs) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPayForBlobs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPayForBlobs.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgPayForBlobs) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPayForBlobs.Merge(m, src) +} +func (m *MsgPayForBlobs) XXX_Size() int { + return m.Size() +} +func (m *MsgPayForBlobs) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPayForBlobs.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPayForBlobs proto.InternalMessageInfo + +func (m *MsgPayForBlobs) GetSigner() string { + if m != nil { + return m.Signer + } + return "" +} + +func (m *MsgPayForBlobs) GetNamespaces() [][]byte { + if m != nil { + return m.Namespaces + } + return nil +} + +func (m *MsgPayForBlobs) GetBlobSizes() []uint32 { + if m != nil { + return m.BlobSizes + } + return nil +} + +func (m *MsgPayForBlobs) GetShareCommitments() [][]byte { + if m != nil { + return m.ShareCommitments + } + return nil +} + +func (m *MsgPayForBlobs) GetShareVersions() []uint32 { + if m != nil { + return m.ShareVersions + } + return nil +} + +// MsgPayForBlobsResponse describes the response returned after the submission +// of a PayForBlobs +type MsgPayForBlobsResponse struct { +} + +func (m *MsgPayForBlobsResponse) Reset() { *m = MsgPayForBlobsResponse{} } +func (m *MsgPayForBlobsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgPayForBlobsResponse) ProtoMessage() {} +func (*MsgPayForBlobsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_9157fbf3d3cd004d, []int{1} +} +func (m *MsgPayForBlobsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPayForBlobsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPayForBlobsResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgPayForBlobsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPayForBlobsResponse.Merge(m, src) +} +func (m *MsgPayForBlobsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgPayForBlobsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPayForBlobsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPayForBlobsResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgPayForBlobs)(nil), "celestia.blob.v1.MsgPayForBlobs") + proto.RegisterType((*MsgPayForBlobsResponse)(nil), "celestia.blob.v1.MsgPayForBlobsResponse") +} + +func init() { proto.RegisterFile("celestia/blob/v1/tx.proto", fileDescriptor_9157fbf3d3cd004d) } + +var fileDescriptor_9157fbf3d3cd004d = []byte{ + // 352 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xcd, 0x4a, 0xc3, 0x40, + 0x14, 0x85, 0x3b, 0x8d, 0x14, 0x3b, 0xda, 0x52, 0x83, 0x94, 0xb4, 0x68, 0x0c, 0x01, 0x21, 0x28, + 0x26, 0x56, 0x77, 0x2e, 0x2b, 0xb8, 0x10, 0x0a, 0x12, 0xc1, 0x85, 0x9b, 0x32, 0x09, 0x63, 0x1a, + 0x48, 0x72, 0x87, 0xdc, 0xb1, 0xb4, 0xdd, 0xe9, 0x13, 0x08, 0x3e, 0x8e, 0x2f, 0xe0, 0xb2, 0xe0, + 0xc6, 0xa5, 0xb4, 0x3e, 0x88, 0x24, 0xfd, 0xb1, 0x75, 0xe3, 0x2e, 0xf7, 0x3b, 0x87, 0x73, 0x6e, + 0xe6, 0xd2, 0x86, 0xcf, 0x23, 0x8e, 0x32, 0x64, 0x8e, 0x17, 0x81, 0xe7, 0xf4, 0x5b, 0x8e, 0x1c, + 0xd8, 0x22, 0x05, 0x09, 0x6a, 0x6d, 0x21, 0xd9, 0x99, 0x64, 0xf7, 0x5b, 0xcd, 0xbd, 0x00, 0x20, + 0x88, 0xb8, 0xc3, 0x44, 0xe8, 0xb0, 0x24, 0x01, 0xc9, 0x64, 0x08, 0x09, 0xce, 0xfc, 0xe6, 0x1b, + 0xa1, 0xd5, 0x0e, 0x06, 0x37, 0x6c, 0x78, 0x05, 0x69, 0x3b, 0x02, 0x0f, 0xd5, 0x3a, 0x2d, 0x61, + 0x18, 0x24, 0x3c, 0xd5, 0x88, 0x41, 0xac, 0xb2, 0x3b, 0x9f, 0x54, 0x9d, 0xd2, 0x84, 0xc5, 0x1c, + 0x05, 0xf3, 0x39, 0x6a, 0x45, 0x43, 0xb1, 0xb6, 0xdd, 0x15, 0xa2, 0xee, 0x53, 0x9a, 0x75, 0x76, + 0x31, 0x1c, 0x71, 0xd4, 0x14, 0x43, 0xb1, 0x2a, 0x6e, 0x39, 0x23, 0xb7, 0x19, 0x50, 0x8f, 0xe9, + 0x0e, 0xf6, 0x58, 0xca, 0xbb, 0x3e, 0xc4, 0x71, 0x28, 0x63, 0x9e, 0x48, 0xd4, 0x36, 0xf2, 0x94, + 0x5a, 0x2e, 0x5c, 0xfe, 0x72, 0xf5, 0x90, 0x56, 0x67, 0xe6, 0x3e, 0x4f, 0x31, 0x5b, 0x57, 0xdb, + 0xcc, 0xf3, 0x2a, 0x39, 0xbd, 0x9b, 0x43, 0x53, 0xa3, 0xf5, 0xf5, 0xe5, 0x5d, 0x8e, 0x02, 0x12, + 0xe4, 0x67, 0x4f, 0x84, 0x2a, 0x1d, 0x0c, 0xd4, 0x11, 0xdd, 0x5a, 0xfd, 0x37, 0xc3, 0xfe, 0xfb, + 0x3e, 0xf6, 0x7a, 0x40, 0xd3, 0xfa, 0xcf, 0xb1, 0xa8, 0x30, 0x0f, 0x9e, 0x3f, 0xbe, 0x5f, 0x8b, + 0x0d, 0x73, 0x77, 0x79, 0x05, 0xc1, 0x86, 0x0f, 0x90, 0x66, 0x13, 0x5e, 0x90, 0xa3, 0xf6, 0xf5, + 0xfb, 0x44, 0x27, 0xe3, 0x89, 0x4e, 0xbe, 0x26, 0x3a, 0x79, 0x99, 0xea, 0x85, 0xf1, 0x54, 0x2f, + 0x7c, 0x4e, 0xf5, 0xc2, 0xfd, 0x69, 0x10, 0xca, 0xde, 0xa3, 0x67, 0xfb, 0x10, 0x3b, 0x8b, 0x3a, + 0x48, 0x83, 0xe5, 0xf7, 0x09, 0x13, 0xc2, 0x19, 0xcc, 0x72, 0xe5, 0x50, 0x70, 0xf4, 0x4a, 0xf9, + 0xb9, 0xce, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x82, 0x67, 0x80, 0x6a, 0xfb, 0x01, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// MsgClient is the client API for Msg service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type MsgClient interface { + // PayForBlobs allows the user to pay for the inclusion of one or more blobs + PayForBlobs(ctx context.Context, in *MsgPayForBlobs, opts ...grpc.CallOption) (*MsgPayForBlobsResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) PayForBlobs(ctx context.Context, in *MsgPayForBlobs, opts ...grpc.CallOption) (*MsgPayForBlobsResponse, error) { + out := new(MsgPayForBlobsResponse) + err := c.cc.Invoke(ctx, "/celestia.blob.v1.Msg/PayForBlobs", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // PayForBlobs allows the user to pay for the inclusion of one or more blobs + PayForBlobs(context.Context, *MsgPayForBlobs) (*MsgPayForBlobsResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) PayForBlobs(ctx context.Context, req *MsgPayForBlobs) (*MsgPayForBlobsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PayForBlobs not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_PayForBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgPayForBlobs) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).PayForBlobs(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/celestia.blob.v1.Msg/PayForBlobs", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).PayForBlobs(ctx, req.(*MsgPayForBlobs)) + } + return interceptor(ctx, in, info, handler) +} + +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "celestia.blob.v1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "PayForBlobs", + Handler: _Msg_PayForBlobs_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "celestia/blob/v1/tx.proto", +} + +func (m *MsgPayForBlobs) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgPayForBlobs) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPayForBlobs) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ShareVersions) > 0 { + dAtA2 := make([]byte, len(m.ShareVersions)*10) + var j1 int + for _, num := range m.ShareVersions { + for num >= 1<<7 { + dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j1++ + } + dAtA2[j1] = uint8(num) + j1++ + } + i -= j1 + copy(dAtA[i:], dAtA2[:j1]) + i = encodeVarintTx(dAtA, i, uint64(j1)) + i-- + dAtA[i] = 0x42 + } + if len(m.ShareCommitments) > 0 { + for iNdEx := len(m.ShareCommitments) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ShareCommitments[iNdEx]) + copy(dAtA[i:], m.ShareCommitments[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ShareCommitments[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(m.BlobSizes) > 0 { + dAtA4 := make([]byte, len(m.BlobSizes)*10) + var j3 int + for _, num := range m.BlobSizes { + for num >= 1<<7 { + dAtA4[j3] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j3++ + } + dAtA4[j3] = uint8(num) + j3++ + } + i -= j3 + copy(dAtA[i:], dAtA4[:j3]) + i = encodeVarintTx(dAtA, i, uint64(j3)) + i-- + dAtA[i] = 0x1a + } + if len(m.Namespaces) > 0 { + for iNdEx := len(m.Namespaces) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Namespaces[iNdEx]) + copy(dAtA[i:], m.Namespaces[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Namespaces[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgPayForBlobsResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgPayForBlobsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPayForBlobsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintTx(dAtA []byte, offset int, v uint64) int { + offset -= sovTx(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MsgPayForBlobs) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.Namespaces) > 0 { + for _, b := range m.Namespaces { + l = len(b) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.BlobSizes) > 0 { + l = 0 + for _, e := range m.BlobSizes { + l += sovTx(uint64(e)) + } + n += 1 + sovTx(uint64(l)) + l + } + if len(m.ShareCommitments) > 0 { + for _, b := range m.ShareCommitments { + l = len(b) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ShareVersions) > 0 { + l = 0 + for _, e := range m.ShareVersions { + l += sovTx(uint64(e)) + } + n += 1 + sovTx(uint64(l)) + l + } + return n +} + +func (m *MsgPayForBlobsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovTx(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTx(x uint64) (n int) { + return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MsgPayForBlobs) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgPayForBlobs: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPayForBlobs: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Namespaces", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Namespaces = append(m.Namespaces, make([]byte, postIndex-iNdEx)) + copy(m.Namespaces[len(m.Namespaces)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType == 0 { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BlobSizes = append(m.BlobSizes, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.BlobSizes) == 0 { + m.BlobSizes = make([]uint32, 0, elementCount) + } + for iNdEx < postIndex { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.BlobSizes = append(m.BlobSizes, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field BlobSizes", wireType) + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ShareCommitments", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ShareCommitments = append(m.ShareCommitments, make([]byte, postIndex-iNdEx)) + copy(m.ShareCommitments[len(m.ShareCommitments)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType == 0 { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ShareVersions = append(m.ShareVersions, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.ShareVersions) == 0 { + m.ShareVersions = make([]uint32, 0, elementCount) + } + for iNdEx < postIndex { + var v uint32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ShareVersions = append(m.ShareVersions, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field ShareVersions", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MsgPayForBlobsResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgPayForBlobsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPayForBlobsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTx(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowTx + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthTx + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTx + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTx + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/blob/types/tx.pb.gw.go b/x/blob/types/tx.pb.gw.go new file mode 100644 index 0000000000..f74689d3aa --- /dev/null +++ b/x/blob/types/tx.pb.gw.go @@ -0,0 +1,169 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: celestia/blob/v1/tx.proto + +/* +Package types is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package types + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Msg_PayForBlobs_0(ctx context.Context, marshaler runtime.Marshaler, client MsgClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgPayForBlobs + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PayForBlobs(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Msg_PayForBlobs_0(ctx context.Context, marshaler runtime.Marshaler, server MsgServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq MsgPayForBlobs + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PayForBlobs(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterMsgHandlerServer registers the http handlers for service Msg to "mux". +// UnaryRPC :call MsgServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterMsgHandlerFromEndpoint instead. +func RegisterMsgHandlerServer(ctx context.Context, mux *runtime.ServeMux, server MsgServer) error { + + mux.Handle("POST", pattern_Msg_PayForBlobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Msg_PayForBlobs_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_PayForBlobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterMsgHandlerFromEndpoint is same as RegisterMsgHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterMsgHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterMsgHandler(ctx, mux, conn) +} + +// RegisterMsgHandler registers the http handlers for service Msg to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterMsgHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterMsgHandlerClient(ctx, mux, NewMsgClient(conn)) +} + +// RegisterMsgHandlerClient registers the http handlers for service Msg +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "MsgClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MsgClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "MsgClient" to call the correct interceptors. +func RegisterMsgHandlerClient(ctx context.Context, mux *runtime.ServeMux, client MsgClient) error { + + mux.Handle("POST", pattern_Msg_PayForBlobs_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Msg_PayForBlobs_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Msg_PayForBlobs_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Msg_PayForBlobs_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"blob", "v1", "payforblobs"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Msg_PayForBlobs_0 = runtime.ForwardResponseMessage +) From 835a92b6407d9306c6984a47bcc6afb3a71a184d Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:30 -0400 Subject: [PATCH 022/140] Revert "comments" This reverts commit 34fdad517c235d4252304fcf9931a94155f05631. --- node/go.mod | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/node/go.mod b/node/go.mod index 50116bb77f..3d515dc7bf 100644 --- a/node/go.mod +++ b/node/go.mod @@ -3,9 +3,8 @@ module github.com/celestiaorg/celestia-app/node go 1.22.4 require ( - github.com/celestiaorg/celestia-app v0.0.0 - github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/celestiaorg/celestia-app/v2 v2.0.0 + github.com/celestiaorg/celestia-app/x/blob v0.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 @@ -207,12 +206,9 @@ require ( replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 - // replace celestia-app with a fork because this fork _should_ not include x/blob any more. - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.1.0 - // replace x/blob with a distinct Go module that contains x/blob. - github.com/celestiaorg/celestia-app/x/blob => github.com/rootulp/celestia-app/x/blob v1.4.0 - // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init(). + // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ + github.com/celestiaorg/celestia-app/x/blob => ../x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 From f0c3b614438c4d3790f80744b5e674658c6b2fad Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:35 -0400 Subject: [PATCH 023/140] Revert "wip: error because ambiguous import" This reverts commit 162a5919e78398d06d56997e6da32f93bfe71a56. --- Makefile | 2 +- app/ante/ante.go | 12 ++++++------ go.mod | 2 +- node/go.mod | 7 +++---- node/utils/apps.go | 32 ++++++++++++++++---------------- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 1d761eccef..51f566edfd 100644 --- a/Makefile +++ b/Makefile @@ -217,6 +217,6 @@ prebuilt-binary: build-node: @echo "--> Building celestia-app/node and outputting binary to build/node" @mkdir -p build/ - @cd ./node && go build -v -o ../build/node . + @cd ./node && go build -o ../build/node . @go mod tidy .PHONY: build-node diff --git a/app/ante/ante.go b/app/ante/ante.go index d271692c41..e7ffe2a1b8 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -1,8 +1,8 @@ package ante import ( - blobsnewante "github.com/celestiaorg/celestia-app/x/blob/ante" - blobkeeper "github.com/celestiaorg/celestia-app/x/blob/keeper" + blobante "github.com/celestiaorg/celestia-app/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/x/blob/keeper" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/signing" @@ -15,7 +15,7 @@ import ( func NewAnteHandler( accountKeeper ante.AccountKeeper, bankKeeper authtypes.BankKeeper, - blobKeeper blobkeeper.Keeper, + blobKeeper blob.Keeper, feegrantKeeper ante.FeegrantKeeper, signModeHandler signing.SignModeHandler, sigGasConsumer ante.SignatureVerificationGasConsumer, @@ -63,14 +63,14 @@ func NewAnteHandler( // Ensure that the tx's gas limit is > the gas consumed based on the blob size(s). // Contract: must be called after all decorators that consume gas. // Note: does not consume gas from the gas meter. - blobsnewante.NewMinGasPFBDecorator(blobKeeper), + blobante.NewMinGasPFBDecorator(blobKeeper), // Ensure that the tx's total blob size is <= the max blob size. // Only applies to app version == 1. - blobsnewante.NewMaxTotalBlobSizeDecorator(blobKeeper), + blobante.NewMaxTotalBlobSizeDecorator(blobKeeper), // Ensure that the blob shares occupied by the tx <= the max shares // available to blob data in a data square. Only applies to app version // >= 2. - blobsnewante.NewBlobShareDecorator(blobKeeper), + blobante.NewBlobShareDecorator(blobKeeper), // Ensure that tx's with a MsgSubmitProposal have at least one proposal // message. NewGovProposalDecorator(), diff --git a/go.mod b/go.mod index 8b8ed2030f..16ea2497c6 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 - github.com/celestiaorg/celestia-app/x/blob v0.0.0 + github.com/celestiaorg/celestia-app/x/blob v1.0.0 github.com/celestiaorg/go-square v1.1.0 github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 github.com/celestiaorg/knuu v0.14.0 diff --git a/node/go.mod b/node/go.mod index 3d515dc7bf..2004ea27e1 100644 --- a/node/go.mod +++ b/node/go.mod @@ -3,8 +3,8 @@ module github.com/celestiaorg/celestia-app/node go 1.22.4 require ( - github.com/celestiaorg/celestia-app/v2 v2.0.0 - github.com/celestiaorg/celestia-app/x/blob v0.0.0 + github.com/celestiaorg/celestia-app v1.13.0 + github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 @@ -34,11 +34,11 @@ require ( github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect - github.com/celestiaorg/celestia-app v1.13.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect github.com/celestiaorg/nmt v0.22.0 // indirect + github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect github.com/celestiaorg/rsmt2d v0.14.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect @@ -208,7 +208,6 @@ replace ( cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ - github.com/celestiaorg/celestia-app/x/blob => ../x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/utils/apps.go b/node/utils/apps.go index 6c5e44b1ef..dd4212546e 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -1,8 +1,8 @@ package utils import ( - // v1 "github.com/celestiaorg/celestia-app/app" - // v1encoding "github.com/celestiaorg/celestia-app/app/encoding" + v1 "github.com/celestiaorg/celestia-app/app" + v1encoding "github.com/celestiaorg/celestia-app/app/encoding" v2 "github.com/celestiaorg/celestia-app/v2/app" v2encoding "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/tendermint/tendermint/abci/types" @@ -11,24 +11,24 @@ import ( ) func GetApps() []types.Application { - // v1 := NewAppV1() + v1 := NewAppV1() v2 := NewAppV2() - return []types.Application{v2} + return []types.Application{v1, v2} } -// func NewAppV1() *v1.App { -// logger := log.NewNopLogger() -// db := tmdb.NewMemDB() -// traceStore := &NoopWriter{} -// loadLatest := true -// skipUpgradeHeights := make(map[int64]bool) -// homePath := "" -// invCheckPeriod := uint(1) -// encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) -// appOptions := NoopAppOptions{} +func NewAppV1() *v1.App { + logger := log.NewNopLogger() + db := tmdb.NewMemDB() + traceStore := &NoopWriter{} + loadLatest := true + skipUpgradeHeights := make(map[int64]bool) + homePath := "" + invCheckPeriod := uint(1) + encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) + appOptions := NoopAppOptions{} -// return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) -// } + return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) +} func NewAppV2() *v2.App { logger := log.NewNopLogger() From 8639f2374afc6a0cacf7f4532599e3bd1fd11d21 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:40 -0400 Subject: [PATCH 024/140] Revert "feat: new go mod for x/blob" This reverts commit 1b38c5bd6a5edf9e436d3e0a17649e0a0f917551. --- app/ante/ante.go | 4 +- app/app.go | 4 +- app/check_tx.go | 2 +- app/errors/insufficient_gas_price_test.go | 2 +- app/errors/nonce_mismatch_test.go | 2 +- app/modules.go | 4 +- app/process_proposal.go | 2 +- app/test/big_blob_test.go | 2 +- app/test/check_tx_test.go | 2 +- app/test/integration_test.go | 2 +- app/test/priority_test.go | 2 +- app/test/square_size_test.go | 2 +- go.mod | 26 +++++----- go.sum | 54 ++++++++++---------- node/go.mod | 22 ++++---- node/go.sum | 38 +++++++------- pkg/user/signer.go | 2 +- pkg/user/tx_client.go | 2 +- test/e2e/benchmark/manifest.go | 2 +- test/txsim/blob.go | 2 +- test/txsim/run_test.go | 2 +- test/util/blobfactory/payforblob_factory.go | 2 +- test/util/genesis/modifier.go | 2 +- test/util/sdkutil/proposals.go | 2 +- test/util/testnode/full_node_test.go | 2 +- test/util/testnode/node_interaction_api.go | 2 +- x/blob/ante/ante.go | 2 +- x/blob/ante/ante_test.go | 4 +- x/blob/ante/blob_share_decorator.go | 2 +- x/blob/ante/blob_share_decorator_test.go | 4 +- x/blob/ante/max_total_blob_size_ante.go | 2 +- x/blob/ante/max_total_blob_size_ante_test.go | 4 +- x/blob/client/cli/payforblob.go | 2 +- x/blob/client/cli/query.go | 2 +- x/blob/client/cli/query_params.go | 2 +- x/blob/client/cli/tx.go | 2 +- x/blob/client/testutil/integration_test.go | 4 +- x/blob/genesis.go | 4 +- x/blob/go.mod | 2 +- x/blob/handler.go | 4 +- x/blob/keeper/gas_test.go | 2 +- x/blob/keeper/genesis_test.go | 4 +- x/blob/keeper/grpc_query.go | 2 +- x/blob/keeper/grpc_query_params.go | 2 +- x/blob/keeper/grpc_query_params_test.go | 2 +- x/blob/keeper/keeper.go | 2 +- x/blob/keeper/keeper_test.go | 4 +- x/blob/keeper/msg_server.go | 2 +- x/blob/keeper/params.go | 2 +- x/blob/keeper/params_test.go | 2 +- x/blob/module.go | 6 +-- x/blob/test/decode_blob_tx_test.go | 2 +- x/blob/types/blob_tx_test.go | 2 +- x/blob/types/estimate_gas_test.go | 2 +- x/blob/types/genesis_test.go | 2 +- x/blob/types/payforblob_test.go | 2 +- x/paramfilter/test/gov_params_test.go | 2 +- 57 files changed, 138 insertions(+), 134 deletions(-) diff --git a/app/ante/ante.go b/app/ante/ante.go index e7ffe2a1b8..dfacee7afd 100644 --- a/app/ante/ante.go +++ b/app/ante/ante.go @@ -1,8 +1,8 @@ package ante import ( - blobante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/keeper" + blobante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/ante" "github.com/cosmos/cosmos-sdk/x/auth/signing" diff --git a/app/app.go b/app/app.go index 6c18fda501..0c0decfd0a 100644 --- a/app/app.go +++ b/app/app.go @@ -12,6 +12,8 @@ import ( appv1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" appv2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" "github.com/celestiaorg/celestia-app/v2/pkg/proof" + blobkeeper "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" blobstreamkeeper "github.com/celestiaorg/celestia-app/v2/x/blobstream/keeper" blobstreamtypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" "github.com/celestiaorg/celestia-app/v2/x/minfee" @@ -21,8 +23,6 @@ import ( "github.com/celestiaorg/celestia-app/v2/x/signal" signaltypes "github.com/celestiaorg/celestia-app/v2/x/signal/types" "github.com/celestiaorg/celestia-app/v2/x/tokenfilter" - blobkeeper "github.com/celestiaorg/celestia-app/x/blob/keeper" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" diff --git a/app/check_tx.go b/app/check_tx.go index 8e23b70556..e0ddaeb8eb 100644 --- a/app/check_tx.go +++ b/app/check_tx.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" abci "github.com/tendermint/tendermint/abci/types" diff --git a/app/errors/insufficient_gas_price_test.go b/app/errors/insufficient_gas_price_test.go index e17cc6bbb9..be501b701f 100644 --- a/app/errors/insufficient_gas_price_test.go +++ b/app/errors/insufficient_gas_price_test.go @@ -12,7 +12,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" testutil "github.com/celestiaorg/celestia-app/v2/test/util" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - blob "github.com/celestiaorg/celestia-app/x/blob/types" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" diff --git a/app/errors/nonce_mismatch_test.go b/app/errors/nonce_mismatch_test.go index 46a469a8bc..b07cb76147 100644 --- a/app/errors/nonce_mismatch_test.go +++ b/app/errors/nonce_mismatch_test.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" testutil "github.com/celestiaorg/celestia-app/v2/test/util" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - blob "github.com/celestiaorg/celestia-app/x/blob/types" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/ante" diff --git a/app/modules.go b/app/modules.go index f3d686dd13..0a18a50b3a 100644 --- a/app/modules.go +++ b/app/modules.go @@ -5,6 +5,8 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/app/module" + "github.com/celestiaorg/celestia-app/v2/x/blob" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/celestia-app/v2/x/blobstream" blobstreamtypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" "github.com/celestiaorg/celestia-app/v2/x/minfee" @@ -12,8 +14,6 @@ import ( minttypes "github.com/celestiaorg/celestia-app/v2/x/mint/types" "github.com/celestiaorg/celestia-app/v2/x/signal" signaltypes "github.com/celestiaorg/celestia-app/v2/x/signal/types" - "github.com/celestiaorg/celestia-app/x/blob" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" sdkmodule "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/app/process_proposal.go b/app/process_proposal.go index 0e796b4232..1653e27200 100644 --- a/app/process_proposal.go +++ b/app/process_proposal.go @@ -8,7 +8,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/ante" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/da" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/shares" "github.com/celestiaorg/go-square/square" diff --git a/app/test/big_blob_test.go b/app/test/big_blob_test.go index b5dc8cc62f..e3cd56e84c 100644 --- a/app/test/big_blob_test.go +++ b/app/test/big_blob_test.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" diff --git a/app/test/check_tx_test.go b/app/test/check_tx_test.go index 1d8ea52b94..8502941300 100644 --- a/app/test/check_tx_test.go +++ b/app/test/check_tx_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/user" testutil "github.com/celestiaorg/celestia-app/v2/test/util" "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/stretchr/testify/assert" diff --git a/app/test/integration_test.go b/app/test/integration_test.go index b6b008e340..274b4264cd 100644 --- a/app/test/integration_test.go +++ b/app/test/integration_test.go @@ -23,7 +23,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/da" "github.com/celestiaorg/celestia-app/v2/pkg/user" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/celestiaorg/go-square/square" diff --git a/app/test/priority_test.go b/app/test/priority_test.go index db0c057a49..c695615611 100644 --- a/app/test/priority_test.go +++ b/app/test/priority_test.go @@ -17,7 +17,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" diff --git a/app/test/square_size_test.go b/app/test/square_size_test.go index 6021227e33..28748a3bf7 100644 --- a/app/test/square_size_test.go +++ b/app/test/square_size_test.go @@ -15,7 +15,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/sdkutil" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" v1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1" oldgov "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" diff --git a/go.mod b/go.mod index 16ea2497c6..ee75956951 100644 --- a/go.mod +++ b/go.mod @@ -6,9 +6,8 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 - github.com/celestiaorg/celestia-app/x/blob v1.0.0 github.com/celestiaorg/go-square v1.1.0 - github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 + github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 github.com/celestiaorg/knuu v0.14.0 github.com/celestiaorg/nmt v0.22.0 github.com/celestiaorg/rsmt2d v0.14.0 @@ -25,15 +24,16 @@ require ( github.com/grpc-ecosystem/grpc-gateway v1.16.0 github.com/rs/zerolog v1.33.0 github.com/spf13/cast v1.6.0 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 - google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf + golang.org/x/exp v0.0.0-20240213143201-ec583247a57a + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 + gopkg.in/yaml.v2 v2.4.0 ) require ( @@ -131,6 +131,7 @@ require ( github.com/hashicorp/go-getter v1.7.4 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-uuid v1.0.2 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -184,6 +185,7 @@ require ( github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rivo/uniseg v0.4.4 // indirect github.com/rs/cors v1.8.3 // indirect github.com/rs/xid v1.5.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -217,20 +219,19 @@ require ( go.opentelemetry.io/proto/otlp v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/api v0.28.2 // indirect k8s.io/apimachinery v0.28.2 // indirect @@ -246,7 +247,6 @@ require ( ) replace ( - github.com/celestiaorg/celestia-app/x/blob => ./x/blob github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/go.sum b/go.sum index bf8dcf790c..42ba33e2ce 100644 --- a/go.sum +++ b/go.sum @@ -324,8 +324,8 @@ github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0 github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= +github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= +github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= github.com/celestiaorg/knuu v0.14.0 h1:96uaDHTzlTfhDLrAiygq9Ewow7UzOzGAbUvMwws1S4A= github.com/celestiaorg/knuu v0.14.0/go.mod h1:5x/+tlLebBSfLmmSBm2ps6aLjnKLn5bOaZpUfI5FpsA= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= @@ -436,8 +436,8 @@ github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7 github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= @@ -827,8 +827,9 @@ github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoD github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -1183,8 +1184,9 @@ github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNw github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= @@ -1238,8 +1240,8 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1433,8 +1435,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1449,8 +1451,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1542,8 +1544,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1699,14 +1701,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1717,8 +1719,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1791,8 +1793,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg= -golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1978,10 +1980,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/node/go.mod b/node/go.mod index 2004ea27e1..0a88d36698 100644 --- a/node/go.mod +++ b/node/go.mod @@ -35,7 +35,7 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect - github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 // indirect + github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect github.com/celestiaorg/nmt v0.22.0 // indirect github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect @@ -180,19 +180,19 @@ require ( go.opentelemetry.io/otel/sdk v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -204,10 +204,10 @@ require ( ) replace ( - // replace errors to avoid a panic when registering duplicate errors - cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ + // replace errors to avoid a panic when registering duplicate errors + cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/go.sum b/node/go.sum index da68c151a3..514279d105 100644 --- a/node/go.sum +++ b/node/go.sum @@ -313,14 +313,16 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= +github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 h1:s+F8q10ir9D5DN0STZhdOKKauzXkt/HizkEOCDUoCXA= +github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4/go.mod h1:t/balaAQzi5r/68uHqwEBPc9vofN9CDhtkp3cNEvo2w= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= +github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= +github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= @@ -1367,8 +1369,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1383,8 +1385,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1476,8 +1478,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1631,14 +1633,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1649,8 +1651,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1907,10 +1909,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/pkg/user/signer.go b/pkg/user/signer.go index 4f600e217a..2beaa277d0 100644 --- a/pkg/user/signer.go +++ b/pkg/user/signer.go @@ -12,7 +12,7 @@ import ( "github.com/cosmos/cosmos-sdk/types/tx/signing" authsigning "github.com/cosmos/cosmos-sdk/x/auth/signing" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" ) // Signer is struct for building and signing Celestia transactions diff --git a/pkg/user/tx_client.go b/pkg/user/tx_client.go index 89b251703f..7897f0e578 100644 --- a/pkg/user/tx_client.go +++ b/pkg/user/tx_client.go @@ -27,8 +27,8 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" apperrors "github.com/celestiaorg/celestia-app/v2/app/errors" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/celestia-app/v2/x/minfee" - "github.com/celestiaorg/celestia-app/x/blob/types" ) const ( diff --git a/test/e2e/benchmark/manifest.go b/test/e2e/benchmark/manifest.go index a101c722e6..979d009e98 100644 --- a/test/e2e/benchmark/manifest.go +++ b/test/e2e/benchmark/manifest.go @@ -8,7 +8,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/test/e2e/testnet" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) diff --git a/test/txsim/blob.go b/test/txsim/blob.go index e9a44b4d09..23b954c6ad 100644 --- a/test/txsim/blob.go +++ b/test/txsim/blob.go @@ -7,7 +7,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - blob "github.com/celestiaorg/celestia-app/x/blob/types" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" ns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/types" "github.com/gogo/protobuf/grpc" diff --git a/test/txsim/run_test.go b/test/txsim/run_test.go index 49969fa531..0c595befd9 100644 --- a/test/txsim/run_test.go +++ b/test/txsim/run_test.go @@ -17,7 +17,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" - blob "github.com/celestiaorg/celestia-app/x/blob/types" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" bank "github.com/cosmos/cosmos-sdk/x/bank/types" distribution "github.com/cosmos/cosmos-sdk/x/distribution/types" staking "github.com/cosmos/cosmos-sdk/x/staking/types" diff --git a/test/util/blobfactory/payforblob_factory.go b/test/util/blobfactory/payforblob_factory.go index 524ff7dfd1..9860999940 100644 --- a/test/util/blobfactory/payforblob_factory.go +++ b/test/util/blobfactory/payforblob_factory.go @@ -9,7 +9,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/user" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client" diff --git a/test/util/genesis/modifier.go b/test/util/genesis/modifier.go index 91da6b2cd7..20c62fb768 100644 --- a/test/util/genesis/modifier.go +++ b/test/util/genesis/modifier.go @@ -5,8 +5,8 @@ import ( "time" "github.com/celestiaorg/celestia-app/v2/app" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" bstypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/test/util/sdkutil/proposals.go b/test/util/sdkutil/proposals.go index bd4b7b35c6..515ada09ae 100644 --- a/test/util/sdkutil/proposals.go +++ b/test/util/sdkutil/proposals.go @@ -3,7 +3,7 @@ package sdkutil import ( "fmt" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/x/params/types/proposal" diff --git a/test/util/testnode/full_node_test.go b/test/util/testnode/full_node_test.go index 884d703400..b217ffeee7 100644 --- a/test/util/testnode/full_node_test.go +++ b/test/util/testnode/full_node_test.go @@ -10,7 +10,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/stretchr/testify/require" diff --git a/test/util/testnode/node_interaction_api.go b/test/util/testnode/node_interaction_api.go index a992bc8125..44d997ea5a 100644 --- a/test/util/testnode/node_interaction_api.go +++ b/test/util/testnode/node_interaction_api.go @@ -12,7 +12,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/pkg/user" "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/celestiaorg/go-square/shares" diff --git a/x/blob/ante/ante.go b/x/blob/ante/ante.go index 68912bb38d..0266060e83 100644 --- a/x/blob/ante/ante.go +++ b/x/blob/ante/ante.go @@ -1,7 +1,7 @@ package ante import ( - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/ante_test.go b/x/blob/ante/ante_test.go index 19a33eba80..1ef8a8469c 100644 --- a/x/blob/ante/ante_test.go +++ b/x/blob/ante/ante_test.go @@ -6,10 +6,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - ante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + ante "github.com/rootulp/celestia-app/x/blob/ante" + blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/ante/blob_share_decorator.go b/x/blob/ante/blob_share_decorator.go index 0879efb431..230c7bbcce 100644 --- a/x/blob/ante/blob_share_decorator.go +++ b/x/blob/ante/blob_share_decorator.go @@ -3,8 +3,8 @@ package ante import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/blob_share_decorator_test.go b/x/blob/ante/blob_share_decorator_test.go index 0a0ec276e3..5342b71c7f 100644 --- a/x/blob/ante/blob_share_decorator_test.go +++ b/x/blob/ante/blob_share_decorator_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - ante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + ante "github.com/rootulp/celestia-app/x/blob/ante" + blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/ante/max_total_blob_size_ante.go b/x/blob/ante/max_total_blob_size_ante.go index eedd1401f2..3bd44fd262 100644 --- a/x/blob/ante/max_total_blob_size_ante.go +++ b/x/blob/ante/max_total_blob_size_ante.go @@ -4,9 +4,9 @@ import ( "cosmossdk.io/errors" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" ) // MaxTotalBlobSizeDecorator helps to prevent a PFB from being included in a diff --git a/x/blob/ante/max_total_blob_size_ante_test.go b/x/blob/ante/max_total_blob_size_ante_test.go index afabf41bcc..b213f96d4f 100644 --- a/x/blob/ante/max_total_blob_size_ante_test.go +++ b/x/blob/ante/max_total_blob_size_ante_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - ante "github.com/celestiaorg/celestia-app/x/blob/ante" - blob "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + ante "github.com/rootulp/celestia-app/x/blob/ante" + blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/client/cli/payforblob.go b/x/blob/client/cli/payforblob.go index 966d3cdddb..03fd00000b 100644 --- a/x/blob/client/cli/payforblob.go +++ b/x/blob/client/cli/payforblob.go @@ -12,7 +12,6 @@ import ( "github.com/spf13/cobra" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client" @@ -20,6 +19,7 @@ import ( "github.com/cosmos/cosmos-sdk/client/input" sdktx "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" ) const ( diff --git a/x/blob/client/cli/query.go b/x/blob/client/cli/query.go index 1c87f71530..5452ade7e7 100644 --- a/x/blob/client/cli/query.go +++ b/x/blob/client/cli/query.go @@ -3,8 +3,8 @@ package cli import ( "fmt" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/query_params.go b/x/blob/client/cli/query_params.go index 0fc3b95b5b..c8751a2442 100644 --- a/x/blob/client/cli/query_params.go +++ b/x/blob/client/cli/query_params.go @@ -3,9 +3,9 @@ package cli import ( "context" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/tx.go b/x/blob/client/cli/tx.go index 825eb6bd0b..83cc3c3e56 100644 --- a/x/blob/client/cli/tx.go +++ b/x/blob/client/cli/tx.go @@ -3,8 +3,8 @@ package cli import ( "fmt" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/testutil/integration_test.go b/x/blob/client/testutil/integration_test.go index eb20f3ffc3..5e2811db96 100644 --- a/x/blob/client/testutil/integration_test.go +++ b/x/blob/client/testutil/integration_test.go @@ -16,11 +16,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - paycli "github.com/celestiaorg/celestia-app/x/blob/client/cli" appns "github.com/celestiaorg/go-square/namespace" + paycli "github.com/rootulp/celestia-app/x/blob/client/cli" abci "github.com/tendermint/tendermint/abci/types" ) diff --git a/x/blob/genesis.go b/x/blob/genesis.go index f21f8514f8..98dd5559b1 100644 --- a/x/blob/genesis.go +++ b/x/blob/genesis.go @@ -1,9 +1,9 @@ package blob import ( - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/blob/go.mod b/x/blob/go.mod index 3ced26aea8..4f503476bc 100644 --- a/x/blob/go.mod +++ b/x/blob/go.mod @@ -1,4 +1,4 @@ -module github.com/celestiaorg/celestia-app/x/blob +module github.com/rootulp/celestia-app/x/blob go 1.22.4 diff --git a/x/blob/handler.go b/x/blob/handler.go index 91050ff4b0..a888d1258b 100644 --- a/x/blob/handler.go +++ b/x/blob/handler.go @@ -4,10 +4,10 @@ import ( "fmt" "cosmossdk.io/errors" - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" ) // NewHandler uses the provided blob keeper to create an sdk.Handler diff --git a/x/blob/keeper/gas_test.go b/x/blob/keeper/gas_test.go index e000db8b39..1a3b8f9b79 100644 --- a/x/blob/keeper/gas_test.go +++ b/x/blob/keeper/gas_test.go @@ -4,8 +4,8 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) diff --git a/x/blob/keeper/genesis_test.go b/x/blob/keeper/genesis_test.go index 5dc450c55e..ca4dee2c1a 100644 --- a/x/blob/keeper/genesis_test.go +++ b/x/blob/keeper/genesis_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" - "github.com/celestiaorg/celestia-app/x/blob" - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/grpc_query.go b/x/blob/keeper/grpc_query.go index a81d6f19f3..57b49b1f04 100644 --- a/x/blob/keeper/grpc_query.go +++ b/x/blob/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/blob/keeper/grpc_query_params.go b/x/blob/keeper/grpc_query_params.go index 492c428c26..90aae0c419 100644 --- a/x/blob/keeper/grpc_query_params.go +++ b/x/blob/keeper/grpc_query_params.go @@ -3,8 +3,8 @@ package keeper import ( "context" - "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/x/blob/keeper/grpc_query_params_test.go b/x/blob/keeper/grpc_query_params_test.go index 3398c8ecae..a97d25744e 100644 --- a/x/blob/keeper/grpc_query_params_test.go +++ b/x/blob/keeper/grpc_query_params_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" - "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/keeper.go b/x/blob/keeper/keeper.go index bb69acfd29..cb0126f7b4 100644 --- a/x/blob/keeper/keeper.go +++ b/x/blob/keeper/keeper.go @@ -4,10 +4,10 @@ import ( "context" "fmt" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/tendermint/tendermint/libs/log" ) diff --git a/x/blob/keeper/keeper_test.go b/x/blob/keeper/keeper_test.go index 41f6df1491..5d848514f2 100644 --- a/x/blob/keeper/keeper_test.go +++ b/x/blob/keeper/keeper_test.go @@ -7,8 +7,6 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" testutil "github.com/celestiaorg/celestia-app/v2/test/util" - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/codec" @@ -16,6 +14,8 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/gogo/protobuf/proto" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/keeper/msg_server.go b/x/blob/keeper/msg_server.go index 8dbda328d3..2ec1c069a3 100644 --- a/x/blob/keeper/msg_server.go +++ b/x/blob/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" ) var _ types.MsgServer = msgServer{} diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index 9be99523fa..8b32725a43 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -1,8 +1,8 @@ package keeper import ( - "github.com/celestiaorg/celestia-app/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" ) // GetParams gets all parameters as types.Params diff --git a/x/blob/keeper/params_test.go b/x/blob/keeper/params_test.go index 95a533d880..ee914f2192 100644 --- a/x/blob/keeper/params_test.go +++ b/x/blob/keeper/params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "testing" - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/module.go b/x/blob/module.go index 575458023f..ef9ab40e40 100644 --- a/x/blob/module.go +++ b/x/blob/module.go @@ -11,14 +11,14 @@ import ( abci "github.com/tendermint/tendermint/abci/types" - "github.com/celestiaorg/celestia-app/x/blob/client/cli" - "github.com/celestiaorg/celestia-app/x/blob/keeper" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" + "github.com/rootulp/celestia-app/x/blob/client/cli" + "github.com/rootulp/celestia-app/x/blob/keeper" + "github.com/rootulp/celestia-app/x/blob/types" ) var ( diff --git a/x/blob/test/decode_blob_tx_test.go b/x/blob/test/decode_blob_tx_test.go index 20faf4401f..fdd7dde456 100644 --- a/x/blob/test/decode_blob_tx_test.go +++ b/x/blob/test/decode_blob_tx_test.go @@ -11,9 +11,9 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/cosmos/cosmos-sdk/types" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/tendermint/tendermint/proto/tendermint/blockchain" ) diff --git a/x/blob/types/blob_tx_test.go b/x/blob/types/blob_tx_test.go index 1964edde33..6ea7aa04ce 100644 --- a/x/blob/types/blob_tx_test.go +++ b/x/blob/types/blob_tx_test.go @@ -10,13 +10,13 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" "github.com/celestiaorg/go-square/merkle" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmrand "github.com/tendermint/tendermint/libs/rand" diff --git a/x/blob/types/estimate_gas_test.go b/x/blob/types/estimate_gas_test.go index bfeaec94f9..38ddbeddc5 100644 --- a/x/blob/types/estimate_gas_test.go +++ b/x/blob/types/estimate_gas_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/go-square/blob" "github.com/stretchr/testify/require" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" + blobtypes "github.com/rootulp/celestia-app/x/blob/types" abci "github.com/tendermint/tendermint/abci/types" tmrand "github.com/tendermint/tendermint/libs/rand" ) diff --git a/x/blob/types/genesis_test.go b/x/blob/types/genesis_test.go index 63359d58b3..f952053a3e 100644 --- a/x/blob/types/genesis_test.go +++ b/x/blob/types/genesis_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/x/blob/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/types/payforblob_test.go b/x/blob/types/payforblob_test.go index b7aac4a4aa..1df654322a 100644 --- a/x/blob/types/payforblob_test.go +++ b/x/blob/types/payforblob_test.go @@ -8,12 +8,12 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" - "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" appns "github.com/celestiaorg/go-square/namespace" shares "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto/merkle" diff --git a/x/paramfilter/test/gov_params_test.go b/x/paramfilter/test/gov_params_test.go index 6fa7cf776c..c9c6b83efa 100644 --- a/x/paramfilter/test/gov_params_test.go +++ b/x/paramfilter/test/gov_params_test.go @@ -6,10 +6,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" testutil "github.com/celestiaorg/celestia-app/v2/test/util" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" bsmoduletypes "github.com/celestiaorg/celestia-app/v2/x/blobstream/types" minfeetypes "github.com/celestiaorg/celestia-app/v2/x/minfee" "github.com/celestiaorg/celestia-app/v2/x/paramfilter" - blobtypes "github.com/celestiaorg/celestia-app/x/blob/types" "github.com/cosmos/cosmos-sdk/baseapp" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" From 0afbc2a4536c79996502e925c206696e3ca62f1b Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:45 -0400 Subject: [PATCH 025/140] Revert "fix: imports" This reverts commit c8e2b9737cedc8d13040f52ea744af79beef9087. --- x/blob/ante/ante.go | 2 +- x/blob/ante/ante_test.go | 4 ++-- x/blob/ante/blob_share_decorator.go | 2 +- x/blob/ante/blob_share_decorator_test.go | 4 ++-- x/blob/ante/max_total_blob_size_ante.go | 2 +- x/blob/ante/max_total_blob_size_ante_test.go | 4 ++-- x/blob/client/cli/payforblob.go | 2 +- x/blob/client/cli/query.go | 2 +- x/blob/client/cli/query_params.go | 2 +- x/blob/client/cli/tx.go | 2 +- x/blob/client/testutil/integration_test.go | 4 ++-- x/blob/genesis.go | 4 ++-- x/blob/handler.go | 4 ++-- x/blob/keeper/gas_test.go | 2 +- x/blob/keeper/genesis_test.go | 4 ++-- x/blob/keeper/grpc_query.go | 2 +- x/blob/keeper/grpc_query_params.go | 2 +- x/blob/keeper/grpc_query_params_test.go | 2 +- x/blob/keeper/keeper.go | 2 +- x/blob/keeper/keeper_test.go | 4 ++-- x/blob/keeper/msg_server.go | 2 +- x/blob/keeper/params.go | 2 +- x/blob/keeper/params_test.go | 2 +- x/blob/module.go | 6 +++--- x/blob/test/decode_blob_tx_test.go | 2 +- x/blob/types/blob_tx_test.go | 2 +- x/blob/types/estimate_gas_test.go | 2 +- x/blob/types/genesis_test.go | 2 +- x/blob/types/payforblob_test.go | 2 +- 29 files changed, 39 insertions(+), 39 deletions(-) diff --git a/x/blob/ante/ante.go b/x/blob/ante/ante.go index 0266060e83..55aa8a1f40 100644 --- a/x/blob/ante/ante.go +++ b/x/blob/ante/ante.go @@ -1,7 +1,7 @@ package ante import ( - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/ante_test.go b/x/blob/ante/ante_test.go index 1ef8a8469c..a45dcbf9ce 100644 --- a/x/blob/ante/ante_test.go +++ b/x/blob/ante/ante_test.go @@ -6,10 +6,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + ante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - ante "github.com/rootulp/celestia-app/x/blob/ante" - blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/ante/blob_share_decorator.go b/x/blob/ante/blob_share_decorator.go index 230c7bbcce..68c361bc16 100644 --- a/x/blob/ante/blob_share_decorator.go +++ b/x/blob/ante/blob_share_decorator.go @@ -3,8 +3,8 @@ package ante import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/blob/ante/blob_share_decorator_test.go b/x/blob/ante/blob_share_decorator_test.go index 5342b71c7f..ec6f73e703 100644 --- a/x/blob/ante/blob_share_decorator_test.go +++ b/x/blob/ante/blob_share_decorator_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + ante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - ante "github.com/rootulp/celestia-app/x/blob/ante" - blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/ante/max_total_blob_size_ante.go b/x/blob/ante/max_total_blob_size_ante.go index 3bd44fd262..7c947fd059 100644 --- a/x/blob/ante/max_total_blob_size_ante.go +++ b/x/blob/ante/max_total_blob_size_ante.go @@ -4,9 +4,9 @@ import ( "cosmossdk.io/errors" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" ) // MaxTotalBlobSizeDecorator helps to prevent a PFB from being included in a diff --git a/x/blob/ante/max_total_blob_size_ante_test.go b/x/blob/ante/max_total_blob_size_ante_test.go index b213f96d4f..296971eadd 100644 --- a/x/blob/ante/max_total_blob_size_ante_test.go +++ b/x/blob/ante/max_total_blob_size_ante_test.go @@ -7,10 +7,10 @@ import ( "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + ante "github.com/celestiaorg/celestia-app/v2/x/blob/ante" + blob "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - ante "github.com/rootulp/celestia-app/x/blob/ante" - blob "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/client/cli/payforblob.go b/x/blob/client/cli/payforblob.go index 03fd00000b..76ff9d6926 100644 --- a/x/blob/client/cli/payforblob.go +++ b/x/blob/client/cli/payforblob.go @@ -12,6 +12,7 @@ import ( "github.com/spf13/cobra" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/client" @@ -19,7 +20,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/input" sdktx "github.com/cosmos/cosmos-sdk/client/tx" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" ) const ( diff --git a/x/blob/client/cli/query.go b/x/blob/client/cli/query.go index 5452ade7e7..db38daefa8 100644 --- a/x/blob/client/cli/query.go +++ b/x/blob/client/cli/query.go @@ -3,8 +3,8 @@ package cli import ( "fmt" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/query_params.go b/x/blob/client/cli/query_params.go index c8751a2442..e25709bed8 100644 --- a/x/blob/client/cli/query_params.go +++ b/x/blob/client/cli/query_params.go @@ -3,9 +3,9 @@ package cli import ( "context" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/cli/tx.go b/x/blob/client/cli/tx.go index 83cc3c3e56..0b916aee3f 100644 --- a/x/blob/client/cli/tx.go +++ b/x/blob/client/cli/tx.go @@ -3,8 +3,8 @@ package cli import ( "fmt" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/spf13/cobra" ) diff --git a/x/blob/client/testutil/integration_test.go b/x/blob/client/testutil/integration_test.go index 5e2811db96..4adc9cf52a 100644 --- a/x/blob/client/testutil/integration_test.go +++ b/x/blob/client/testutil/integration_test.go @@ -16,11 +16,11 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + paycli "github.com/celestiaorg/celestia-app/v2/x/blob/client/cli" appns "github.com/celestiaorg/go-square/namespace" - paycli "github.com/rootulp/celestia-app/x/blob/client/cli" abci "github.com/tendermint/tendermint/abci/types" ) diff --git a/x/blob/genesis.go b/x/blob/genesis.go index 98dd5559b1..8076f9eb9b 100644 --- a/x/blob/genesis.go +++ b/x/blob/genesis.go @@ -1,9 +1,9 @@ package blob import ( + "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" ) // InitGenesis initializes the capability module's state from a provided genesis diff --git a/x/blob/handler.go b/x/blob/handler.go index a888d1258b..d0ce2fb40d 100644 --- a/x/blob/handler.go +++ b/x/blob/handler.go @@ -4,10 +4,10 @@ import ( "fmt" "cosmossdk.io/errors" + "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" ) // NewHandler uses the provided blob keeper to create an sdk.Handler diff --git a/x/blob/keeper/gas_test.go b/x/blob/keeper/gas_test.go index 1a3b8f9b79..06311a92f8 100644 --- a/x/blob/keeper/gas_test.go +++ b/x/blob/keeper/gas_test.go @@ -4,8 +4,8 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" ) diff --git a/x/blob/keeper/genesis_test.go b/x/blob/keeper/genesis_test.go index ca4dee2c1a..f791f9095d 100644 --- a/x/blob/keeper/genesis_test.go +++ b/x/blob/keeper/genesis_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" - "github.com/rootulp/celestia-app/x/blob" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/grpc_query.go b/x/blob/keeper/grpc_query.go index 57b49b1f04..0db537b1eb 100644 --- a/x/blob/keeper/grpc_query.go +++ b/x/blob/keeper/grpc_query.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" ) var _ types.QueryServer = Keeper{} diff --git a/x/blob/keeper/grpc_query_params.go b/x/blob/keeper/grpc_query_params.go index 90aae0c419..9e4708a6d8 100644 --- a/x/blob/keeper/grpc_query_params.go +++ b/x/blob/keeper/grpc_query_params.go @@ -3,8 +3,8 @@ package keeper import ( "context" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/x/blob/keeper/grpc_query_params_test.go b/x/blob/keeper/grpc_query_params_test.go index a97d25744e..a531d173fd 100644 --- a/x/blob/keeper/grpc_query_params_test.go +++ b/x/blob/keeper/grpc_query_params_test.go @@ -3,8 +3,8 @@ package keeper_test import ( "testing" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/keeper/keeper.go b/x/blob/keeper/keeper.go index cb0126f7b4..871c947634 100644 --- a/x/blob/keeper/keeper.go +++ b/x/blob/keeper/keeper.go @@ -4,10 +4,10 @@ import ( "context" "fmt" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/tendermint/tendermint/libs/log" ) diff --git a/x/blob/keeper/keeper_test.go b/x/blob/keeper/keeper_test.go index 5d848514f2..c1c83959ad 100644 --- a/x/blob/keeper/keeper_test.go +++ b/x/blob/keeper/keeper_test.go @@ -7,6 +7,8 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" testutil "github.com/celestiaorg/celestia-app/v2/test/util" + "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" appns "github.com/celestiaorg/go-square/namespace" "github.com/cosmos/cosmos-sdk/codec" @@ -14,8 +16,6 @@ import ( storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" proto "github.com/gogo/protobuf/proto" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" diff --git a/x/blob/keeper/msg_server.go b/x/blob/keeper/msg_server.go index 2ec1c069a3..81ea4b1d62 100644 --- a/x/blob/keeper/msg_server.go +++ b/x/blob/keeper/msg_server.go @@ -1,7 +1,7 @@ package keeper import ( - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" ) var _ types.MsgServer = msgServer{} diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index 8b32725a43..e4e4eee3c1 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -1,8 +1,8 @@ package keeper import ( + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" ) // GetParams gets all parameters as types.Params diff --git a/x/blob/keeper/params_test.go b/x/blob/keeper/params_test.go index ee914f2192..0fc5d4c746 100644 --- a/x/blob/keeper/params_test.go +++ b/x/blob/keeper/params_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "testing" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/module.go b/x/blob/module.go index ef9ab40e40..a5414cbc3e 100644 --- a/x/blob/module.go +++ b/x/blob/module.go @@ -11,14 +11,14 @@ import ( abci "github.com/tendermint/tendermint/abci/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/client/cli" + "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - "github.com/rootulp/celestia-app/x/blob/client/cli" - "github.com/rootulp/celestia-app/x/blob/keeper" - "github.com/rootulp/celestia-app/x/blob/types" ) var ( diff --git a/x/blob/test/decode_blob_tx_test.go b/x/blob/test/decode_blob_tx_test.go index fdd7dde456..cc683b44f5 100644 --- a/x/blob/test/decode_blob_tx_test.go +++ b/x/blob/test/decode_blob_tx_test.go @@ -11,9 +11,9 @@ import ( "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/cosmos/cosmos-sdk/types" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/tendermint/tendermint/proto/tendermint/blockchain" ) diff --git a/x/blob/types/blob_tx_test.go b/x/blob/types/blob_tx_test.go index 6ea7aa04ce..47e0bfea48 100644 --- a/x/blob/types/blob_tx_test.go +++ b/x/blob/types/blob_tx_test.go @@ -10,13 +10,13 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" "github.com/celestiaorg/go-square/merkle" "github.com/celestiaorg/go-square/namespace" sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmrand "github.com/tendermint/tendermint/libs/rand" diff --git a/x/blob/types/estimate_gas_test.go b/x/blob/types/estimate_gas_test.go index 38ddbeddc5..bb13c4b9ed 100644 --- a/x/blob/types/estimate_gas_test.go +++ b/x/blob/types/estimate_gas_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/go-square/blob" "github.com/stretchr/testify/require" - blobtypes "github.com/rootulp/celestia-app/x/blob/types" + blobtypes "github.com/celestiaorg/celestia-app/v2/x/blob/types" abci "github.com/tendermint/tendermint/abci/types" tmrand "github.com/tendermint/tendermint/libs/rand" ) diff --git a/x/blob/types/genesis_test.go b/x/blob/types/genesis_test.go index f952053a3e..0f8364d88b 100644 --- a/x/blob/types/genesis_test.go +++ b/x/blob/types/genesis_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/rootulp/celestia-app/x/blob/types" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/stretchr/testify/require" ) diff --git a/x/blob/types/payforblob_test.go b/x/blob/types/payforblob_test.go index 1df654322a..a665c3da53 100644 --- a/x/blob/types/payforblob_test.go +++ b/x/blob/types/payforblob_test.go @@ -8,12 +8,12 @@ import ( "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" "github.com/celestiaorg/go-square/blob" "github.com/celestiaorg/go-square/inclusion" appns "github.com/celestiaorg/go-square/namespace" shares "github.com/celestiaorg/go-square/shares" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/rootulp/celestia-app/x/blob/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/crypto/merkle" From dd23cb97eb36b8a164a21bd726fce22408d4bb80 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:50 -0400 Subject: [PATCH 026/140] Revert "fix: use rootulp" This reverts commit d70cdebf030a7af74f8a0fc7948e5ae64b57d122. --- x/blob/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/blob/go.mod b/x/blob/go.mod index 4f503476bc..3ced26aea8 100644 --- a/x/blob/go.mod +++ b/x/blob/go.mod @@ -1,4 +1,4 @@ -module github.com/rootulp/celestia-app/x/blob +module github.com/celestiaorg/celestia-app/x/blob go 1.22.4 From c8171b8ca06b205d0bf55cae68f8ee5075e9764c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:18:55 -0400 Subject: [PATCH 027/140] Revert "feat: go mod for x/blob" This reverts commit 03519a93398ccfcbf5f0038e8c0257f3215872f1. --- x/blob/go.mod | 208 ----- x/blob/go.sum | 2025 ------------------------------------------------- 2 files changed, 2233 deletions(-) delete mode 100644 x/blob/go.mod delete mode 100644 x/blob/go.sum diff --git a/x/blob/go.mod b/x/blob/go.mod deleted file mode 100644 index 3ced26aea8..0000000000 --- a/x/blob/go.mod +++ /dev/null @@ -1,208 +0,0 @@ -module github.com/celestiaorg/celestia-app/x/blob - -go 1.22.4 - -require ( - cosmossdk.io/errors v1.0.1 - github.com/celestiaorg/celestia-app/v2 v2.0.0 - github.com/celestiaorg/go-square v1.1.0 - github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 - github.com/cosmos/cosmos-sdk v0.46.16 - github.com/cosmos/gogoproto v1.5.0 - github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.5.4 - github.com/gorilla/mux v1.8.1 - github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/spf13/cobra v1.8.1 - github.com/stretchr/testify v1.9.0 - github.com/tendermint/tendermint v0.34.29 - github.com/tendermint/tm-db v0.6.7 - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 - google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf - google.golang.org/grpc v1.65.0 - gopkg.in/yaml.v2 v2.4.0 -) - -require ( - cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect - cloud.google.com/go/iam v1.1.6 // indirect - cloud.google.com/go/storage v1.38.0 // indirect - cosmossdk.io/math v1.3.0 // indirect - filippo.io/edwards25519 v1.0.0-rc.1 // indirect - github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.2 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect - github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/StackExchange/wmi v1.2.1 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect - github.com/armon/go-metrics v0.4.1 // indirect - github.com/aws/aws-sdk-go v1.44.122 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect - github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect - github.com/celestiaorg/nmt v0.21.0 // indirect - github.com/celestiaorg/rsmt2d v0.13.1 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect - github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/chzyer/readline v1.5.1 // indirect - github.com/cockroachdb/apd/v2 v2.0.2 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect - github.com/cometbft/cometbft-db v0.7.0 // indirect - github.com/confio/ics23/go v0.9.1 // indirect - github.com/consensys/bavard v0.1.13 // indirect - github.com/consensys/gnark-crypto v0.12.1 // indirect - github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect - github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.6 // indirect - github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect - github.com/cosmos/ibc-go/v6 v6.2.2 // indirect - github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect - github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect - github.com/creachadair/taskgroup v0.3.2 // indirect - github.com/danieljoos/wincred v1.1.2 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect - github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.4 // indirect - github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.6.0 // indirect - github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-ethereum v1.14.5 // indirect - github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-kit/kit v0.12.0 // indirect - github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.3.0 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect - github.com/golang/glog v1.2.1 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/orderedcode v0.0.1 // indirect - github.com/google/s2a-go v0.1.7 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.2 // indirect - github.com/gorilla/handlers v1.5.2 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grafana/otel-profiling-go v0.5.1 // indirect - github.com/grafana/pyroscope-go v1.1.1 // indirect - github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect - github.com/gtank/merlin v0.1.1 // indirect - github.com/gtank/ristretto255 v0.1.2 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.4 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect - github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect - github.com/holiman/uint256 v1.2.4 // indirect - github.com/iancoleman/orderedmap v0.2.0 // indirect - github.com/improbable-eng/grpc-web v0.15.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.6 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect - github.com/klauspost/reedsolomon v1.12.1 // indirect - github.com/lib/pq v1.10.7 // indirect - github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect - github.com/manifoldco/promptui v0.9.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect - github.com/minio/highwayhash v1.0.2 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mmcloughlin/addchain v0.4.0 // indirect - github.com/mtibben/percent v0.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.1.0 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect - github.com/rakyll/statik v0.1.7 // indirect - github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/regen-network/cosmos-proto v0.3.1 // indirect - github.com/rs/cors v1.8.3 // indirect - github.com/rs/zerolog v1.33.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/shirou/gopsutil v3.21.6+incompatible // indirect - github.com/spf13/afero v1.11.0 // indirect - github.com/spf13/cast v1.6.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.15.0 // indirect - github.com/subosito/gotenv v1.6.0 // indirect - github.com/supranational/blst v0.3.11 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect - github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tidwall/btree v1.5.0 // indirect - github.com/tklauser/go-sysconf v0.3.12 // indirect - github.com/tklauser/numcpus v0.6.1 // indirect - github.com/ulikunitz/xz v0.5.10 // indirect - github.com/zondax/hid v0.9.2 // indirect - github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.6 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.26.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect - go.opentelemetry.io/otel/metric v1.26.0 // indirect - go.opentelemetry.io/otel/sdk v1.26.0 // indirect - go.opentelemetry.io/otel/trace v1.26.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.5.0 // indirect - google.golang.org/api v0.169.0 // indirect - google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f // indirect - google.golang.org/protobuf v1.34.2 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.6 // indirect - rsc.io/tmplfunc v0.0.3 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect -) - -replace ( - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 - // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 - // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 - github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 -) diff --git a/x/blob/go.sum b/x/blob/go.sum deleted file mode 100644 index 38d07559a5..0000000000 --- a/x/blob/go.sum +++ /dev/null @@ -1,2025 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= -cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= -cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= -cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= -cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= -cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= -cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= -cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= -git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= -github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= -github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= -github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= -github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= -github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= -github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= -github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= -github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= -github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= -github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= -github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= -github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= -github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= -github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= -github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= -github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= -github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= -github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= -github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= -github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= -github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= -github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= -github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= -github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= -github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= -github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= -github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= -github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= -github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= -github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= -github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= -github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= -github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= -github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= -github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= -github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= -github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-app/v2 v2.0.0 h1:cGrkLbqbaNqj+g+LhvmQ0iFKFyrD/GdU5z3WQI/bq8E= -github.com/celestiaorg/celestia-app/v2 v2.0.0/go.mod h1:0wP0W+GLghvsODxLhAYToKsy0RFKeg1HdZftQG90W5A= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= -github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= -github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3 h1:wP84mtwOCVNOTfS3zErICjxKLnh74Z1uf+tdrlSFjVM= -github.com/celestiaorg/go-square/merkle v0.0.0-20240627094109-7d01436067a3/go.mod h1:86qIYnEhmn/hfW+xvw98NOI3zGaDEB3x8JGjYo2FqLs= -github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= -github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= -github.com/celestiaorg/nmt v0.21.0 h1:81MBqxNn3orByoiCtdNVjwi5WsLgMkzHwP02ZMhTBHM= -github.com/celestiaorg/nmt v0.21.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= -github.com/celestiaorg/rsmt2d v0.13.1 h1:eRhp79DKTkDojwInKVs1lRK6f6zJc1BVlmZfUfI19yQ= -github.com/celestiaorg/rsmt2d v0.13.1/go.mod h1:P7t92OATXbBmc/P5uR+GCOBv+PV8wLb0vU32ucrb148= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= -github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= -github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= -github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= -github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= -github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= -github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.0 h1:pcFh8CdCIt2kmEpK0OIatq67Ln9uGDYY3d5XnE0LJG4= -github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= -github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= -github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= -github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= -github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= -github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= -github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= -github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= -github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= -github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= -github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= -github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= -github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= -github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= -github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= -github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= -github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= -github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= -github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= -github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= -github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= -github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= -github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= -github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= -github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= -github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= -github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= -github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= -github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= -github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= -github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= -github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= -github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= -github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= -github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= -github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= -github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= -github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= -github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= -github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= -github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= -github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= -github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= -github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= -github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= -github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= -github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= -github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= -github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= -github.com/ethereum/go-ethereum v1.14.5 h1:szuFzO1MhJmweXjoM5nSAeDvjNUH3vIQoMzzQnfvjpw= -github.com/ethereum/go-ethereum v1.14.5/go.mod h1:VEDGGhSxY7IEjn98hJRFXl/uFvpRgbIIf2PpXiyGGgc= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= -github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= -github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= -github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= -github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= -github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= -github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= -github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= -github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= -github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= -github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= -github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= -github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= -github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= -github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= -github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= -github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= -github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= -github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= -github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= -github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= -github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= -github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= -github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= -github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= -github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= -github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= -github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= -github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= -github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= -github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= -github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= -github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= -github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= -github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= -github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= -github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= -github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= -github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= -github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= -github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= -github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= -github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= -github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= -github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= -github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= -github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= -github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= -github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= -github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= -github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= -github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= -github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= -github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= -github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= -github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= -github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= -github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= -github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= -github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= -github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= -github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= -github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= -github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= -github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= -github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= -github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= -github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= -github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= -github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= -github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= -github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= -github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= -github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= -github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= -github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= -github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= -github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= -github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= -github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= -github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= -github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= -github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= -github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= -github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= -github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= -github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= -github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= -github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= -github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= -github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= -github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= -github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= -github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= -github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= -github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= -github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= -github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= -github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= -github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= -github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= -github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= -github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= -github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= -github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= -github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= -github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= -github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= -github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= -github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= -github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= -github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= -github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= -github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= -github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= -gitlab.com/NebulousLabs/errors v0.0.0-20171229012116-7ead97ef90b8/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= -gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bFzUeKx6m3XjlmBgIUlykX9dzvp5k9NGxc= -gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= -gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= -gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= -go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= -go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= -go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= -go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= -go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= -go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= -go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= -go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= -go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= -golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= -google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= -google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= -google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f h1:RARaIm8pxYuxyNPbBQf5igT7XdOyCNtat1qAT2ZxjU4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= -gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= -gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= -pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= -pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= -rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From 537b1e30986138201f41da9c9db2423ae28bcbad Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 15:24:46 -0400 Subject: [PATCH 028/140] test passes if only 1 app is initialized --- node/utils/apps.go | 4 ++-- node/utils/apps_test.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 node/utils/apps_test.go diff --git a/node/utils/apps.go b/node/utils/apps.go index dd4212546e..8ad9dda935 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -11,9 +11,9 @@ import ( ) func GetApps() []types.Application { - v1 := NewAppV1() + // v1 := NewAppV1() v2 := NewAppV2() - return []types.Application{v1, v2} + return []types.Application{v2} } func NewAppV1() *v1.App { diff --git a/node/utils/apps_test.go b/node/utils/apps_test.go new file mode 100644 index 0000000000..71ab08cc93 --- /dev/null +++ b/node/utils/apps_test.go @@ -0,0 +1,12 @@ +package utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGetApps(t *testing.T) { + got := GetApps() + assert.Len(t, got, 1) +} From f6e015788a7222ce2a07cf717c0618116aa8ce00 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 16:57:19 -0400 Subject: [PATCH 029/140] fix: passing unit test by bumping proto package version --- node/utils/apps.go | 6 +- proto/celestia/blob/{v1 => v2}/event.proto | 2 +- proto/celestia/blob/{v1 => v2}/genesis.proto | 4 +- proto/celestia/blob/{v1 => v2}/params.proto | 2 +- proto/celestia/blob/{v1 => v2}/query.proto | 4 +- proto/celestia/blob/{v1 => v2}/tx.proto | 2 +- proto/celestia/qgb/{v1 => v2}/genesis.proto | 4 +- proto/celestia/qgb/{v1 => v2}/query.proto | 6 +- proto/celestia/qgb/{v1 => v2}/tx.proto | 2 +- proto/celestia/qgb/{v1 => v2}/types.proto | 2 +- x/blob/types/event.pb.go | 18 +- x/blob/types/genesis.pb.go | 18 +- x/blob/types/params.pb.go | 16 +- x/blob/types/query.pb.go | 40 ++-- x/blob/types/query.pb.gw.go | 2 +- x/blob/types/tx.pb.go | 75 +++--- x/blob/types/tx.pb.gw.go | 2 +- x/blobstream/types/genesis.pb.go | 20 +- x/blobstream/types/query.pb.go | 232 +++++++++---------- x/blobstream/types/query.pb.gw.go | 2 +- x/blobstream/types/tx.pb.go | 42 ++-- x/blobstream/types/tx.pb.gw.go | 2 +- x/blobstream/types/types.pb.go | 64 ++--- 23 files changed, 284 insertions(+), 283 deletions(-) rename proto/celestia/blob/{v1 => v2}/event.proto (95%) rename proto/celestia/blob/{v1 => v2}/genesis.proto (80%) rename proto/celestia/blob/{v1 => v2}/params.proto (94%) rename proto/celestia/blob/{v1 => v2}/query.proto (90%) rename proto/celestia/blob/{v1 => v2}/tx.proto (98%) rename proto/celestia/qgb/{v1 => v2}/genesis.proto (86%) rename proto/celestia/qgb/{v1 => v2}/query.proto (98%) rename proto/celestia/qgb/{v1 => v2}/tx.proto (97%) rename proto/celestia/qgb/{v1 => v2}/types.proto (98%) diff --git a/node/utils/apps.go b/node/utils/apps.go index 8ad9dda935..e0c6de3ea3 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -11,9 +11,9 @@ import ( ) func GetApps() []types.Application { - // v1 := NewAppV1() - v2 := NewAppV2() - return []types.Application{v2} + v1 := NewAppV1() + // v2 := NewAppV2() + return []types.Application{v1} } func NewAppV1() *v1.App { diff --git a/proto/celestia/blob/v1/event.proto b/proto/celestia/blob/v2/event.proto similarity index 95% rename from proto/celestia/blob/v1/event.proto rename to proto/celestia/blob/v2/event.proto index c2dd049dff..d24b2d1e82 100644 --- a/proto/celestia/blob/v1/event.proto +++ b/proto/celestia/blob/v2/event.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.blob.v1; +package celestia.blob.v2; option go_package = "github.com/celestiaorg/celestia-app/x/blob/types"; diff --git a/proto/celestia/blob/v1/genesis.proto b/proto/celestia/blob/v2/genesis.proto similarity index 80% rename from proto/celestia/blob/v1/genesis.proto rename to proto/celestia/blob/v2/genesis.proto index d72bcb19dd..cdd18bfba2 100644 --- a/proto/celestia/blob/v1/genesis.proto +++ b/proto/celestia/blob/v2/genesis.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package celestia.blob.v1; +package celestia.blob.v2; import "gogoproto/gogo.proto"; -import "celestia/blob/v1/params.proto"; +import "celestia/blob/v2/params.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/blob/types"; diff --git a/proto/celestia/blob/v1/params.proto b/proto/celestia/blob/v2/params.proto similarity index 94% rename from proto/celestia/blob/v1/params.proto rename to proto/celestia/blob/v2/params.proto index 20007e259c..62fa833d60 100644 --- a/proto/celestia/blob/v1/params.proto +++ b/proto/celestia/blob/v2/params.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.blob.v1; +package celestia.blob.v2; import "gogoproto/gogo.proto"; diff --git a/proto/celestia/blob/v1/query.proto b/proto/celestia/blob/v2/query.proto similarity index 90% rename from proto/celestia/blob/v1/query.proto rename to proto/celestia/blob/v2/query.proto index 47d484b3c6..cb5ab32c97 100644 --- a/proto/celestia/blob/v1/query.proto +++ b/proto/celestia/blob/v2/query.proto @@ -1,9 +1,9 @@ syntax = "proto3"; -package celestia.blob.v1; +package celestia.blob.v2; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; -import "celestia/blob/v1/params.proto"; +import "celestia/blob/v2/params.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/blob/types"; diff --git a/proto/celestia/blob/v1/tx.proto b/proto/celestia/blob/v2/tx.proto similarity index 98% rename from proto/celestia/blob/v1/tx.proto rename to proto/celestia/blob/v2/tx.proto index 552424c3df..3ffbb55832 100644 --- a/proto/celestia/blob/v1/tx.proto +++ b/proto/celestia/blob/v2/tx.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.blob.v1; +package celestia.blob.v2; import "google/api/annotations.proto"; diff --git a/proto/celestia/qgb/v1/genesis.proto b/proto/celestia/qgb/v2/genesis.proto similarity index 86% rename from proto/celestia/qgb/v1/genesis.proto rename to proto/celestia/qgb/v2/genesis.proto index f574d88e4b..72cb0cc1df 100644 --- a/proto/celestia/qgb/v1/genesis.proto +++ b/proto/celestia/qgb/v2/genesis.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package celestia.qgb.v1; +package celestia.qgb.v2; import "gogoproto/gogo.proto"; -import "celestia/qgb/v1/types.proto"; +import "celestia/qgb/v2/types.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/blobstream/types"; diff --git a/proto/celestia/qgb/v1/query.proto b/proto/celestia/qgb/v2/query.proto similarity index 98% rename from proto/celestia/qgb/v1/query.proto rename to proto/celestia/qgb/v2/query.proto index 83cc445136..222eaf9950 100644 --- a/proto/celestia/qgb/v1/query.proto +++ b/proto/celestia/qgb/v2/query.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package celestia.qgb.v1; +package celestia.qgb.v2; -import "celestia/qgb/v1/genesis.proto"; -import "celestia/qgb/v1/types.proto"; +import "celestia/qgb/v2/genesis.proto"; +import "celestia/qgb/v2/types.proto"; import "google/api/annotations.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/celestia/qgb/v1/tx.proto b/proto/celestia/qgb/v2/tx.proto similarity index 97% rename from proto/celestia/qgb/v1/tx.proto rename to proto/celestia/qgb/v2/tx.proto index b9c4fe1e58..91d7bbf8cc 100644 --- a/proto/celestia/qgb/v1/tx.proto +++ b/proto/celestia/qgb/v2/tx.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.qgb.v1; +package celestia.qgb.v2; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/celestia/qgb/v1/types.proto b/proto/celestia/qgb/v2/types.proto similarity index 98% rename from proto/celestia/qgb/v1/types.proto rename to proto/celestia/qgb/v2/types.proto index 266788e2ab..667a86cdb3 100644 --- a/proto/celestia/qgb/v1/types.proto +++ b/proto/celestia/qgb/v2/types.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.qgb.v1; +package celestia.qgb.v2; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/x/blob/types/event.pb.go b/x/blob/types/event.pb.go index 3f6b1f2019..38db3d4299 100644 --- a/x/blob/types/event.pb.go +++ b/x/blob/types/event.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/event.proto +// source: celestia/blob/v2/event.proto package types @@ -37,7 +37,7 @@ func (m *EventPayForBlobs) Reset() { *m = EventPayForBlobs{} } func (m *EventPayForBlobs) String() string { return proto.CompactTextString(m) } func (*EventPayForBlobs) ProtoMessage() {} func (*EventPayForBlobs) Descriptor() ([]byte, []int) { - return fileDescriptor_9d90f0a63835a06e, []int{0} + return fileDescriptor_c1bd87afcccbad73, []int{0} } func (m *EventPayForBlobs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -88,17 +88,17 @@ func (m *EventPayForBlobs) GetNamespaces() [][]byte { } func init() { - proto.RegisterType((*EventPayForBlobs)(nil), "celestia.blob.v1.EventPayForBlobs") + proto.RegisterType((*EventPayForBlobs)(nil), "celestia.blob.v2.EventPayForBlobs") } -func init() { proto.RegisterFile("celestia/blob/v1/event.proto", fileDescriptor_9d90f0a63835a06e) } +func init() { proto.RegisterFile("celestia/blob/v2/event.proto", fileDescriptor_c1bd87afcccbad73) } -var fileDescriptor_9d90f0a63835a06e = []byte{ +var fileDescriptor_c1bd87afcccbad73 = []byte{ // 214 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x2d, 0x4b, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x4f, 0x2d, 0x4b, 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, - 0xca, 0x0c, 0x95, 0x32, 0xb9, 0x04, 0x5c, 0x41, 0x0a, 0x02, 0x12, 0x2b, 0xdd, 0xf2, 0x8b, 0x9c, + 0xca, 0x8c, 0x94, 0x32, 0xb9, 0x04, 0x5c, 0x41, 0x0a, 0x02, 0x12, 0x2b, 0xdd, 0xf2, 0x8b, 0x9c, 0x72, 0xf2, 0x93, 0x8a, 0x85, 0xc4, 0xb8, 0xd8, 0x8a, 0x33, 0xd3, 0xf3, 0x52, 0x8b, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xa0, 0x3c, 0x21, 0x59, 0x2e, 0x2e, 0x90, 0xb6, 0xf8, 0xe2, 0xcc, 0xaa, 0xd4, 0x62, 0x09, 0x26, 0x05, 0x66, 0x0d, 0xde, 0x20, 0x4e, 0x90, 0x48, 0x30, 0x48, 0x40, @@ -107,8 +107,8 @@ var fileDescriptor_9d90f0a63835a06e = []byte{ 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x0c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x61, 0x2e, 0xcc, 0x2f, 0x4a, 0x87, 0xb3, 0x75, 0x13, 0x0b, 0x0a, 0xf4, 0x2b, 0x20, 0x3e, 0x2a, 0xa9, - 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xfb, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x7b, - 0x9e, 0x60, 0xef, 0x00, 0x00, 0x00, + 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xfb, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xa5, 0xa7, + 0xd4, 0x05, 0xef, 0x00, 0x00, 0x00, } func (m *EventPayForBlobs) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/genesis.pb.go b/x/blob/types/genesis.pb.go index 1811495e62..d17244b724 100644 --- a/x/blob/types/genesis.pb.go +++ b/x/blob/types/genesis.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/genesis.proto +// source: celestia/blob/v2/genesis.proto package types @@ -32,7 +32,7 @@ func (m *GenesisState) Reset() { *m = GenesisState{} } func (m *GenesisState) String() string { return proto.CompactTextString(m) } func (*GenesisState) ProtoMessage() {} func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_c0b3a6e29bb6777c, []int{0} + return fileDescriptor_c7c3e40b121bd302, []int{0} } func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -69,17 +69,17 @@ func (m *GenesisState) GetParams() Params { } func init() { - proto.RegisterType((*GenesisState)(nil), "celestia.blob.v1.GenesisState") + proto.RegisterType((*GenesisState)(nil), "celestia.blob.v2.GenesisState") } -func init() { proto.RegisterFile("celestia/blob/v1/genesis.proto", fileDescriptor_c0b3a6e29bb6777c) } +func init() { proto.RegisterFile("celestia/blob/v2/genesis.proto", fileDescriptor_c7c3e40b121bd302) } -var fileDescriptor_c0b3a6e29bb6777c = []byte{ +var fileDescriptor_c7c3e40b121bd302 = []byte{ // 198 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xeb, 0x81, - 0xe4, 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, + 0xe4, 0xf5, 0xca, 0x8c, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, 0x2c, 0x86, 0x39, 0x05, 0x89, 0x45, 0x89, 0xb9, 0x50, 0x63, 0x94, 0xdc, 0xb8, 0x78, 0xdc, 0x21, 0xe6, 0x06, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x99, 0x71, 0xb1, 0x41, 0xe4, 0x25, 0x18, 0x15, 0x18, 0x35, 0xb8, 0x8d, 0x24, 0xf4, 0xd0, 0xed, 0xd1, 0x0b, 0x00, 0xcb, 0x3b, 0xb1, 0x9c, @@ -87,8 +87,8 @@ var fileDescriptor_c0b3a6e29bb6777c = []byte{ 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x06, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x30, 0xb3, 0xf2, 0x8b, 0xd2, 0xe1, 0x6c, 0xdd, 0xc4, 0x82, 0x02, 0xfd, 0x0a, 0x88, 0xeb, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x4e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x63, - 0x14, 0xe2, 0x03, 0x01, 0x00, 0x00, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x4e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x85, 0xbc, + 0xef, 0xa9, 0x03, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/params.pb.go b/x/blob/types/params.pb.go index ba0f2b2ff3..e80fc2395c 100644 --- a/x/blob/types/params.pb.go +++ b/x/blob/types/params.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/params.proto +// source: celestia/blob/v2/params.proto package types @@ -32,7 +32,7 @@ type Params struct { func (m *Params) Reset() { *m = Params{} } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_2145b82d3e5371c6, []int{0} + return fileDescriptor_f824c8766cbe9195, []int{0} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -76,17 +76,17 @@ func (m *Params) GetGovMaxSquareSize() uint64 { } func init() { - proto.RegisterType((*Params)(nil), "celestia.blob.v1.Params") + proto.RegisterType((*Params)(nil), "celestia.blob.v2.Params") } -func init() { proto.RegisterFile("celestia/blob/v1/params.proto", fileDescriptor_2145b82d3e5371c6) } +func init() { proto.RegisterFile("celestia/blob/v2/params.proto", fileDescriptor_f824c8766cbe9195) } -var fileDescriptor_2145b82d3e5371c6 = []byte{ +var fileDescriptor_f824c8766cbe9195 = []byte{ // 270 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x48, 0x2c, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0x49, 0xeb, 0x81, 0xa4, - 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, + 0xf5, 0xca, 0x8c, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0xd2, 0x32, 0x46, 0x2e, 0xb6, 0x00, 0xb0, 0x46, 0x21, 0x77, 0x2e, 0xc1, 0xf4, 0xc4, 0xe2, 0xf8, 0x82, 0xd4, 0xa2, 0x78, 0x90, 0x9e, 0xf8, 0xa4, 0xca, 0x92, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x5e, 0x27, 0x99, 0x4f, 0xf7, 0xe4, 0x25, 0x2a, 0x13, 0x73, 0x73, 0xac, 0x94, 0x30, 0x94, 0x28, @@ -99,7 +99,7 @@ var fileDescriptor_2145b82d3e5371c6 = []byte{ 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x48, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xf9, 0x3a, 0xbf, 0x28, 0x1d, 0xce, 0xd6, 0x4d, 0x2c, 0x28, 0xd0, 0xaf, 0x80, 0x04, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0xef, 0xc6, - 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x2d, 0x7d, 0x23, 0x44, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xfc, 0x14, 0x00, 0x44, 0x01, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/query.pb.go b/x/blob/types/query.pb.go index c28b5b01ed..2b2c9978fa 100644 --- a/x/blob/types/query.pb.go +++ b/x/blob/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/query.proto +// source: celestia/blob/v2/query.proto package types @@ -37,7 +37,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } func (*QueryParamsRequest) ProtoMessage() {} func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_29ba8a4248383b64, []int{0} + return fileDescriptor_10abf68d6b3a2909, []int{0} } func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -75,7 +75,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_29ba8a4248383b64, []int{1} + return fileDescriptor_10abf68d6b3a2909, []int{1} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -112,18 +112,18 @@ func (m *QueryParamsResponse) GetParams() Params { } func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "celestia.blob.v1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "celestia.blob.v1.QueryParamsResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "celestia.blob.v2.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "celestia.blob.v2.QueryParamsResponse") } -func init() { proto.RegisterFile("celestia/blob/v1/query.proto", fileDescriptor_29ba8a4248383b64) } +func init() { proto.RegisterFile("celestia/blob/v2/query.proto", fileDescriptor_10abf68d6b3a2909) } -var fileDescriptor_29ba8a4248383b64 = []byte{ - // 275 bytes of a gzipped FileDescriptorProto +var fileDescriptor_10abf68d6b3a2909 = []byte{ + // 278 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x2c, 0x4d, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, - 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, + 0xca, 0x8c, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, 0x4c, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x7e, 0x62, 0x41, 0xa6, 0x7e, 0x62, 0x5e, 0x5e, 0x7e, 0x49, 0x62, 0x49, 0x66, 0x7e, 0x5e, 0x31, 0x54, 0x56, 0x16, 0xc3, 0x8e, 0x82, 0xc4, 0xa2, 0xc4, 0x5c, 0xa8, 0xb4, 0x92, 0x08, 0x97, 0x50, 0x20, 0xc8, 0xce, 0x00, 0xb0, 0x60, 0x50, 0x6a, 0x61, @@ -132,12 +132,12 @@ var fileDescriptor_29ba8a4248383b64 = []byte{ 0x13, 0xf5, 0x20, 0x3a, 0x9c, 0x58, 0x4e, 0xdc, 0x93, 0x67, 0x08, 0x82, 0xaa, 0x36, 0x2a, 0xe7, 0x62, 0x05, 0x1b, 0x27, 0x94, 0xc7, 0xc5, 0x06, 0x51, 0x20, 0xa4, 0x82, 0xa9, 0x15, 0xd3, 0x1d, 0x52, 0xaa, 0x04, 0x54, 0x41, 0xdc, 0xa5, 0x24, 0xde, 0x74, 0xf9, 0xc9, 0x64, 0x26, 0x41, 0x21, - 0x7e, 0x34, 0x3f, 0x3a, 0x79, 0x9d, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, - 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, - 0x41, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xcc, 0x8e, 0xfc, 0xa2, - 0x74, 0x38, 0x5b, 0x37, 0xb1, 0xa0, 0x40, 0xbf, 0x02, 0x62, 0x5e, 0x49, 0x65, 0x41, 0x6a, 0x71, - 0x12, 0x1b, 0x38, 0xc0, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x7e, 0x20, 0x5f, 0xb5, - 0x01, 0x00, 0x00, + 0x7e, 0xa8, 0x1f, 0x0d, 0xa1, 0x7e, 0x74, 0xf2, 0x3a, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, + 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, + 0x39, 0x86, 0x28, 0x83, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x98, + 0x1d, 0xf9, 0x45, 0xe9, 0x70, 0xb6, 0x6e, 0x62, 0x41, 0x81, 0x7e, 0x05, 0xc4, 0xbc, 0x92, 0xca, + 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x80, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbf, 0xaa, + 0xfb, 0x19, 0xb5, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -166,7 +166,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/celestia.blob.v1.Query/Params", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.blob.v2.Query/Params", in, out, opts...) if err != nil { return nil, err } @@ -201,7 +201,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.blob.v1.Query/Params", + FullMethod: "/celestia.blob.v2.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) @@ -210,7 +210,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.blob.v1.Query", + ServiceName: "celestia.blob.v2.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { @@ -219,7 +219,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/blob/v1/query.proto", + Metadata: "celestia/blob/v2/query.proto", } func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/query.pb.gw.go b/x/blob/types/query.pb.gw.go index 5ee1f38d19..d9d5ded3c6 100644 --- a/x/blob/types/query.pb.gw.go +++ b/x/blob/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/blob/v1/query.proto +// source: celestia/blob/v2/query.proto /* Package types is a reverse proxy. diff --git a/x/blob/types/tx.pb.go b/x/blob/types/tx.pb.go index 35860ed8a0..ee426c87da 100644 --- a/x/blob/types/tx.pb.go +++ b/x/blob/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v1/tx.proto +// source: celestia/blob/v2/tx.proto package types @@ -52,7 +52,7 @@ func (m *MsgPayForBlobs) Reset() { *m = MsgPayForBlobs{} } func (m *MsgPayForBlobs) String() string { return proto.CompactTextString(m) } func (*MsgPayForBlobs) ProtoMessage() {} func (*MsgPayForBlobs) Descriptor() ([]byte, []int) { - return fileDescriptor_9157fbf3d3cd004d, []int{0} + return fileDescriptor_82f557c0bb46a753, []int{0} } func (m *MsgPayForBlobs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -125,7 +125,7 @@ func (m *MsgPayForBlobsResponse) Reset() { *m = MsgPayForBlobsResponse{} func (m *MsgPayForBlobsResponse) String() string { return proto.CompactTextString(m) } func (*MsgPayForBlobsResponse) ProtoMessage() {} func (*MsgPayForBlobsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_9157fbf3d3cd004d, []int{1} + return fileDescriptor_82f557c0bb46a753, []int{1} } func (m *MsgPayForBlobsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -155,36 +155,37 @@ func (m *MsgPayForBlobsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgPayForBlobsResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgPayForBlobs)(nil), "celestia.blob.v1.MsgPayForBlobs") - proto.RegisterType((*MsgPayForBlobsResponse)(nil), "celestia.blob.v1.MsgPayForBlobsResponse") -} - -func init() { proto.RegisterFile("celestia/blob/v1/tx.proto", fileDescriptor_9157fbf3d3cd004d) } - -var fileDescriptor_9157fbf3d3cd004d = []byte{ - // 352 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xcd, 0x4a, 0xc3, 0x40, - 0x14, 0x85, 0x3b, 0x8d, 0x14, 0x3b, 0xda, 0x52, 0x83, 0x94, 0xb4, 0x68, 0x0c, 0x01, 0x21, 0x28, - 0x26, 0x56, 0x77, 0x2e, 0x2b, 0xb8, 0x10, 0x0a, 0x12, 0xc1, 0x85, 0x9b, 0x32, 0x09, 0x63, 0x1a, - 0x48, 0x72, 0x87, 0xdc, 0xb1, 0xb4, 0xdd, 0xe9, 0x13, 0x08, 0x3e, 0x8e, 0x2f, 0xe0, 0xb2, 0xe0, - 0xc6, 0xa5, 0xb4, 0x3e, 0x88, 0x24, 0xfd, 0xb1, 0x75, 0xe3, 0x2e, 0xf7, 0x3b, 0x87, 0x73, 0x6e, - 0xe6, 0xd2, 0x86, 0xcf, 0x23, 0x8e, 0x32, 0x64, 0x8e, 0x17, 0x81, 0xe7, 0xf4, 0x5b, 0x8e, 0x1c, - 0xd8, 0x22, 0x05, 0x09, 0x6a, 0x6d, 0x21, 0xd9, 0x99, 0x64, 0xf7, 0x5b, 0xcd, 0xbd, 0x00, 0x20, - 0x88, 0xb8, 0xc3, 0x44, 0xe8, 0xb0, 0x24, 0x01, 0xc9, 0x64, 0x08, 0x09, 0xce, 0xfc, 0xe6, 0x1b, - 0xa1, 0xd5, 0x0e, 0x06, 0x37, 0x6c, 0x78, 0x05, 0x69, 0x3b, 0x02, 0x0f, 0xd5, 0x3a, 0x2d, 0x61, - 0x18, 0x24, 0x3c, 0xd5, 0x88, 0x41, 0xac, 0xb2, 0x3b, 0x9f, 0x54, 0x9d, 0xd2, 0x84, 0xc5, 0x1c, - 0x05, 0xf3, 0x39, 0x6a, 0x45, 0x43, 0xb1, 0xb6, 0xdd, 0x15, 0xa2, 0xee, 0x53, 0x9a, 0x75, 0x76, - 0x31, 0x1c, 0x71, 0xd4, 0x14, 0x43, 0xb1, 0x2a, 0x6e, 0x39, 0x23, 0xb7, 0x19, 0x50, 0x8f, 0xe9, - 0x0e, 0xf6, 0x58, 0xca, 0xbb, 0x3e, 0xc4, 0x71, 0x28, 0x63, 0x9e, 0x48, 0xd4, 0x36, 0xf2, 0x94, - 0x5a, 0x2e, 0x5c, 0xfe, 0x72, 0xf5, 0x90, 0x56, 0x67, 0xe6, 0x3e, 0x4f, 0x31, 0x5b, 0x57, 0xdb, - 0xcc, 0xf3, 0x2a, 0x39, 0xbd, 0x9b, 0x43, 0x53, 0xa3, 0xf5, 0xf5, 0xe5, 0x5d, 0x8e, 0x02, 0x12, - 0xe4, 0x67, 0x4f, 0x84, 0x2a, 0x1d, 0x0c, 0xd4, 0x11, 0xdd, 0x5a, 0xfd, 0x37, 0xc3, 0xfe, 0xfb, - 0x3e, 0xf6, 0x7a, 0x40, 0xd3, 0xfa, 0xcf, 0xb1, 0xa8, 0x30, 0x0f, 0x9e, 0x3f, 0xbe, 0x5f, 0x8b, - 0x0d, 0x73, 0x77, 0x79, 0x05, 0xc1, 0x86, 0x0f, 0x90, 0x66, 0x13, 0x5e, 0x90, 0xa3, 0xf6, 0xf5, - 0xfb, 0x44, 0x27, 0xe3, 0x89, 0x4e, 0xbe, 0x26, 0x3a, 0x79, 0x99, 0xea, 0x85, 0xf1, 0x54, 0x2f, - 0x7c, 0x4e, 0xf5, 0xc2, 0xfd, 0x69, 0x10, 0xca, 0xde, 0xa3, 0x67, 0xfb, 0x10, 0x3b, 0x8b, 0x3a, - 0x48, 0x83, 0xe5, 0xf7, 0x09, 0x13, 0xc2, 0x19, 0xcc, 0x72, 0xe5, 0x50, 0x70, 0xf4, 0x4a, 0xf9, - 0xb9, 0xce, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x82, 0x67, 0x80, 0x6a, 0xfb, 0x01, 0x00, 0x00, + proto.RegisterType((*MsgPayForBlobs)(nil), "celestia.blob.v2.MsgPayForBlobs") + proto.RegisterType((*MsgPayForBlobsResponse)(nil), "celestia.blob.v2.MsgPayForBlobsResponse") +} + +func init() { proto.RegisterFile("celestia/blob/v2/tx.proto", fileDescriptor_82f557c0bb46a753) } + +var fileDescriptor_82f557c0bb46a753 = []byte{ + // 356 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xc1, 0x4a, 0xeb, 0x40, + 0x14, 0x86, 0x3b, 0xcd, 0xa5, 0xdc, 0xce, 0xbd, 0x2d, 0xbd, 0xe1, 0x52, 0xd2, 0xa2, 0x31, 0x04, + 0x84, 0xa0, 0x98, 0xd1, 0xba, 0x73, 0x59, 0xc1, 0x85, 0x50, 0x90, 0x08, 0x2e, 0xdc, 0x94, 0x49, + 0x18, 0xd3, 0x40, 0x92, 0x33, 0xe4, 0x8c, 0xa5, 0xed, 0x4e, 0x9f, 0x40, 0xf0, 0x71, 0x7c, 0x01, + 0x97, 0x05, 0x37, 0x2e, 0xa5, 0xf5, 0x41, 0x24, 0x69, 0xab, 0xad, 0x1b, 0x77, 0x39, 0xdf, 0xff, + 0xf3, 0xff, 0x27, 0x73, 0x68, 0x2b, 0x10, 0xb1, 0x40, 0x15, 0x71, 0xe6, 0xc7, 0xe0, 0xb3, 0x61, + 0x87, 0xa9, 0x91, 0x2b, 0x33, 0x50, 0xa0, 0x37, 0x56, 0x92, 0x9b, 0x4b, 0xee, 0xb0, 0xd3, 0xde, + 0x0a, 0x01, 0xc2, 0x58, 0x30, 0x2e, 0x23, 0xc6, 0xd3, 0x14, 0x14, 0x57, 0x11, 0xa4, 0xb8, 0xf0, + 0xdb, 0x4f, 0x84, 0xd6, 0x7b, 0x18, 0x5e, 0xf0, 0xf1, 0x19, 0x64, 0xdd, 0x18, 0x7c, 0xd4, 0x9b, + 0xb4, 0x82, 0x51, 0x98, 0x8a, 0xcc, 0x20, 0x16, 0x71, 0xaa, 0xde, 0x72, 0xd2, 0x4d, 0x4a, 0x53, + 0x9e, 0x08, 0x94, 0x3c, 0x10, 0x68, 0x94, 0x2d, 0xcd, 0xf9, 0xeb, 0xad, 0x11, 0x7d, 0x9b, 0xd2, + 0xbc, 0xb3, 0x8f, 0xd1, 0x44, 0xa0, 0xa1, 0x59, 0x9a, 0x53, 0xf3, 0xaa, 0x39, 0xb9, 0xcc, 0x81, + 0xbe, 0x4f, 0xff, 0xe1, 0x80, 0x67, 0xa2, 0x1f, 0x40, 0x92, 0x44, 0x2a, 0x11, 0xa9, 0x42, 0xe3, + 0x57, 0x91, 0xd2, 0x28, 0x84, 0xd3, 0x2f, 0xae, 0xef, 0xd2, 0xfa, 0xc2, 0x3c, 0x14, 0x19, 0xe6, + 0xeb, 0x1a, 0xbf, 0x8b, 0xbc, 0x5a, 0x41, 0xaf, 0x96, 0xd0, 0x36, 0x68, 0x73, 0x73, 0x79, 0x4f, + 0xa0, 0x84, 0x14, 0x45, 0xe7, 0x8e, 0x50, 0xad, 0x87, 0xa1, 0x3e, 0xa1, 0x7f, 0xd6, 0xff, 0xcd, + 0x72, 0xbf, 0xbf, 0x8f, 0xbb, 0x19, 0xd0, 0x76, 0x7e, 0x72, 0xac, 0x2a, 0xec, 0x9d, 0xfb, 0x97, + 0xf7, 0xc7, 0x72, 0xcb, 0xfe, 0xbf, 0xbc, 0xc2, 0x11, 0x93, 0x7c, 0x7c, 0x03, 0x59, 0x3e, 0xe1, + 0x09, 0xd9, 0xeb, 0x9e, 0x3f, 0xcf, 0x4c, 0x32, 0x9d, 0x99, 0xe4, 0x6d, 0x66, 0x92, 0x87, 0xb9, + 0x59, 0x9a, 0xce, 0xcd, 0xd2, 0xeb, 0xdc, 0x2c, 0x5d, 0x1f, 0x86, 0x91, 0x1a, 0xdc, 0xfa, 0x6e, + 0x00, 0x09, 0x5b, 0xd5, 0x41, 0x16, 0x7e, 0x7e, 0x1f, 0x70, 0x29, 0xd9, 0x68, 0x91, 0xab, 0xc6, + 0x52, 0xa0, 0x5f, 0x29, 0xce, 0x75, 0xfc, 0x11, 0x00, 0x00, 0xff, 0xff, 0x12, 0x01, 0x66, 0x37, + 0xfb, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -213,7 +214,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) PayForBlobs(ctx context.Context, in *MsgPayForBlobs, opts ...grpc.CallOption) (*MsgPayForBlobsResponse, error) { out := new(MsgPayForBlobsResponse) - err := c.cc.Invoke(ctx, "/celestia.blob.v1.Msg/PayForBlobs", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.blob.v2.Msg/PayForBlobs", in, out, opts...) if err != nil { return nil, err } @@ -248,7 +249,7 @@ func _Msg_PayForBlobs_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.blob.v1.Msg/PayForBlobs", + FullMethod: "/celestia.blob.v2.Msg/PayForBlobs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).PayForBlobs(ctx, req.(*MsgPayForBlobs)) @@ -257,7 +258,7 @@ func _Msg_PayForBlobs_Handler(srv interface{}, ctx context.Context, dec func(int } var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.blob.v1.Msg", + ServiceName: "celestia.blob.v2.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { @@ -266,7 +267,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/blob/v1/tx.proto", + Metadata: "celestia/blob/v2/tx.proto", } func (m *MsgPayForBlobs) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/tx.pb.gw.go b/x/blob/types/tx.pb.gw.go index f74689d3aa..e9391e8efc 100644 --- a/x/blob/types/tx.pb.gw.go +++ b/x/blob/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/blob/v1/tx.proto +// source: celestia/blob/v2/tx.proto /* Package types is a reverse proxy. diff --git a/x/blobstream/types/genesis.pb.go b/x/blobstream/types/genesis.pb.go index 58d29c7ccd..c5f253549c 100644 --- a/x/blobstream/types/genesis.pb.go +++ b/x/blobstream/types/genesis.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v1/genesis.proto +// source: celestia/qgb/v2/genesis.proto package types @@ -32,7 +32,7 @@ func (m *Params) Reset() { *m = Params{} } func (m *Params) String() string { return proto.CompactTextString(m) } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_10da5f8e88ce2856, []int{0} + return fileDescriptor_d9217dacf3ba42e2, []int{0} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -78,7 +78,7 @@ func (m *GenesisState) Reset() { *m = GenesisState{} } func (m *GenesisState) String() string { return proto.CompactTextString(m) } func (*GenesisState) ProtoMessage() {} func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_10da5f8e88ce2856, []int{1} + return fileDescriptor_d9217dacf3ba42e2, []int{1} } func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -115,18 +115,18 @@ func (m *GenesisState) GetParams() *Params { } func init() { - proto.RegisterType((*Params)(nil), "celestia.qgb.v1.Params") - proto.RegisterType((*GenesisState)(nil), "celestia.qgb.v1.GenesisState") + proto.RegisterType((*Params)(nil), "celestia.qgb.v2.Params") + proto.RegisterType((*GenesisState)(nil), "celestia.qgb.v2.GenesisState") } -func init() { proto.RegisterFile("celestia/qgb/v1/genesis.proto", fileDescriptor_10da5f8e88ce2856) } +func init() { proto.RegisterFile("celestia/qgb/v2/genesis.proto", fileDescriptor_d9217dacf3ba42e2) } -var fileDescriptor_10da5f8e88ce2856 = []byte{ +var fileDescriptor_d9217dacf3ba42e2 = []byte{ // 252 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0x4c, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0x4c, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x87, 0x49, 0xeb, 0x15, 0xa6, - 0x27, 0xe9, 0x95, 0x19, 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0xe5, 0xf4, 0x41, 0x2c, 0x88, + 0x27, 0xe9, 0x95, 0x19, 0x49, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0xe5, 0xf4, 0x41, 0x2c, 0x88, 0x32, 0x29, 0x69, 0x74, 0x53, 0x4a, 0x2a, 0x0b, 0x52, 0xa1, 0x66, 0x28, 0xb9, 0x70, 0xb1, 0x05, 0x24, 0x16, 0x25, 0xe6, 0x16, 0x0b, 0x99, 0x70, 0x89, 0xa5, 0x24, 0x96, 0x24, 0xc6, 0x27, 0xe7, 0xe7, 0xe6, 0x66, 0x96, 0xe4, 0xa6, 0xe6, 0x95, 0xc4, 0x97, 0x67, 0xe6, 0xa5, 0xe4, 0x97, 0x4b, @@ -138,7 +138,7 @@ var fileDescriptor_10da5f8e88ce2856 = []byte{ 0x96, 0x63, 0x88, 0x32, 0x4b, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0x19, 0x92, 0x5f, 0x94, 0x0e, 0x67, 0xeb, 0x26, 0x16, 0x14, 0xe8, 0x57, 0xe8, 0x27, 0xe5, 0xe4, 0x27, 0x15, 0x97, 0x14, 0xa5, 0x26, 0xe6, 0x42, 0xbc, 0x97, 0xc4, 0x06, 0xf6, 0x9f, 0x31, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x11, 0x19, 0x03, 0x69, 0x44, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x70, 0x4f, 0xc0, 0x81, 0x44, 0x01, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/blobstream/types/query.pb.go b/x/blobstream/types/query.pb.go index eb235ff5af..b43f0b8b0d 100644 --- a/x/blobstream/types/query.pb.go +++ b/x/blobstream/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v1/query.proto +// source: celestia/qgb/v2/query.proto package types @@ -39,7 +39,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } func (*QueryParamsRequest) ProtoMessage() {} func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{0} + return fileDescriptor_da621d813d100cdc, []int{0} } func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -77,7 +77,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{1} + return fileDescriptor_da621d813d100cdc, []int{1} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -122,7 +122,7 @@ func (m *QueryAttestationRequestByNonceRequest) Reset() { *m = QueryAtte func (m *QueryAttestationRequestByNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryAttestationRequestByNonceRequest) ProtoMessage() {} func (*QueryAttestationRequestByNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{2} + return fileDescriptor_da621d813d100cdc, []int{2} } func (m *QueryAttestationRequestByNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -172,7 +172,7 @@ func (m *QueryAttestationRequestByNonceResponse) Reset() { func (m *QueryAttestationRequestByNonceResponse) String() string { return proto.CompactTextString(m) } func (*QueryAttestationRequestByNonceResponse) ProtoMessage() {} func (*QueryAttestationRequestByNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{3} + return fileDescriptor_da621d813d100cdc, []int{3} } func (m *QueryAttestationRequestByNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -216,7 +216,7 @@ func (m *QueryLatestAttestationNonceRequest) Reset() { *m = QueryLatestA func (m *QueryLatestAttestationNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryLatestAttestationNonceRequest) ProtoMessage() {} func (*QueryLatestAttestationNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{4} + return fileDescriptor_da621d813d100cdc, []int{4} } func (m *QueryLatestAttestationNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -254,7 +254,7 @@ func (m *QueryLatestAttestationNonceResponse) Reset() { *m = QueryLatest func (m *QueryLatestAttestationNonceResponse) String() string { return proto.CompactTextString(m) } func (*QueryLatestAttestationNonceResponse) ProtoMessage() {} func (*QueryLatestAttestationNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{5} + return fileDescriptor_da621d813d100cdc, []int{5} } func (m *QueryLatestAttestationNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -298,7 +298,7 @@ func (m *QueryEarliestAttestationNonceRequest) Reset() { *m = QueryEarli func (m *QueryEarliestAttestationNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryEarliestAttestationNonceRequest) ProtoMessage() {} func (*QueryEarliestAttestationNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{6} + return fileDescriptor_da621d813d100cdc, []int{6} } func (m *QueryEarliestAttestationNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -336,7 +336,7 @@ func (m *QueryEarliestAttestationNonceResponse) Reset() { *m = QueryEarl func (m *QueryEarliestAttestationNonceResponse) String() string { return proto.CompactTextString(m) } func (*QueryEarliestAttestationNonceResponse) ProtoMessage() {} func (*QueryEarliestAttestationNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{7} + return fileDescriptor_da621d813d100cdc, []int{7} } func (m *QueryEarliestAttestationNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -386,7 +386,7 @@ func (m *QueryLatestValsetRequestBeforeNonceRequest) String() string { } func (*QueryLatestValsetRequestBeforeNonceRequest) ProtoMessage() {} func (*QueryLatestValsetRequestBeforeNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{8} + return fileDescriptor_da621d813d100cdc, []int{8} } func (m *QueryLatestValsetRequestBeforeNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -436,7 +436,7 @@ func (m *QueryLatestValsetRequestBeforeNonceResponse) String() string { } func (*QueryLatestValsetRequestBeforeNonceResponse) ProtoMessage() {} func (*QueryLatestValsetRequestBeforeNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{9} + return fileDescriptor_da621d813d100cdc, []int{9} } func (m *QueryLatestValsetRequestBeforeNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -480,7 +480,7 @@ func (m *QueryLatestUnbondingHeightRequest) Reset() { *m = QueryLatestUn func (m *QueryLatestUnbondingHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryLatestUnbondingHeightRequest) ProtoMessage() {} func (*QueryLatestUnbondingHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{10} + return fileDescriptor_da621d813d100cdc, []int{10} } func (m *QueryLatestUnbondingHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -518,7 +518,7 @@ func (m *QueryLatestUnbondingHeightResponse) Reset() { *m = QueryLatestU func (m *QueryLatestUnbondingHeightResponse) String() string { return proto.CompactTextString(m) } func (*QueryLatestUnbondingHeightResponse) ProtoMessage() {} func (*QueryLatestUnbondingHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{11} + return fileDescriptor_da621d813d100cdc, []int{11} } func (m *QueryLatestUnbondingHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -562,7 +562,7 @@ func (m *QueryLatestDataCommitmentRequest) Reset() { *m = QueryLatestDat func (m *QueryLatestDataCommitmentRequest) String() string { return proto.CompactTextString(m) } func (*QueryLatestDataCommitmentRequest) ProtoMessage() {} func (*QueryLatestDataCommitmentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{12} + return fileDescriptor_da621d813d100cdc, []int{12} } func (m *QueryLatestDataCommitmentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -600,7 +600,7 @@ func (m *QueryLatestDataCommitmentResponse) Reset() { *m = QueryLatestDa func (m *QueryLatestDataCommitmentResponse) String() string { return proto.CompactTextString(m) } func (*QueryLatestDataCommitmentResponse) ProtoMessage() {} func (*QueryLatestDataCommitmentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{13} + return fileDescriptor_da621d813d100cdc, []int{13} } func (m *QueryLatestDataCommitmentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -647,7 +647,7 @@ func (m *QueryDataCommitmentRangeForHeightRequest) Reset() { func (m *QueryDataCommitmentRangeForHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryDataCommitmentRangeForHeightRequest) ProtoMessage() {} func (*QueryDataCommitmentRangeForHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{14} + return fileDescriptor_da621d813d100cdc, []int{14} } func (m *QueryDataCommitmentRangeForHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -696,7 +696,7 @@ func (m *QueryDataCommitmentRangeForHeightResponse) String() string { } func (*QueryDataCommitmentRangeForHeightResponse) ProtoMessage() {} func (*QueryDataCommitmentRangeForHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{15} + return fileDescriptor_da621d813d100cdc, []int{15} } func (m *QueryDataCommitmentRangeForHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -741,7 +741,7 @@ func (m *QueryEVMAddressRequest) Reset() { *m = QueryEVMAddressRequest{} func (m *QueryEVMAddressRequest) String() string { return proto.CompactTextString(m) } func (*QueryEVMAddressRequest) ProtoMessage() {} func (*QueryEVMAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{16} + return fileDescriptor_da621d813d100cdc, []int{16} } func (m *QueryEVMAddressRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -786,7 +786,7 @@ func (m *QueryEVMAddressResponse) Reset() { *m = QueryEVMAddressResponse func (m *QueryEVMAddressResponse) String() string { return proto.CompactTextString(m) } func (*QueryEVMAddressResponse) ProtoMessage() {} func (*QueryEVMAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c8535c57355a2b91, []int{17} + return fileDescriptor_da621d813d100cdc, []int{17} } func (m *QueryEVMAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -823,87 +823,87 @@ func (m *QueryEVMAddressResponse) GetEvmAddress() string { } func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "celestia.qgb.v1.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "celestia.qgb.v1.QueryParamsResponse") - proto.RegisterType((*QueryAttestationRequestByNonceRequest)(nil), "celestia.qgb.v1.QueryAttestationRequestByNonceRequest") - proto.RegisterType((*QueryAttestationRequestByNonceResponse)(nil), "celestia.qgb.v1.QueryAttestationRequestByNonceResponse") - proto.RegisterType((*QueryLatestAttestationNonceRequest)(nil), "celestia.qgb.v1.QueryLatestAttestationNonceRequest") - proto.RegisterType((*QueryLatestAttestationNonceResponse)(nil), "celestia.qgb.v1.QueryLatestAttestationNonceResponse") - proto.RegisterType((*QueryEarliestAttestationNonceRequest)(nil), "celestia.qgb.v1.QueryEarliestAttestationNonceRequest") - proto.RegisterType((*QueryEarliestAttestationNonceResponse)(nil), "celestia.qgb.v1.QueryEarliestAttestationNonceResponse") - proto.RegisterType((*QueryLatestValsetRequestBeforeNonceRequest)(nil), "celestia.qgb.v1.QueryLatestValsetRequestBeforeNonceRequest") - proto.RegisterType((*QueryLatestValsetRequestBeforeNonceResponse)(nil), "celestia.qgb.v1.QueryLatestValsetRequestBeforeNonceResponse") - proto.RegisterType((*QueryLatestUnbondingHeightRequest)(nil), "celestia.qgb.v1.QueryLatestUnbondingHeightRequest") - proto.RegisterType((*QueryLatestUnbondingHeightResponse)(nil), "celestia.qgb.v1.QueryLatestUnbondingHeightResponse") - proto.RegisterType((*QueryLatestDataCommitmentRequest)(nil), "celestia.qgb.v1.QueryLatestDataCommitmentRequest") - proto.RegisterType((*QueryLatestDataCommitmentResponse)(nil), "celestia.qgb.v1.QueryLatestDataCommitmentResponse") - proto.RegisterType((*QueryDataCommitmentRangeForHeightRequest)(nil), "celestia.qgb.v1.QueryDataCommitmentRangeForHeightRequest") - proto.RegisterType((*QueryDataCommitmentRangeForHeightResponse)(nil), "celestia.qgb.v1.QueryDataCommitmentRangeForHeightResponse") - proto.RegisterType((*QueryEVMAddressRequest)(nil), "celestia.qgb.v1.QueryEVMAddressRequest") - proto.RegisterType((*QueryEVMAddressResponse)(nil), "celestia.qgb.v1.QueryEVMAddressResponse") -} - -func init() { proto.RegisterFile("celestia/qgb/v1/query.proto", fileDescriptor_c8535c57355a2b91) } - -var fileDescriptor_c8535c57355a2b91 = []byte{ - // 910 bytes of a gzipped FileDescriptorProto + proto.RegisterType((*QueryParamsRequest)(nil), "celestia.qgb.v2.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "celestia.qgb.v2.QueryParamsResponse") + proto.RegisterType((*QueryAttestationRequestByNonceRequest)(nil), "celestia.qgb.v2.QueryAttestationRequestByNonceRequest") + proto.RegisterType((*QueryAttestationRequestByNonceResponse)(nil), "celestia.qgb.v2.QueryAttestationRequestByNonceResponse") + proto.RegisterType((*QueryLatestAttestationNonceRequest)(nil), "celestia.qgb.v2.QueryLatestAttestationNonceRequest") + proto.RegisterType((*QueryLatestAttestationNonceResponse)(nil), "celestia.qgb.v2.QueryLatestAttestationNonceResponse") + proto.RegisterType((*QueryEarliestAttestationNonceRequest)(nil), "celestia.qgb.v2.QueryEarliestAttestationNonceRequest") + proto.RegisterType((*QueryEarliestAttestationNonceResponse)(nil), "celestia.qgb.v2.QueryEarliestAttestationNonceResponse") + proto.RegisterType((*QueryLatestValsetRequestBeforeNonceRequest)(nil), "celestia.qgb.v2.QueryLatestValsetRequestBeforeNonceRequest") + proto.RegisterType((*QueryLatestValsetRequestBeforeNonceResponse)(nil), "celestia.qgb.v2.QueryLatestValsetRequestBeforeNonceResponse") + proto.RegisterType((*QueryLatestUnbondingHeightRequest)(nil), "celestia.qgb.v2.QueryLatestUnbondingHeightRequest") + proto.RegisterType((*QueryLatestUnbondingHeightResponse)(nil), "celestia.qgb.v2.QueryLatestUnbondingHeightResponse") + proto.RegisterType((*QueryLatestDataCommitmentRequest)(nil), "celestia.qgb.v2.QueryLatestDataCommitmentRequest") + proto.RegisterType((*QueryLatestDataCommitmentResponse)(nil), "celestia.qgb.v2.QueryLatestDataCommitmentResponse") + proto.RegisterType((*QueryDataCommitmentRangeForHeightRequest)(nil), "celestia.qgb.v2.QueryDataCommitmentRangeForHeightRequest") + proto.RegisterType((*QueryDataCommitmentRangeForHeightResponse)(nil), "celestia.qgb.v2.QueryDataCommitmentRangeForHeightResponse") + proto.RegisterType((*QueryEVMAddressRequest)(nil), "celestia.qgb.v2.QueryEVMAddressRequest") + proto.RegisterType((*QueryEVMAddressResponse)(nil), "celestia.qgb.v2.QueryEVMAddressResponse") +} + +func init() { proto.RegisterFile("celestia/qgb/v2/query.proto", fileDescriptor_da621d813d100cdc) } + +var fileDescriptor_da621d813d100cdc = []byte{ + // 911 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x8f, 0xdb, 0x44, 0x14, 0xc7, 0x63, 0xd4, 0x46, 0xe2, 0x45, 0xea, 0x8f, 0x49, 0x9a, 0xed, 0xba, 0xc5, 0xbb, 0x75, - 0xb2, 0xe9, 0x96, 0x65, 0x3d, 0xda, 0x2c, 0x5d, 0x44, 0x5b, 0x0e, 0x1b, 0x28, 0x2a, 0x52, 0x81, - 0x12, 0x89, 0x1e, 0x38, 0xb0, 0x1a, 0x27, 0x53, 0xaf, 0x45, 0xec, 0x49, 0x6c, 0x27, 0x22, 0x02, - 0x2e, 0xfc, 0x05, 0x48, 0x1c, 0x39, 0x73, 0xe5, 0x84, 0xb8, 0x70, 0xe4, 0x52, 0xf5, 0x54, 0x89, + 0xb2, 0xe9, 0x96, 0x65, 0x3d, 0x6a, 0x96, 0x2e, 0xa2, 0x2d, 0x87, 0x0d, 0x14, 0x15, 0xa9, 0x40, + 0x89, 0x44, 0x0f, 0x1c, 0x58, 0x8d, 0x93, 0xa9, 0xd7, 0x22, 0xf6, 0x24, 0xb6, 0x13, 0x11, 0x01, + 0x17, 0xfe, 0x02, 0x24, 0x8e, 0x9c, 0xb9, 0x72, 0x42, 0x5c, 0x38, 0x72, 0xa9, 0x7a, 0x5a, 0x89, 0x0b, 0x27, 0x84, 0x76, 0xf9, 0x0f, 0xf8, 0x07, 0x50, 0xe6, 0x47, 0xd6, 0x71, 0x6c, 0x27, 0x59, 0xf5, 0xe6, 0x99, 0xf7, 0xde, 0xf7, 0x7d, 0x9e, 0x33, 0xfe, 0x4e, 0xe0, 0x46, 0x87, 0xf6, 0x68, - 0x18, 0xb9, 0x04, 0x0f, 0x1c, 0x1b, 0x8f, 0xf6, 0xf0, 0x60, 0x48, 0x83, 0xb1, 0xd5, 0x0f, 0x58, - 0xc4, 0xd0, 0x65, 0x15, 0xb4, 0x06, 0x8e, 0x6d, 0x8d, 0xf6, 0xf4, 0x37, 0x92, 0xd9, 0x0e, 0xf5, - 0x69, 0xe8, 0x86, 0x22, 0x5f, 0x9f, 0x13, 0x8b, 0xc6, 0x7d, 0xaa, 0x82, 0x37, 0x1d, 0xc6, 0x9c, - 0x1e, 0xc5, 0xa4, 0xef, 0x62, 0xe2, 0xfb, 0x2c, 0x22, 0x91, 0xcb, 0x7c, 0x15, 0xad, 0x38, 0xcc, - 0x61, 0xfc, 0x11, 0x4f, 0x9e, 0xe4, 0xee, 0x7a, 0x87, 0x85, 0x1e, 0x0b, 0x8f, 0x44, 0x40, 0x2c, - 0x54, 0x48, 0xca, 0xf1, 0x95, 0x3d, 0x7c, 0x86, 0x89, 0x2f, 0xb1, 0xcd, 0x0a, 0xa0, 0xcf, 0x26, - 0x53, 0x3c, 0x21, 0x01, 0xf1, 0xc2, 0x36, 0x1d, 0x0c, 0x69, 0x18, 0x99, 0x8f, 0xa1, 0x3c, 0xb3, - 0x1b, 0xf6, 0x99, 0x1f, 0x52, 0x74, 0x17, 0x8a, 0x7d, 0xbe, 0x73, 0x5d, 0xdb, 0xd4, 0xb6, 0x4b, - 0xcd, 0x35, 0x2b, 0x31, 0xb4, 0x25, 0x0a, 0x5a, 0x17, 0x9e, 0xff, 0xbd, 0x51, 0x68, 0xcb, 0x64, - 0xf3, 0x3d, 0xd8, 0xe2, 0x6a, 0x87, 0x51, 0x44, 0x43, 0x31, 0x8a, 0x6c, 0xd4, 0x1a, 0x7f, 0xc2, - 0xfc, 0x0e, 0x95, 0x2b, 0x54, 0x81, 0x8b, 0xfe, 0x64, 0xcd, 0xe5, 0x2f, 0xb4, 0xc5, 0xc2, 0x1c, - 0x43, 0x63, 0x51, 0xb9, 0xe4, 0xfb, 0x14, 0x4a, 0xe4, 0x2c, 0x49, 0x42, 0x56, 0x2c, 0x31, 0xbd, - 0xa5, 0xa6, 0xb7, 0x0e, 0xfd, 0x71, 0x6b, 0xed, 0xc5, 0xaf, 0xbb, 0xe5, 0x79, 0xc5, 0x8f, 0xda, - 0x71, 0x05, 0xb3, 0x0e, 0x26, 0x6f, 0xfd, 0x98, 0x4c, 0xf6, 0x62, 0xe9, 0x71, 0x6c, 0xf3, 0x3e, - 0xd4, 0x72, 0xb3, 0x24, 0x5d, 0xfa, 0x74, 0x0d, 0xa8, 0xf3, 0xe2, 0x87, 0x24, 0xe8, 0xb9, 0x39, - 0x4d, 0xd4, 0x4b, 0xcc, 0xce, 0xcb, 0x6d, 0xd3, 0x82, 0x37, 0x63, 0x8c, 0x4f, 0x49, 0x2f, 0xa4, - 0x91, 0x7a, 0x8b, 0xf4, 0x19, 0x0b, 0xe8, 0x12, 0x3f, 0xc4, 0x97, 0xb0, 0xb3, 0x94, 0x86, 0x04, - 0xc1, 0x50, 0x1c, 0xf1, 0x9c, 0xcc, 0xd3, 0x22, 0x25, 0x64, 0x9a, 0x59, 0x83, 0x5b, 0x31, 0xfd, - 0xcf, 0x7d, 0x9b, 0xf9, 0x5d, 0xd7, 0x77, 0x1e, 0x51, 0xd7, 0x39, 0x56, 0x8d, 0xcc, 0x07, 0x33, - 0x3f, 0xc9, 0x5c, 0x92, 0xec, 0x5d, 0x85, 0xe2, 0x31, 0xdf, 0x91, 0x13, 0xc8, 0x95, 0x69, 0xc2, - 0x66, 0xac, 0xfa, 0x03, 0x12, 0x91, 0xf7, 0x99, 0xe7, 0xb9, 0x91, 0x47, 0xfd, 0x69, 0x07, 0x6f, - 0x06, 0x23, 0x99, 0x23, 0x1b, 0x3c, 0x82, 0xcb, 0x5d, 0x12, 0x91, 0xa3, 0xce, 0x34, 0x24, 0xa7, - 0xdc, 0x98, 0x9b, 0x32, 0xa1, 0x70, 0xa9, 0x3b, 0xb3, 0x36, 0x5b, 0xb0, 0xcd, 0xdb, 0x25, 0xd2, - 0x88, 0xef, 0xd0, 0x0f, 0x59, 0x30, 0x33, 0x7c, 0xe6, 0x58, 0x43, 0xb8, 0xb3, 0x84, 0xc6, 0x2b, - 0x47, 0x7f, 0x08, 0x55, 0x71, 0x26, 0x9f, 0x7e, 0x7c, 0xd8, 0xed, 0x06, 0x34, 0x54, 0x06, 0x82, - 0x76, 0xe0, 0xea, 0x88, 0xf4, 0xdc, 0x2e, 0x89, 0x58, 0x70, 0x44, 0x44, 0x8c, 0x77, 0x79, 0xbd, - 0x7d, 0x65, 0x1a, 0x90, 0x35, 0xe6, 0x3d, 0x58, 0x9b, 0x93, 0x91, 0xac, 0x1b, 0x50, 0xa2, 0x23, - 0x2f, 0xa1, 0x00, 0x74, 0xe4, 0xc9, 0xc4, 0xe6, 0x7f, 0x25, 0xb8, 0xc8, 0x8b, 0xd1, 0x57, 0x50, - 0x14, 0xee, 0x83, 0x6a, 0x73, 0x73, 0xcc, 0x5b, 0x9c, 0x5e, 0xcf, 0x4f, 0x12, 0xfd, 0xcd, 0xea, - 0xf7, 0x7f, 0xfe, 0xfb, 0xe3, 0x6b, 0x57, 0xd0, 0x25, 0xe5, 0xd2, 0xc2, 0xd2, 0xd0, 0xef, 0x1a, - 0xac, 0x67, 0xfa, 0x11, 0x3a, 0x48, 0xd7, 0x5e, 0xe4, 0x7f, 0xfa, 0x3b, 0x2b, 0xd7, 0x49, 0xcc, - 0x5d, 0x8e, 0x79, 0x1b, 0x6d, 0x29, 0xcc, 0x98, 0x89, 0x85, 0x38, 0x10, 0x45, 0x21, 0xfe, 0x86, - 0x7f, 0xc7, 0xdf, 0xa1, 0x5f, 0x34, 0xa8, 0xa6, 0x9b, 0x15, 0xda, 0x4f, 0x47, 0xc8, 0x35, 0x40, - 0xfd, 0xed, 0xd5, 0x8a, 0x24, 0xf4, 0x1d, 0x0e, 0x5d, 0x43, 0xb7, 0x52, 0xa1, 0x39, 0x2a, 0xee, - 0x71, 0x09, 0xf4, 0x9b, 0x06, 0xd7, 0xb3, 0x8c, 0x0f, 0xdd, 0x4d, 0xef, 0xbe, 0xc0, 0x50, 0xf5, - 0x83, 0x55, 0xcb, 0x24, 0xf6, 0x0e, 0xc7, 0xde, 0x42, 0xb5, 0x1c, 0x6c, 0x2a, 0x45, 0xd0, 0x0b, - 0x0d, 0x8c, 0x7c, 0xbb, 0x44, 0xf7, 0xf3, 0x5e, 0xde, 0x02, 0xa3, 0xd6, 0x1f, 0x9c, 0xaf, 0x38, - 0xeb, 0xd8, 0x08, 0x23, 0x56, 0x07, 0x06, 0xdb, 0xbc, 0x66, 0x7a, 0x6c, 0x7e, 0xd2, 0xe0, 0x5a, - 0xaa, 0xed, 0xa2, 0x66, 0x1e, 0x46, 0xba, 0x91, 0xeb, 0xfb, 0x2b, 0xd5, 0x48, 0xe2, 0x75, 0x4e, - 0x5c, 0x46, 0x57, 0x15, 0xf1, 0x50, 0x25, 0xa2, 0x3f, 0x34, 0xb8, 0x99, 0xe7, 0x7f, 0xe8, 0xdd, - 0xf4, 0x86, 0x4b, 0xf8, 0xae, 0x7e, 0xef, 0x3c, 0xa5, 0x12, 0xf9, 0x2d, 0x8e, 0xdc, 0x40, 0x75, - 0x85, 0x9c, 0x30, 0x5f, 0x1c, 0x4c, 0xea, 0xb0, 0x70, 0x72, 0xf4, 0xb3, 0x06, 0x95, 0xb4, 0x8b, - 0x07, 0xed, 0xe5, 0xbd, 0xae, 0xd4, 0x8b, 0x4c, 0x6f, 0xae, 0x52, 0x22, 0x69, 0x1b, 0x9c, 0x76, - 0x13, 0x19, 0x59, 0xb4, 0xf2, 0x8b, 0xfc, 0x16, 0xe0, 0xcc, 0xae, 0xd1, 0xed, 0x8c, 0x6f, 0x29, - 0x79, 0x2f, 0xe8, 0xdb, 0x8b, 0x13, 0x25, 0xc8, 0x0d, 0x0e, 0x72, 0x0d, 0x95, 0x15, 0x48, 0xec, - 0x1e, 0x68, 0x3d, 0x79, 0x7e, 0x62, 0x68, 0x2f, 0x4f, 0x0c, 0xed, 0x9f, 0x13, 0x43, 0xfb, 0xe1, - 0xd4, 0x28, 0xbc, 0x3c, 0x35, 0x0a, 0x7f, 0x9d, 0x1a, 0x85, 0x2f, 0x0e, 0x1c, 0x37, 0x3a, 0x1e, - 0xda, 0x56, 0x87, 0x79, 0x58, 0xb5, 0x62, 0x81, 0x33, 0x7d, 0xde, 0x25, 0xfd, 0x3e, 0xfe, 0x1a, - 0xdb, 0x3d, 0x66, 0x87, 0x51, 0x40, 0x89, 0x27, 0xfe, 0x77, 0xdb, 0x45, 0xfe, 0xef, 0x70, 0xff, - 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x6c, 0x12, 0x89, 0xe4, 0x0b, 0x00, 0x00, + 0x18, 0xb9, 0x04, 0x0f, 0x1c, 0x1b, 0x8f, 0x9a, 0x78, 0x30, 0xa4, 0xc1, 0xd8, 0xea, 0x07, 0x2c, + 0x62, 0xe8, 0xb2, 0x0a, 0x5a, 0x03, 0xc7, 0xb6, 0x46, 0x4d, 0xfd, 0x8d, 0x64, 0xb6, 0x43, 0x7d, + 0x1a, 0xba, 0xa1, 0xc8, 0xd7, 0xe7, 0xc4, 0xa2, 0x71, 0x9f, 0xaa, 0xe0, 0x4d, 0x87, 0x31, 0xa7, + 0x47, 0x31, 0xe9, 0xbb, 0x98, 0xf8, 0x3e, 0x8b, 0x48, 0xe4, 0x32, 0x5f, 0x45, 0x2b, 0x0e, 0x73, + 0x18, 0x7f, 0xc4, 0x93, 0x27, 0xb9, 0xbb, 0xde, 0x61, 0xa1, 0xc7, 0xc2, 0x43, 0x11, 0x10, 0x0b, + 0x15, 0x92, 0x72, 0x7c, 0x65, 0x0f, 0x9f, 0x63, 0xe2, 0x4b, 0x6c, 0xb3, 0x02, 0xe8, 0xb3, 0xc9, + 0x14, 0x4f, 0x49, 0x40, 0xbc, 0xb0, 0x4d, 0x07, 0x43, 0x1a, 0x46, 0xe6, 0x13, 0x28, 0xcf, 0xec, + 0x86, 0x7d, 0xe6, 0x87, 0x14, 0xdd, 0x83, 0x62, 0x9f, 0xef, 0x5c, 0xd7, 0x36, 0xb5, 0xed, 0x52, + 0x73, 0xcd, 0x4a, 0x0c, 0x6d, 0x89, 0x82, 0xd6, 0x85, 0x17, 0x7f, 0x6f, 0x14, 0xda, 0x32, 0xd9, + 0x7c, 0x0f, 0xb6, 0xb8, 0xda, 0x41, 0x14, 0xd1, 0x50, 0x8c, 0x22, 0x1b, 0xb5, 0xc6, 0x9f, 0x30, + 0xbf, 0x43, 0xe5, 0x0a, 0x55, 0xe0, 0xa2, 0x3f, 0x59, 0x73, 0xf9, 0x0b, 0x6d, 0xb1, 0x30, 0xc7, + 0xd0, 0x58, 0x54, 0x2e, 0xf9, 0x3e, 0x85, 0x12, 0x39, 0x4b, 0x92, 0x90, 0x15, 0x4b, 0x4c, 0x6f, + 0xa9, 0xe9, 0xad, 0x03, 0x7f, 0xdc, 0x5a, 0x7b, 0xf9, 0xeb, 0x6e, 0x79, 0x5e, 0xf1, 0xa3, 0x76, + 0x5c, 0xc1, 0xac, 0x83, 0xc9, 0x5b, 0x3f, 0x21, 0x93, 0xbd, 0x58, 0x7a, 0x1c, 0xdb, 0x7c, 0x00, + 0xb5, 0xdc, 0x2c, 0x49, 0x97, 0x3e, 0x5d, 0x03, 0xea, 0xbc, 0xf8, 0x11, 0x09, 0x7a, 0x6e, 0x4e, + 0x13, 0xf5, 0x12, 0xb3, 0xf3, 0x72, 0xdb, 0xb4, 0xe0, 0xcd, 0x18, 0xe3, 0x33, 0xd2, 0x0b, 0x69, + 0xa4, 0xde, 0x22, 0x7d, 0xce, 0x02, 0xba, 0xc4, 0x0f, 0xf1, 0x25, 0xec, 0x2c, 0xa5, 0x21, 0x41, + 0x30, 0x14, 0x47, 0x3c, 0x27, 0xf3, 0xb4, 0x48, 0x09, 0x99, 0x66, 0xd6, 0xe0, 0x56, 0x4c, 0xff, + 0x73, 0xdf, 0x66, 0x7e, 0xd7, 0xf5, 0x9d, 0xc7, 0xd4, 0x75, 0x8e, 0x54, 0x23, 0xf3, 0xe1, 0xcc, + 0x4f, 0x32, 0x97, 0x24, 0x7b, 0x57, 0xa1, 0x78, 0xc4, 0x77, 0xe4, 0x04, 0x72, 0x65, 0x9a, 0xb0, + 0x19, 0xab, 0xfe, 0x80, 0x44, 0xe4, 0x7d, 0xe6, 0x79, 0x6e, 0xe4, 0x51, 0x7f, 0xda, 0xc1, 0x9b, + 0xc1, 0x48, 0xe6, 0xc8, 0x06, 0x8f, 0xe1, 0x72, 0x97, 0x44, 0xe4, 0xb0, 0x33, 0x0d, 0xc9, 0x29, + 0x37, 0xe6, 0xa6, 0x4c, 0x28, 0x5c, 0xea, 0xce, 0xac, 0xcd, 0x16, 0x6c, 0xf3, 0x76, 0x89, 0x34, + 0xe2, 0x3b, 0xf4, 0x43, 0x16, 0xcc, 0x0c, 0x9f, 0x39, 0xd6, 0x10, 0xee, 0x2c, 0xa1, 0xf1, 0xca, + 0xd1, 0x1f, 0x41, 0x55, 0x9c, 0xc9, 0x67, 0x1f, 0x1f, 0x74, 0xbb, 0x01, 0x0d, 0x95, 0x81, 0xa0, + 0x1d, 0xb8, 0x3a, 0x22, 0x3d, 0xb7, 0x4b, 0x22, 0x16, 0x1c, 0x12, 0x11, 0xe3, 0x5d, 0x5e, 0x6f, + 0x5f, 0x99, 0x06, 0x64, 0x8d, 0x79, 0x1f, 0xd6, 0xe6, 0x64, 0x24, 0xeb, 0x06, 0x94, 0xe8, 0xc8, + 0x4b, 0x28, 0x00, 0x1d, 0x79, 0x32, 0xb1, 0xf9, 0x5f, 0x09, 0x2e, 0xf2, 0x62, 0xf4, 0x15, 0x14, + 0x85, 0xfb, 0xa0, 0xda, 0xdc, 0x1c, 0xf3, 0x16, 0xa7, 0xd7, 0xf3, 0x93, 0x44, 0x7f, 0xb3, 0xfa, + 0xfd, 0x9f, 0xff, 0xfe, 0xf8, 0xda, 0x15, 0x74, 0x49, 0xb8, 0xf4, 0x5d, 0x2c, 0x2c, 0x0d, 0xfd, + 0xae, 0xc1, 0x7a, 0xa6, 0x1f, 0xa1, 0xfd, 0x74, 0xed, 0x45, 0xfe, 0xa7, 0xbf, 0xb3, 0x72, 0x9d, + 0xc4, 0xdc, 0xe5, 0x98, 0xb7, 0xd1, 0x96, 0xc2, 0x8c, 0x99, 0x58, 0x88, 0x03, 0x51, 0x14, 0xe2, + 0x6f, 0xf8, 0x77, 0xfc, 0x1d, 0xfa, 0x45, 0x83, 0x6a, 0xba, 0x59, 0xa1, 0xbd, 0x74, 0x84, 0x5c, + 0x03, 0xd4, 0xdf, 0x5e, 0xad, 0x48, 0x42, 0xdf, 0xe1, 0xd0, 0x35, 0x74, 0x2b, 0x15, 0x9a, 0xa3, + 0xe2, 0x1e, 0x97, 0x40, 0xbf, 0x69, 0x70, 0x3d, 0xcb, 0xf8, 0xd0, 0xbd, 0xf4, 0xee, 0x0b, 0x0c, + 0x55, 0xdf, 0x5f, 0xb5, 0x4c, 0x62, 0xef, 0x70, 0xec, 0x2d, 0x54, 0xcb, 0xc1, 0xa6, 0x52, 0x04, + 0xbd, 0xd4, 0xc0, 0xc8, 0xb7, 0x4b, 0xf4, 0x20, 0xef, 0xe5, 0x2d, 0x30, 0x6a, 0xfd, 0xe1, 0xf9, + 0x8a, 0xb3, 0x8e, 0x8d, 0x30, 0x62, 0x75, 0x60, 0xb0, 0xcd, 0x6b, 0xa6, 0xc7, 0xe6, 0x27, 0x0d, + 0xae, 0xa5, 0xda, 0x2e, 0x6a, 0xe6, 0x61, 0xa4, 0x1b, 0xb9, 0xbe, 0xb7, 0x52, 0x8d, 0x24, 0x5e, + 0xe7, 0xc4, 0x65, 0x74, 0x55, 0x11, 0x0f, 0x55, 0x22, 0xfa, 0x43, 0x83, 0x9b, 0x79, 0xfe, 0x87, + 0xde, 0x4d, 0x6f, 0xb8, 0x84, 0xef, 0xea, 0xf7, 0xcf, 0x53, 0x2a, 0x91, 0xdf, 0xe2, 0xc8, 0x0d, + 0x54, 0x57, 0xc8, 0x09, 0xf3, 0xc5, 0xc1, 0xa4, 0x0e, 0x0b, 0x27, 0x47, 0x3f, 0x6b, 0x50, 0x49, + 0xbb, 0x78, 0xd0, 0xdd, 0xbc, 0xd7, 0x95, 0x7a, 0x91, 0xe9, 0xcd, 0x55, 0x4a, 0x24, 0x6d, 0x83, + 0xd3, 0x6e, 0x22, 0x23, 0x8b, 0x56, 0x7e, 0x91, 0xdf, 0x02, 0x9c, 0xd9, 0x35, 0xba, 0x9d, 0xf1, + 0x2d, 0x25, 0xef, 0x05, 0x7d, 0x7b, 0x71, 0xa2, 0x04, 0xb9, 0xc1, 0x41, 0xae, 0xa1, 0xb2, 0x02, + 0x89, 0xdd, 0x03, 0xad, 0xa7, 0x2f, 0x4e, 0x0c, 0xed, 0xf8, 0xc4, 0xd0, 0xfe, 0x39, 0x31, 0xb4, + 0x1f, 0x4e, 0x8d, 0xc2, 0xf1, 0xa9, 0x51, 0xf8, 0xeb, 0xd4, 0x28, 0x7c, 0xb1, 0xef, 0xb8, 0xd1, + 0xd1, 0xd0, 0xb6, 0x3a, 0xcc, 0xc3, 0xaa, 0x15, 0x0b, 0x9c, 0xe9, 0xf3, 0x2e, 0xe9, 0xf7, 0xf1, + 0xd7, 0xd8, 0xee, 0x31, 0x3b, 0x8c, 0x02, 0x4a, 0x3c, 0xf1, 0xbf, 0xdb, 0x2e, 0xf2, 0x7f, 0x87, + 0x7b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xae, 0x31, 0x9f, 0xb9, 0xe4, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -955,7 +955,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/Params", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/Params", in, out, opts...) if err != nil { return nil, err } @@ -964,7 +964,7 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . func (c *queryClient) AttestationRequestByNonce(ctx context.Context, in *QueryAttestationRequestByNonceRequest, opts ...grpc.CallOption) (*QueryAttestationRequestByNonceResponse, error) { out := new(QueryAttestationRequestByNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/AttestationRequestByNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/AttestationRequestByNonce", in, out, opts...) if err != nil { return nil, err } @@ -973,7 +973,7 @@ func (c *queryClient) AttestationRequestByNonce(ctx context.Context, in *QueryAt func (c *queryClient) LatestAttestationNonce(ctx context.Context, in *QueryLatestAttestationNonceRequest, opts ...grpc.CallOption) (*QueryLatestAttestationNonceResponse, error) { out := new(QueryLatestAttestationNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestAttestationNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestAttestationNonce", in, out, opts...) if err != nil { return nil, err } @@ -982,7 +982,7 @@ func (c *queryClient) LatestAttestationNonce(ctx context.Context, in *QueryLates func (c *queryClient) EarliestAttestationNonce(ctx context.Context, in *QueryEarliestAttestationNonceRequest, opts ...grpc.CallOption) (*QueryEarliestAttestationNonceResponse, error) { out := new(QueryEarliestAttestationNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/EarliestAttestationNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/EarliestAttestationNonce", in, out, opts...) if err != nil { return nil, err } @@ -991,7 +991,7 @@ func (c *queryClient) EarliestAttestationNonce(ctx context.Context, in *QueryEar func (c *queryClient) LatestValsetRequestBeforeNonce(ctx context.Context, in *QueryLatestValsetRequestBeforeNonceRequest, opts ...grpc.CallOption) (*QueryLatestValsetRequestBeforeNonceResponse, error) { out := new(QueryLatestValsetRequestBeforeNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestValsetRequestBeforeNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestValsetRequestBeforeNonce", in, out, opts...) if err != nil { return nil, err } @@ -1000,7 +1000,7 @@ func (c *queryClient) LatestValsetRequestBeforeNonce(ctx context.Context, in *Qu func (c *queryClient) LatestUnbondingHeight(ctx context.Context, in *QueryLatestUnbondingHeightRequest, opts ...grpc.CallOption) (*QueryLatestUnbondingHeightResponse, error) { out := new(QueryLatestUnbondingHeightResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestUnbondingHeight", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestUnbondingHeight", in, out, opts...) if err != nil { return nil, err } @@ -1009,7 +1009,7 @@ func (c *queryClient) LatestUnbondingHeight(ctx context.Context, in *QueryLatest func (c *queryClient) DataCommitmentRangeForHeight(ctx context.Context, in *QueryDataCommitmentRangeForHeightRequest, opts ...grpc.CallOption) (*QueryDataCommitmentRangeForHeightResponse, error) { out := new(QueryDataCommitmentRangeForHeightResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/DataCommitmentRangeForHeight", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/DataCommitmentRangeForHeight", in, out, opts...) if err != nil { return nil, err } @@ -1018,7 +1018,7 @@ func (c *queryClient) DataCommitmentRangeForHeight(ctx context.Context, in *Quer func (c *queryClient) LatestDataCommitment(ctx context.Context, in *QueryLatestDataCommitmentRequest, opts ...grpc.CallOption) (*QueryLatestDataCommitmentResponse, error) { out := new(QueryLatestDataCommitmentResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestDataCommitment", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestDataCommitment", in, out, opts...) if err != nil { return nil, err } @@ -1027,7 +1027,7 @@ func (c *queryClient) LatestDataCommitment(ctx context.Context, in *QueryLatestD func (c *queryClient) EVMAddress(ctx context.Context, in *QueryEVMAddressRequest, opts ...grpc.CallOption) (*QueryEVMAddressResponse, error) { out := new(QueryEVMAddressResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/EVMAddress", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/EVMAddress", in, out, opts...) if err != nil { return nil, err } @@ -1109,7 +1109,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/Params", + FullMethod: "/celestia.qgb.v2.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) @@ -1127,7 +1127,7 @@ func _Query_AttestationRequestByNonce_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/AttestationRequestByNonce", + FullMethod: "/celestia.qgb.v2.Query/AttestationRequestByNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).AttestationRequestByNonce(ctx, req.(*QueryAttestationRequestByNonceRequest)) @@ -1145,7 +1145,7 @@ func _Query_LatestAttestationNonce_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/LatestAttestationNonce", + FullMethod: "/celestia.qgb.v2.Query/LatestAttestationNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestAttestationNonce(ctx, req.(*QueryLatestAttestationNonceRequest)) @@ -1163,7 +1163,7 @@ func _Query_EarliestAttestationNonce_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/EarliestAttestationNonce", + FullMethod: "/celestia.qgb.v2.Query/EarliestAttestationNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).EarliestAttestationNonce(ctx, req.(*QueryEarliestAttestationNonceRequest)) @@ -1181,7 +1181,7 @@ func _Query_LatestValsetRequestBeforeNonce_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/LatestValsetRequestBeforeNonce", + FullMethod: "/celestia.qgb.v2.Query/LatestValsetRequestBeforeNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestValsetRequestBeforeNonce(ctx, req.(*QueryLatestValsetRequestBeforeNonceRequest)) @@ -1199,7 +1199,7 @@ func _Query_LatestUnbondingHeight_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/LatestUnbondingHeight", + FullMethod: "/celestia.qgb.v2.Query/LatestUnbondingHeight", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestUnbondingHeight(ctx, req.(*QueryLatestUnbondingHeightRequest)) @@ -1217,7 +1217,7 @@ func _Query_DataCommitmentRangeForHeight_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/DataCommitmentRangeForHeight", + FullMethod: "/celestia.qgb.v2.Query/DataCommitmentRangeForHeight", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).DataCommitmentRangeForHeight(ctx, req.(*QueryDataCommitmentRangeForHeightRequest)) @@ -1235,7 +1235,7 @@ func _Query_LatestDataCommitment_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/LatestDataCommitment", + FullMethod: "/celestia.qgb.v2.Query/LatestDataCommitment", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestDataCommitment(ctx, req.(*QueryLatestDataCommitmentRequest)) @@ -1253,7 +1253,7 @@ func _Query_EVMAddress_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Query/EVMAddress", + FullMethod: "/celestia.qgb.v2.Query/EVMAddress", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).EVMAddress(ctx, req.(*QueryEVMAddressRequest)) @@ -1262,7 +1262,7 @@ func _Query_EVMAddress_Handler(srv interface{}, ctx context.Context, dec func(in } var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.qgb.v1.Query", + ServiceName: "celestia.qgb.v2.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { @@ -1303,7 +1303,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/qgb/v1/query.proto", + Metadata: "celestia/qgb/v2/query.proto", } func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { diff --git a/x/blobstream/types/query.pb.gw.go b/x/blobstream/types/query.pb.gw.go index 21c27b2546..44c9f97a77 100644 --- a/x/blobstream/types/query.pb.gw.go +++ b/x/blobstream/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/qgb/v1/query.proto +// source: celestia/qgb/v2/query.proto /* Package types is a reverse proxy. diff --git a/x/blobstream/types/tx.pb.go b/x/blobstream/types/tx.pb.go index 0c6482f9e1..3a25b22461 100644 --- a/x/blobstream/types/tx.pb.go +++ b/x/blobstream/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v1/tx.proto +// source: celestia/qgb/v2/tx.proto package types @@ -42,7 +42,7 @@ func (m *MsgRegisterEVMAddress) Reset() { *m = MsgRegisterEVMAddress{} } func (m *MsgRegisterEVMAddress) String() string { return proto.CompactTextString(m) } func (*MsgRegisterEVMAddress) ProtoMessage() {} func (*MsgRegisterEVMAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_85ed1095628e2204, []int{0} + return fileDescriptor_d02473b648247317, []int{0} } func (m *MsgRegisterEVMAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -93,7 +93,7 @@ func (m *MsgRegisterEVMAddressResponse) Reset() { *m = MsgRegisterEVMAdd func (m *MsgRegisterEVMAddressResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterEVMAddressResponse) ProtoMessage() {} func (*MsgRegisterEVMAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_85ed1095628e2204, []int{1} + return fileDescriptor_d02473b648247317, []int{1} } func (m *MsgRegisterEVMAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -123,17 +123,17 @@ func (m *MsgRegisterEVMAddressResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgRegisterEVMAddressResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgRegisterEVMAddress)(nil), "celestia.qgb.v1.MsgRegisterEVMAddress") - proto.RegisterType((*MsgRegisterEVMAddressResponse)(nil), "celestia.qgb.v1.MsgRegisterEVMAddressResponse") + proto.RegisterType((*MsgRegisterEVMAddress)(nil), "celestia.qgb.v2.MsgRegisterEVMAddress") + proto.RegisterType((*MsgRegisterEVMAddressResponse)(nil), "celestia.qgb.v2.MsgRegisterEVMAddressResponse") } -func init() { proto.RegisterFile("celestia/qgb/v1/tx.proto", fileDescriptor_85ed1095628e2204) } +func init() { proto.RegisterFile("celestia/qgb/v2/tx.proto", fileDescriptor_d02473b648247317) } -var fileDescriptor_85ed1095628e2204 = []byte{ - // 335 bytes of a gzipped FileDescriptorProto +var fileDescriptor_d02473b648247317 = []byte{ + // 336 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xc1, 0x4a, 0x03, 0x31, 0x10, 0x86, 0x9b, 0x0a, 0x82, 0xf1, 0xa0, 0x2e, 0x15, 0x6a, 0xa9, 0xa9, 0x14, 0x11, 0x2f, 0x4d, - 0xa8, 0x82, 0x77, 0x0b, 0x3d, 0x16, 0x64, 0x05, 0x0f, 0x5e, 0x4a, 0xb6, 0x0d, 0x31, 0xb0, 0xbb, + 0xb0, 0x82, 0x77, 0x0b, 0x3d, 0x16, 0x64, 0x05, 0x0f, 0x5e, 0x4a, 0xb6, 0x0d, 0x31, 0xb0, 0xbb, 0xb3, 0xcd, 0xc4, 0xa5, 0x9e, 0x04, 0x9f, 0x40, 0xf4, 0xe6, 0x73, 0xf8, 0x10, 0x1e, 0x8b, 0x5e, 0x3c, 0x4a, 0xeb, 0x83, 0x48, 0xbb, 0xbb, 0x45, 0xa4, 0x07, 0x6f, 0x93, 0xfc, 0x5f, 0xfe, 0x7f, 0x32, 0x43, 0xab, 0x03, 0x15, 0x2a, 0x74, 0x46, 0x8a, 0x91, 0x0e, 0x44, 0xda, 0x16, 0x6e, 0xcc, @@ -144,14 +144,14 @@ var fileDescriptor_85ed1095628e2204 = []byte{ 0x15, 0xa2, 0xd7, 0xa5, 0x3b, 0xa9, 0x0c, 0xcd, 0x50, 0x3a, 0xb0, 0x7d, 0x99, 0x5d, 0x56, 0xc9, 0x01, 0x39, 0xde, 0xe8, 0x54, 0xdf, 0x5f, 0x5b, 0x95, 0x3c, 0x23, 0xc7, 0x2f, 0x9d, 0x35, 0xb1, 0xf6, 0xb7, 0x97, 0x4f, 0x0a, 0x9b, 0x06, 0xdd, 0x54, 0x69, 0xb4, 0x34, 0x28, 0xcf, 0x0d, 0x7c, - 0xaa, 0xd2, 0x28, 0x07, 0x9a, 0x0d, 0xba, 0xbf, 0xb2, 0x01, 0x5f, 0x61, 0x02, 0x31, 0xaa, 0x93, - 0x17, 0x42, 0xd7, 0x7a, 0xa8, 0xbd, 0x27, 0x42, 0xbd, 0x15, 0x7d, 0x1e, 0xf1, 0x3f, 0x13, 0xe2, - 0x2b, 0xed, 0x6a, 0xfc, 0x7f, 0x5c, 0x11, 0xdb, 0x3c, 0x7c, 0xf8, 0xf8, 0x7e, 0x2e, 0x33, 0xaf, - 0x5e, 0xac, 0xc4, 0xe6, 0x6c, 0xff, 0xd7, 0x7f, 0x3a, 0x17, 0x6f, 0x53, 0x46, 0x26, 0x53, 0x46, - 0xbe, 0xa6, 0x8c, 0x3c, 0xce, 0x58, 0x69, 0x32, 0x63, 0xa5, 0xcf, 0x19, 0x2b, 0x5d, 0x9f, 0x69, - 0xe3, 0x6e, 0x6e, 0x03, 0x3e, 0x80, 0x48, 0x14, 0xc9, 0x60, 0xf5, 0xb2, 0x6e, 0xc9, 0x24, 0x11, - 0x63, 0x11, 0x84, 0x10, 0xa0, 0xb3, 0x4a, 0x46, 0xc2, 0xdd, 0x25, 0x0a, 0x83, 0xf5, 0xc5, 0x5e, - 0x4e, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x18, 0x1a, 0xed, 0x13, 0x02, 0x00, 0x00, + 0xaa, 0xd2, 0x28, 0x07, 0x9a, 0x0d, 0xba, 0xbf, 0xb2, 0x01, 0x5f, 0x61, 0x02, 0x31, 0xaa, 0xf6, + 0x0b, 0xa1, 0x6b, 0x3d, 0xd4, 0xde, 0x13, 0xa1, 0xde, 0x8a, 0x3e, 0x8f, 0xf8, 0x9f, 0x09, 0xf1, + 0x95, 0x76, 0x35, 0xfe, 0x3f, 0xae, 0x88, 0x6d, 0x1e, 0x3e, 0x7c, 0x7c, 0x3f, 0x97, 0x99, 0x57, + 0xcf, 0x56, 0x72, 0x22, 0x6c, 0xce, 0xf6, 0x7f, 0xfd, 0xa7, 0x73, 0xf1, 0x36, 0x65, 0x64, 0x32, + 0x65, 0xe4, 0x6b, 0xca, 0xc8, 0xe3, 0x8c, 0x95, 0x26, 0x33, 0x56, 0xfa, 0x9c, 0xb1, 0xd2, 0xf5, + 0x99, 0x36, 0xee, 0xe6, 0x36, 0xe0, 0x03, 0x88, 0x44, 0x91, 0x0c, 0x56, 0x2f, 0xeb, 0x96, 0x4c, + 0x12, 0x31, 0x16, 0x41, 0x08, 0x01, 0x3a, 0xab, 0x64, 0x24, 0xdc, 0x5d, 0xa2, 0x30, 0x58, 0x5f, + 0xec, 0xe5, 0xf4, 0x27, 0x00, 0x00, 0xff, 0xff, 0x8f, 0xf2, 0x8f, 0x3b, 0x13, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -184,7 +184,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) RegisterEVMAddress(ctx context.Context, in *MsgRegisterEVMAddress, opts ...grpc.CallOption) (*MsgRegisterEVMAddressResponse, error) { out := new(MsgRegisterEVMAddressResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Msg/RegisterEVMAddress", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Msg/RegisterEVMAddress", in, out, opts...) if err != nil { return nil, err } @@ -223,7 +223,7 @@ func _Msg_RegisterEVMAddress_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v1.Msg/RegisterEVMAddress", + FullMethod: "/celestia.qgb.v2.Msg/RegisterEVMAddress", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).RegisterEVMAddress(ctx, req.(*MsgRegisterEVMAddress)) @@ -232,7 +232,7 @@ func _Msg_RegisterEVMAddress_Handler(srv interface{}, ctx context.Context, dec f } var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.qgb.v1.Msg", + ServiceName: "celestia.qgb.v2.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { @@ -241,7 +241,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/qgb/v1/tx.proto", + Metadata: "celestia/qgb/v2/tx.proto", } func (m *MsgRegisterEVMAddress) Marshal() (dAtA []byte, err error) { diff --git a/x/blobstream/types/tx.pb.gw.go b/x/blobstream/types/tx.pb.gw.go index 18769d55c4..ee090ca78f 100644 --- a/x/blobstream/types/tx.pb.gw.go +++ b/x/blobstream/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/qgb/v1/tx.proto +// source: celestia/qgb/v2/tx.proto /* Package types is a reverse proxy. diff --git a/x/blobstream/types/types.pb.go b/x/blobstream/types/types.pb.go index 34078b961b..c7f83de37c 100644 --- a/x/blobstream/types/types.pb.go +++ b/x/blobstream/types/types.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v1/types.proto +// source: celestia/qgb/v2/types.proto package types @@ -40,7 +40,7 @@ func (m *BridgeValidator) Reset() { *m = BridgeValidator{} } func (m *BridgeValidator) String() string { return proto.CompactTextString(m) } func (*BridgeValidator) ProtoMessage() {} func (*BridgeValidator) Descriptor() ([]byte, []int) { - return fileDescriptor_5db0e6d49b998544, []int{0} + return fileDescriptor_493cad58199880be, []int{0} } func (m *BridgeValidator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -102,7 +102,7 @@ func (m *Valset) Reset() { *m = Valset{} } func (m *Valset) String() string { return proto.CompactTextString(m) } func (*Valset) ProtoMessage() {} func (*Valset) Descriptor() ([]byte, []int) { - return fileDescriptor_5db0e6d49b998544, []int{1} + return fileDescriptor_493cad58199880be, []int{1} } func (m *Valset) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -183,7 +183,7 @@ func (m *DataCommitment) Reset() { *m = DataCommitment{} } func (m *DataCommitment) String() string { return proto.CompactTextString(m) } func (*DataCommitment) ProtoMessage() {} func (*DataCommitment) Descriptor() ([]byte, []int) { - return fileDescriptor_5db0e6d49b998544, []int{2} + return fileDescriptor_493cad58199880be, []int{2} } func (m *DataCommitment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -241,42 +241,42 @@ func (m *DataCommitment) GetTime() time.Time { } func init() { - proto.RegisterType((*BridgeValidator)(nil), "celestia.qgb.v1.BridgeValidator") - proto.RegisterType((*Valset)(nil), "celestia.qgb.v1.Valset") - proto.RegisterType((*DataCommitment)(nil), "celestia.qgb.v1.DataCommitment") + proto.RegisterType((*BridgeValidator)(nil), "celestia.qgb.v2.BridgeValidator") + proto.RegisterType((*Valset)(nil), "celestia.qgb.v2.Valset") + proto.RegisterType((*DataCommitment)(nil), "celestia.qgb.v2.DataCommitment") } -func init() { proto.RegisterFile("celestia/qgb/v1/types.proto", fileDescriptor_5db0e6d49b998544) } +func init() { proto.RegisterFile("celestia/qgb/v2/types.proto", fileDescriptor_493cad58199880be) } -var fileDescriptor_5db0e6d49b998544 = []byte{ +var fileDescriptor_493cad58199880be = []byte{ // 424 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x86, 0x6b, 0x16, 0xca, 0xe6, 0x4a, 0x4c, 0x0a, 0x13, 0x94, 0x4e, 0x4a, 0xaa, 0x9e, 0x7a, - 0x99, 0xad, 0x0d, 0x09, 0x21, 0x4e, 0x2c, 0x70, 0x80, 0x1b, 0x8a, 0xd0, 0x0e, 0x5c, 0x2a, 0x3b, + 0x99, 0x2d, 0x15, 0x09, 0x21, 0x4e, 0x2c, 0x70, 0x80, 0x1b, 0x8a, 0xd0, 0x0e, 0x5c, 0x2a, 0x3b, 0xf9, 0x70, 0x2d, 0xe2, 0x7c, 0x69, 0xec, 0x06, 0xf8, 0x17, 0xfb, 0x31, 0x48, 0xfc, 0x85, 0x09, 0x2e, 0x3b, 0x72, 0x02, 0xd4, 0xfe, 0x11, 0x94, 0xb8, 0xe1, 0x30, 0x89, 0xdb, 0x6e, 0x7e, 0xbf, - 0xc7, 0xdf, 0xab, 0xf7, 0xb5, 0x4c, 0x8f, 0x33, 0x28, 0xc0, 0x3a, 0x2d, 0xf8, 0x4a, 0x49, 0xde, - 0x9c, 0x72, 0xf7, 0xa5, 0x02, 0xcb, 0xaa, 0x1a, 0x1d, 0x86, 0x87, 0x3d, 0x64, 0x2b, 0x25, 0x59, - 0x73, 0x3a, 0x39, 0x52, 0xa8, 0xb0, 0x63, 0xbc, 0x3d, 0xf9, 0x6b, 0x93, 0xc7, 0x19, 0x5a, 0x83, - 0x76, 0xe1, 0x81, 0x17, 0x3b, 0x14, 0x2b, 0x44, 0x55, 0x00, 0xef, 0x94, 0x5c, 0x7f, 0xe0, 0x4e, - 0x1b, 0xb0, 0x4e, 0x98, 0xca, 0x5f, 0x98, 0xbd, 0xa6, 0x87, 0x49, 0xad, 0x73, 0x05, 0x17, 0xa2, - 0xd0, 0xb9, 0x70, 0x58, 0x87, 0x47, 0xf4, 0x6e, 0x85, 0x9f, 0xa0, 0x1e, 0x93, 0x29, 0x99, 0x07, - 0xa9, 0x17, 0x61, 0x4c, 0x47, 0xd0, 0x98, 0x85, 0xc8, 0xf3, 0x1a, 0xac, 0x1d, 0xdf, 0x99, 0x92, - 0xf9, 0x41, 0x4a, 0xa1, 0x31, 0xe7, 0x7e, 0x32, 0xfb, 0x41, 0xe8, 0xf0, 0x42, 0x14, 0x16, 0x5c, - 0xeb, 0x50, 0x62, 0x99, 0x41, 0xef, 0xd0, 0x89, 0xf0, 0x05, 0xbd, 0x67, 0xc0, 0x48, 0xa8, 0xdb, - 0xed, 0xbd, 0xf9, 0xe8, 0x6c, 0xca, 0x6e, 0xf4, 0x63, 0x37, 0xa2, 0x24, 0xc1, 0xd5, 0xaf, 0x78, - 0x90, 0xf6, 0x6b, 0xe1, 0x43, 0x3a, 0x5c, 0x82, 0x56, 0x4b, 0x37, 0xde, 0xeb, 0x8c, 0x77, 0x2a, - 0x7c, 0x46, 0x83, 0xb6, 0xd7, 0x38, 0x98, 0x92, 0xf9, 0xe8, 0x6c, 0xc2, 0x7c, 0x69, 0xd6, 0x97, - 0x66, 0xef, 0xfa, 0xd2, 0xc9, 0x7e, 0x6b, 0x78, 0xf9, 0x3b, 0x26, 0x69, 0xb7, 0xf1, 0xfc, 0xd1, - 0xf7, 0xaf, 0x27, 0x0f, 0xce, 0x9d, 0x6b, 0xb1, 0xd3, 0x58, 0xa6, 0xb0, 0x5a, 0x83, 0x75, 0x6f, - 0x66, 0xdf, 0x08, 0xbd, 0xff, 0x4a, 0x38, 0xf1, 0x12, 0x8d, 0xd1, 0xce, 0x40, 0xf9, 0xbf, 0x56, - 0x31, 0x1d, 0x49, 0x50, 0xba, 0x5c, 0xc8, 0x02, 0xb3, 0x8f, 0xdd, 0xbb, 0x04, 0x29, 0xed, 0x46, - 0x49, 0x3b, 0x09, 0x8f, 0xe9, 0x01, 0x94, 0xf9, 0x0e, 0xfb, 0xdc, 0xfb, 0x50, 0xe6, 0x1e, 0xde, - 0x7e, 0xf2, 0xe4, 0xed, 0xd5, 0x26, 0x22, 0xd7, 0x9b, 0x88, 0xfc, 0xd9, 0x44, 0xe4, 0x72, 0x1b, - 0x0d, 0xae, 0xb7, 0xd1, 0xe0, 0xe7, 0x36, 0x1a, 0xbc, 0x7f, 0xaa, 0xb4, 0x5b, 0xae, 0x25, 0xcb, - 0xd0, 0xf0, 0xfe, 0xe5, 0xb1, 0x56, 0xff, 0xce, 0x27, 0xa2, 0xaa, 0xf8, 0x67, 0x2e, 0x0b, 0x94, - 0xd6, 0xd5, 0x20, 0x8c, 0xff, 0x8c, 0x72, 0xd8, 0xc5, 0x79, 0xf2, 0x37, 0x00, 0x00, 0xff, 0xff, - 0x43, 0xb6, 0x7e, 0xfe, 0xac, 0x02, 0x00, 0x00, + 0xc7, 0xdf, 0xab, 0xf7, 0xb5, 0x4c, 0x4f, 0x33, 0x28, 0xc0, 0x3a, 0x2d, 0xf8, 0x5a, 0x49, 0xde, + 0x2c, 0xb8, 0xfb, 0x52, 0x81, 0x65, 0x55, 0x8d, 0x0e, 0xc3, 0xe3, 0x1e, 0xb2, 0xb5, 0x92, 0xac, + 0x59, 0x4c, 0x4e, 0x14, 0x2a, 0xec, 0x18, 0x6f, 0x4f, 0xfe, 0xda, 0xe4, 0x71, 0x86, 0xd6, 0xa0, + 0x5d, 0x7a, 0xe0, 0xc5, 0x1e, 0xc5, 0x0a, 0x51, 0x15, 0xc0, 0x3b, 0x25, 0x37, 0x1f, 0xb8, 0xd3, + 0x06, 0xac, 0x13, 0xa6, 0xf2, 0x17, 0x66, 0xaf, 0xe9, 0x71, 0x52, 0xeb, 0x5c, 0xc1, 0x85, 0x28, + 0x74, 0x2e, 0x1c, 0xd6, 0xe1, 0x09, 0xbd, 0x5b, 0xe1, 0x27, 0xa8, 0xc7, 0x64, 0x4a, 0xe6, 0x41, + 0xea, 0x45, 0x18, 0xd3, 0x11, 0x34, 0x66, 0x29, 0xf2, 0xbc, 0x06, 0x6b, 0xc7, 0x77, 0xa6, 0x64, + 0x7e, 0x94, 0x52, 0x68, 0xcc, 0xb9, 0x9f, 0xcc, 0x7e, 0x10, 0x3a, 0xbc, 0x10, 0x85, 0x05, 0xd7, + 0x3a, 0x94, 0x58, 0x66, 0xd0, 0x3b, 0x74, 0x22, 0x7c, 0x41, 0xef, 0x19, 0x30, 0x12, 0xea, 0x76, + 0xfb, 0x60, 0x3e, 0x5a, 0x4c, 0xd9, 0x8d, 0x7e, 0xec, 0x46, 0x94, 0x24, 0xb8, 0xfa, 0x15, 0x0f, + 0xd2, 0x7e, 0x2d, 0x7c, 0x48, 0x87, 0x2b, 0xd0, 0x6a, 0xe5, 0xc6, 0x07, 0x9d, 0xf1, 0x5e, 0x85, + 0xcf, 0x68, 0xd0, 0xf6, 0x1a, 0x07, 0x53, 0x32, 0x1f, 0x2d, 0x26, 0xcc, 0x97, 0x66, 0x7d, 0x69, + 0xf6, 0xae, 0x2f, 0x9d, 0x1c, 0xb6, 0x86, 0x97, 0xbf, 0x63, 0x92, 0x76, 0x1b, 0xcf, 0x1f, 0x7d, + 0xff, 0x7a, 0xf6, 0xe0, 0xdc, 0xb9, 0x16, 0x3b, 0x8d, 0x65, 0x0a, 0xeb, 0x0d, 0x58, 0xf7, 0x66, + 0xf6, 0x8d, 0xd0, 0xfb, 0xaf, 0x84, 0x13, 0x2f, 0xd1, 0x18, 0xed, 0x0c, 0x94, 0xff, 0x6b, 0x15, + 0xd3, 0x91, 0x04, 0xa5, 0xcb, 0xa5, 0x2c, 0x30, 0xfb, 0xd8, 0xbd, 0x4b, 0x90, 0xd2, 0x6e, 0x94, + 0xb4, 0x93, 0xf0, 0x94, 0x1e, 0x41, 0x99, 0xef, 0xb1, 0xcf, 0x7d, 0x08, 0x65, 0xee, 0xe1, 0xed, + 0x27, 0x4f, 0xde, 0x5e, 0x6d, 0x23, 0x72, 0xbd, 0x8d, 0xc8, 0x9f, 0x6d, 0x44, 0x2e, 0x77, 0xd1, + 0xe0, 0x7a, 0x17, 0x0d, 0x7e, 0xee, 0xa2, 0xc1, 0xfb, 0xa7, 0x4a, 0xbb, 0xd5, 0x46, 0xb2, 0x0c, + 0x0d, 0xef, 0x5f, 0x1e, 0x6b, 0xf5, 0xef, 0x7c, 0x26, 0xaa, 0x8a, 0x7f, 0xe6, 0xb2, 0x40, 0x69, + 0x5d, 0x0d, 0xc2, 0xf8, 0xcf, 0x28, 0x87, 0x5d, 0x9c, 0x27, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, + 0x97, 0xb1, 0xb1, 0xa8, 0xac, 0x02, 0x00, 0x00, } func (m *BridgeValidator) Marshal() (dAtA []byte, err error) { From 73871d0ee874f844b26548cfce6eec615285928c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 2 Aug 2024 16:58:05 -0400 Subject: [PATCH 030/140] test: can initialize 2 apps at the same time --- node/utils/apps.go | 4 ++-- node/utils/apps_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node/utils/apps.go b/node/utils/apps.go index e0c6de3ea3..dd4212546e 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -12,8 +12,8 @@ import ( func GetApps() []types.Application { v1 := NewAppV1() - // v2 := NewAppV2() - return []types.Application{v1} + v2 := NewAppV2() + return []types.Application{v1, v2} } func NewAppV1() *v1.App { diff --git a/node/utils/apps_test.go b/node/utils/apps_test.go index 71ab08cc93..dde024ae0b 100644 --- a/node/utils/apps_test.go +++ b/node/utils/apps_test.go @@ -8,5 +8,5 @@ import ( func TestGetApps(t *testing.T) { got := GetApps() - assert.Len(t, got, 1) + assert.Len(t, got, 2) } From f94e56ff53da1b98113cabe287532d91b7dc44c5 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 3 Aug 2024 19:02:26 -0400 Subject: [PATCH 031/140] fails b/c context cancelled --- node/cmd/root.go | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index b3387cc16e..46dc81d346 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -14,16 +14,7 @@ var cfgFile string // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ - Use: "node", - Short: "A brief description of your application", - Long: `A longer description that spans multiple lines and likely contains -examples and usage of using your application. For example: - -Cobra is a CLI library for Go that empowers applications. -This application is a tool to generate the needed files -to quickly create a Cobra application.`, - // Uncomment the following line if your bare application - // has an action associated with it: + Use: "node", RunE: func(cmd *cobra.Command, args []string) error { currentAppVersion := uint64(1) apps := utils.GetApps() @@ -33,9 +24,27 @@ to quickly create a Cobra application.`, config := testnode.DefaultConfig() cctx, err := utils.StartNode(config) if err != nil { + fmt.Printf("Failed to start node: %v\n", err) return err } fmt.Printf("cctx: %v\n", cctx) + fmt.Printf("chainID %v\n", cctx.ChainID) + latestHeight, err := cctx.LatestHeight() + if err != nil { + fmt.Printf("Failed to get latest height: %v\n", err) + return err + } + fmt.Printf("latestHeight %v\n", latestHeight) + err = cctx.WaitForNextBlock() + if err != nil { + fmt.Printf("waiting for next block failed: %v\n", err) // fails because context canceled + } + // height, err := cctx.WaitForHeight(2) + // if err != nil { + // fmt.Printf("WaitForHeight failed: %v\n", err) + // return err + // } + // fmt.Printf("height %v\n", height) return nil }, } From a2f5a232390deaf1b3694c744244e2fc824a9749 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 14:16:59 -0400 Subject: [PATCH 032/140] wip: context still cancelled prematurely --- node/cmd/root.go | 4 ++- node/utils/start_node.go | 70 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 8 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 46dc81d346..768b72da67 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -3,6 +3,7 @@ package cmd import ( "fmt" "os" + "time" "github.com/celestiaorg/celestia-app/node/utils" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -22,7 +23,7 @@ var rootCmd = &cobra.Command{ fmt.Printf("multiplexer: %v\n", multiplexer) config := testnode.DefaultConfig() - cctx, err := utils.StartNode(config) + cctx, err := utils.StartNode(config, multiplexer) if err != nil { fmt.Printf("Failed to start node: %v\n", err) return err @@ -45,6 +46,7 @@ var rootCmd = &cobra.Command{ // return err // } // fmt.Printf("height %v\n", height) + time.Sleep(10 * time.Second) return nil }, } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 3cdd24be95..38666bdf93 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -2,31 +2,39 @@ package utils import ( "context" + "os" + "time" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/cosmos/cosmos-sdk/client/flags" + abci "github.com/tendermint/tendermint/abci/types" + "github.com/tendermint/tendermint/libs/log" + "github.com/tendermint/tendermint/node" + "github.com/tendermint/tendermint/p2p" + "github.com/tendermint/tendermint/privval" + "github.com/tendermint/tendermint/proxy" ) const baseDir = "~/.celestia-app-start-node" -func StartNode(cfg *testnode.Config) (cctx testnode.Context, err error) { - // initialize the genesis file and validator files for the first validator. - baseDir, err := genesis.InitFiles(baseDir, cfg.TmConfig, cfg.Genesis, 0) +func StartNode(config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { + baseDir, err := genesis.InitFiles(baseDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err } - tmNode, _, err := testnode.NewCometNode(baseDir, &cfg.UniversalTestingConfig) + cometNode, _, err := newCometNode(baseDir, &config.UniversalTestingConfig, multiplexer) if err != nil { return testnode.Context{}, err } - ctx, cancel := context.WithCancel(context.Background()) + ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - cctx = testnode.NewContext(ctx, cfg.Genesis.Keyring(), cfg.TmConfig, cfg.Genesis.ChainID, cfg.AppConfig.API.Address) + cctx = testnode.NewContext(ctx, config.Genesis.Keyring(), config.TmConfig, config.Genesis.ChainID, config.AppConfig.API.Address) - cctx, stopNode, err := testnode.StartNode(tmNode, cctx) + cctx, stopNode, err := testnode.StartNode(cometNode, cctx) if err != nil { return testnode.Context{}, err } @@ -34,3 +42,51 @@ func StartNode(cfg *testnode.Config) (cctx testnode.Context, err error) { return cctx, nil } + +// newCometNode creates a ready to use comet node that operates a single +// validator celestia-app network. It expects that all configuration files are +// already initialized and saved to the baseDir. +func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app abci.Application, err error) { + // dbPath := filepath.Join(config.TmConfig.RootDir, "data") + // db, err := dbm.NewGoLevelDB("application", dbPath) + // if err != nil { + // return nil, nil, err + // } + + config.AppOptions.Set(flags.FlagHome, baseDir) + + logger := newLogger(config) + app = newApp(multiplexer) + + nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) + if err != nil { + return nil, nil, err + } + + cometNode, err = node.NewNode( + config.TmConfig, + privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), + nodeKey, + proxy.NewLocalClientCreator(app), + node.DefaultGenesisDocProviderFunc(config.TmConfig), + node.DefaultDBProvider, + node.DefaultMetricsProvider(config.TmConfig.Instrumentation), + logger, + ) + + return cometNode, app, err +} + +func newApp(multiplexer *Multiplexer) abci.Application { + // TODO: need to be able to switch between apps + return multiplexer.apps[0] +} + +func newLogger(config *testnode.UniversalTestingConfig) log.Logger { + if config.SuppressLogs { + return log.NewNopLogger() + } + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + logger = log.NewFilter(logger, log.AllowError()) + return logger +} From 7e6032bd00fd28e66226e803b19168bea49e7a07 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 14:25:08 -0400 Subject: [PATCH 033/140] refactor: newCometNode --- node/utils/start_node.go | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 38666bdf93..592416cc44 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -8,7 +8,6 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/cosmos/cosmos-sdk/client/flags" - abci "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/p2p" @@ -24,7 +23,7 @@ func StartNode(config *testnode.Config, multiplexer *Multiplexer) (cctx testnode return testnode.Context{}, err } - cometNode, _, err := newCometNode(baseDir, &config.UniversalTestingConfig, multiplexer) + cometNode, err := newCometNode(baseDir, &config.UniversalTestingConfig, multiplexer) if err != nil { return testnode.Context{}, err } @@ -46,40 +45,31 @@ func StartNode(config *testnode.Config, multiplexer *Multiplexer) (cctx testnode // newCometNode creates a ready to use comet node that operates a single // validator celestia-app network. It expects that all configuration files are // already initialized and saved to the baseDir. -func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app abci.Application, err error) { - // dbPath := filepath.Join(config.TmConfig.RootDir, "data") - // db, err := dbm.NewGoLevelDB("application", dbPath) - // if err != nil { - // return nil, nil, err - // } - +func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, err error) { config.AppOptions.Set(flags.FlagHome, baseDir) - - logger := newLogger(config) - app = newApp(multiplexer) - nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { - return nil, nil, err + return nil, err } - cometNode, err = node.NewNode( config.TmConfig, privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), nodeKey, - proxy.NewLocalClientCreator(app), + newProxyClientCreator(multiplexer), node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), - logger, + newLogger(config), ) - - return cometNode, app, err + if err != nil { + return nil, err + } + return cometNode, err } -func newApp(multiplexer *Multiplexer) abci.Application { +func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { // TODO: need to be able to switch between apps - return multiplexer.apps[0] + return proxy.NewLocalClientCreator(multiplexer.apps[0]) } func newLogger(config *testnode.UniversalTestingConfig) log.Logger { From 09b872ebc69b563bc85174ce245dc4223f1bf9e0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 14:25:19 -0400 Subject: [PATCH 034/140] refactor: node interaction api --- test/util/testnode/node_interaction_api.go | 34 +++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/test/util/testnode/node_interaction_api.go b/test/util/testnode/node_interaction_api.go index 44d997ea5a..1d5925997a 100644 --- a/test/util/testnode/node_interaction_api.go +++ b/test/util/testnode/node_interaction_api.go @@ -32,28 +32,28 @@ const ( ) type Context struct { - rootCtx context.Context + goContext context.Context client.Context apiAddress string } -func NewContext(goCtx context.Context, kr keyring.Keyring, tmCfg *tmconfig.Config, chainID, apiAddress string) Context { - ecfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - cctx := client.Context{}. - WithKeyring(kr). - WithHomeDir(tmCfg.RootDir). +func NewContext(goContext context.Context, keyring keyring.Keyring, tmConfig *tmconfig.Config, chainID, apiAddress string) Context { + config := encoding.MakeConfig(app.ModuleEncodingRegisters...) + clientContext := client.Context{}. + WithKeyring(keyring). + WithHomeDir(tmConfig.RootDir). WithChainID(chainID). - WithInterfaceRegistry(ecfg.InterfaceRegistry). - WithCodec(ecfg.Codec). - WithLegacyAmino(ecfg.Amino). - WithTxConfig(ecfg.TxConfig). + WithInterfaceRegistry(config.InterfaceRegistry). + WithCodec(config.Codec). + WithLegacyAmino(config.Amino). + WithTxConfig(config.TxConfig). WithAccountRetriever(authtypes.AccountRetriever{}) - return Context{rootCtx: goCtx, Context: cctx, apiAddress: apiAddress} + return Context{goContext: goContext, Context: clientContext, apiAddress: apiAddress} } func (c *Context) GoContext() context.Context { - return c.rootCtx + return c.goContext } // GenesisTime returns the genesis block time. @@ -94,7 +94,7 @@ func (c *Context) WaitForHeightWithTimeout(h int64, t time.Duration) (int64, err ticker := time.NewTicker(time.Second) defer ticker.Stop() - ctx, cancel := context.WithTimeout(c.rootCtx, t) + ctx, cancel := context.WithTimeout(c.goContext, t) defer cancel() var ( @@ -104,8 +104,8 @@ func (c *Context) WaitForHeightWithTimeout(h int64, t time.Duration) (int64, err for { select { case <-ctx.Done(): - if c.rootCtx.Err() != nil { - return latestHeight, c.rootCtx.Err() + if c.goContext.Err() != nil { + return latestHeight, c.goContext.Err() } return latestHeight, fmt.Errorf("timeout (%v) exceeded waiting for network to reach height %d. Got to height %d", t, h, latestHeight) case <-ticker.C: @@ -125,7 +125,7 @@ func (c *Context) WaitForTimestampWithTimeout(t time.Time, d time.Duration) (tim ticker := time.NewTicker(time.Second) defer ticker.Stop() - ctx, cancel := context.WithTimeout(c.rootCtx, d) + ctx, cancel := context.WithTimeout(c.goContext, d) defer cancel() var latestTimestamp time.Time @@ -195,7 +195,7 @@ func (c *Context) WaitForTx(hashHexStr string, blocks int) (*rpctypes.ResultTx, return nil, err } - ctx, cancel := context.WithTimeout(c.rootCtx, DefaultTimeout) + ctx, cancel := context.WithTimeout(c.goContext, DefaultTimeout) defer cancel() for { From 140c8ab3068d1e73a3f44348b84633d8160b05da Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 14:47:32 -0400 Subject: [PATCH 035/140] fix: client context cancelled waiting for next block failed: timeout (30s) exceeded waiting for network to reach height 1. Got to height 0 --- node/cmd/root.go | 19 +++++++------------ node/utils/start_node.go | 9 +-------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 768b72da67..e33e34b519 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -1,9 +1,9 @@ package cmd import ( + "context" "fmt" "os" - "time" "github.com/celestiaorg/celestia-app/node/utils" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -20,15 +20,15 @@ var rootCmd = &cobra.Command{ currentAppVersion := uint64(1) apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - fmt.Printf("multiplexer: %v\n", multiplexer) - config := testnode.DefaultConfig() - cctx, err := utils.StartNode(config, multiplexer) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + cctx, err := utils.StartNode(ctx, config, multiplexer) if err != nil { fmt.Printf("Failed to start node: %v\n", err) return err } - fmt.Printf("cctx: %v\n", cctx) fmt.Printf("chainID %v\n", cctx.ChainID) latestHeight, err := cctx.LatestHeight() if err != nil { @@ -40,13 +40,8 @@ var rootCmd = &cobra.Command{ if err != nil { fmt.Printf("waiting for next block failed: %v\n", err) // fails because context canceled } - // height, err := cctx.WaitForHeight(2) - // if err != nil { - // fmt.Printf("WaitForHeight failed: %v\n", err) - // return err - // } - // fmt.Printf("height %v\n", height) - time.Sleep(10 * time.Second) + + // time.Sleep(10 * time.Second) return nil }, } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 592416cc44..5498578e8a 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -3,7 +3,6 @@ package utils import ( "context" "os" - "time" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -17,7 +16,7 @@ import ( const baseDir = "~/.celestia-app-start-node" -func StartNode(config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { +func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { baseDir, err := genesis.InitFiles(baseDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err @@ -28,9 +27,6 @@ func StartNode(config *testnode.Config, multiplexer *Multiplexer) (cctx testnode return testnode.Context{}, err } - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - cctx = testnode.NewContext(ctx, config.Genesis.Keyring(), config.TmConfig, config.Genesis.ChainID, config.AppConfig.API.Address) cctx, stopNode, err := testnode.StartNode(cometNode, cctx) @@ -42,9 +38,6 @@ func StartNode(config *testnode.Config, multiplexer *Multiplexer) (cctx testnode return cctx, nil } -// newCometNode creates a ready to use comet node that operates a single -// validator celestia-app network. It expects that all configuration files are -// already initialized and saved to the baseDir. func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, err error) { config.AppOptions.Set(flags.FlagHome, baseDir) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) From 23d590fbf12ae1ab003f04794b5c2b9c6159bbbc Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 14:53:28 -0400 Subject: [PATCH 036/140] panic: leveldb: closed --- node/cmd/root.go | 4 ++-- node/cmd/root_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 node/cmd/root_test.go diff --git a/node/cmd/root.go b/node/cmd/root.go index e33e34b519..b1c6c9ecd9 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -30,18 +30,18 @@ var rootCmd = &cobra.Command{ return err } fmt.Printf("chainID %v\n", cctx.ChainID) + latestHeight, err := cctx.LatestHeight() if err != nil { fmt.Printf("Failed to get latest height: %v\n", err) return err } fmt.Printf("latestHeight %v\n", latestHeight) + err = cctx.WaitForNextBlock() if err != nil { fmt.Printf("waiting for next block failed: %v\n", err) // fails because context canceled } - - // time.Sleep(10 * time.Second) return nil }, } diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go new file mode 100644 index 0000000000..41371e99f9 --- /dev/null +++ b/node/cmd/root_test.go @@ -0,0 +1,31 @@ +package cmd + +import ( + "context" + "fmt" + "testing" + + "github.com/celestiaorg/celestia-app/node/utils" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/stretchr/testify/require" +) + +func TestRun(t *testing.T) { + currentAppVersion := uint64(1) + apps := utils.GetApps() + multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + config := testnode.DefaultConfig() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + cctx, err := utils.StartNode(ctx, config, multiplexer) + require.NoError(t, err) + fmt.Printf("chainID %v\n", cctx.ChainID) + + latestHeight, err := cctx.LatestHeight() + require.NoError(t, err) + fmt.Printf("latestHeight %v\n", latestHeight) + + err = cctx.WaitForNextBlock() + require.NoError(t, err) +} From f9cfb87dbfb8c772f05e3f1cba6e10a480ea9dc0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 15:43:36 -0400 Subject: [PATCH 037/140] wip: try to create node from scratch --- node/cmd/root.go | 71 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 16 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index b1c6c9ecd9..ad2bfacf3f 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -1,14 +1,20 @@ package cmd import ( - "context" "fmt" "os" + "path/filepath" "github.com/celestiaorg/celestia-app/node/utils" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/tendermint/tendermint/config" + "github.com/tendermint/tendermint/libs/log" + "github.com/tendermint/tendermint/node" + "github.com/tendermint/tendermint/p2p" + "github.com/tendermint/tendermint/privval" + "github.com/tendermint/tendermint/proxy" ) var cfgFile string @@ -17,32 +23,65 @@ var cfgFile string var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { - currentAppVersion := uint64(1) + // Create a logger + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + + // Load configuration + cfg := config.DefaultConfig() + cfg.RootDir = "." + cfg.P2P.ListenAddress = "tcp://0.0.0.0:26656" + cfg.RPC.ListenAddress = "tcp://0.0.0.0:26657" + + // Initialize a CometBFT node apps := utils.GetApps() - multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - config := testnode.DefaultConfig() + // currentAppVersion := uint64(1) + // multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + // utils.NewMultiplexer(currentAppVersion, apps) + proxyApp := proxy.NewLocalClientCreator(apps[0]) - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - cctx, err := utils.StartNode(ctx, config, multiplexer) + nodeKey, err := p2p.LoadOrGenNodeKey(filepath.Join(cfg.RootDir, "config", "node_key.json")) if err != nil { - fmt.Printf("Failed to start node: %v\n", err) + logger.Error("failed to load or generate node key", "error", err) return err } - fmt.Printf("chainID %v\n", cctx.ChainID) - latestHeight, err := cctx.LatestHeight() + privValidatorKeyFile := filepath.Join(cfg.RootDir, "config", "priv_validator_key.json") + privValidatorStateFile := filepath.Join(cfg.RootDir, "data", "priv_validator_state.json") + privValidator := privval.LoadOrGenFilePV(privValidatorKeyFile, privValidatorStateFile) + config := testnode.DefaultConfig() + + genesisDocProvider := node.DefaultGenesisDocProviderFunc(cfg) + + node, err := node.NewNode( + cfg, + privValidator, + nodeKey, + proxyApp, + genesisDocProvider, + node.DefaultDBProvider, + node.DefaultMetricsProvider(config.TmConfig.Instrumentation), + logger, + ) if err != nil { - fmt.Printf("Failed to get latest height: %v\n", err) + logger.Error("failed to create node", "error", err) return err } - fmt.Printf("latestHeight %v\n", latestHeight) - err = cctx.WaitForNextBlock() - if err != nil { - fmt.Printf("waiting for next block failed: %v\n", err) // fails because context canceled + // Start the CometBFT node + if err := node.Start(); err != nil { + logger.Error("failed to start node", "error", err) + return err } - return nil + + // Wait for the node to shut down + defer func() { + if err := node.Stop(); err != nil { + logger.Error("failed to stop node", "error", err) + } + }() + + // Keep the process running + select {} }, } From 02fe6e1f6606db4457fffeb341bb6781c1c90cf9 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sun, 4 Aug 2024 15:43:45 -0400 Subject: [PATCH 038/140] Revert "wip: try to create node from scratch" This reverts commit f9cfb87dbfb8c772f05e3f1cba6e10a480ea9dc0. --- node/cmd/root.go | 71 +++++++++++------------------------------------- 1 file changed, 16 insertions(+), 55 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index ad2bfacf3f..b1c6c9ecd9 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -1,20 +1,14 @@ package cmd import ( + "context" "fmt" "os" - "path/filepath" "github.com/celestiaorg/celestia-app/node/utils" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/spf13/cobra" "github.com/spf13/viper" - "github.com/tendermint/tendermint/config" - "github.com/tendermint/tendermint/libs/log" - "github.com/tendermint/tendermint/node" - "github.com/tendermint/tendermint/p2p" - "github.com/tendermint/tendermint/privval" - "github.com/tendermint/tendermint/proxy" ) var cfgFile string @@ -23,65 +17,32 @@ var cfgFile string var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { - // Create a logger - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - - // Load configuration - cfg := config.DefaultConfig() - cfg.RootDir = "." - cfg.P2P.ListenAddress = "tcp://0.0.0.0:26656" - cfg.RPC.ListenAddress = "tcp://0.0.0.0:26657" - - // Initialize a CometBFT node + currentAppVersion := uint64(1) apps := utils.GetApps() - // currentAppVersion := uint64(1) - // multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - // utils.NewMultiplexer(currentAppVersion, apps) - proxyApp := proxy.NewLocalClientCreator(apps[0]) + multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + config := testnode.DefaultConfig() - nodeKey, err := p2p.LoadOrGenNodeKey(filepath.Join(cfg.RootDir, "config", "node_key.json")) + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + cctx, err := utils.StartNode(ctx, config, multiplexer) if err != nil { - logger.Error("failed to load or generate node key", "error", err) + fmt.Printf("Failed to start node: %v\n", err) return err } + fmt.Printf("chainID %v\n", cctx.ChainID) - privValidatorKeyFile := filepath.Join(cfg.RootDir, "config", "priv_validator_key.json") - privValidatorStateFile := filepath.Join(cfg.RootDir, "data", "priv_validator_state.json") - privValidator := privval.LoadOrGenFilePV(privValidatorKeyFile, privValidatorStateFile) - config := testnode.DefaultConfig() - - genesisDocProvider := node.DefaultGenesisDocProviderFunc(cfg) - - node, err := node.NewNode( - cfg, - privValidator, - nodeKey, - proxyApp, - genesisDocProvider, - node.DefaultDBProvider, - node.DefaultMetricsProvider(config.TmConfig.Instrumentation), - logger, - ) + latestHeight, err := cctx.LatestHeight() if err != nil { - logger.Error("failed to create node", "error", err) + fmt.Printf("Failed to get latest height: %v\n", err) return err } + fmt.Printf("latestHeight %v\n", latestHeight) - // Start the CometBFT node - if err := node.Start(); err != nil { - logger.Error("failed to start node", "error", err) - return err + err = cctx.WaitForNextBlock() + if err != nil { + fmt.Printf("waiting for next block failed: %v\n", err) // fails because context canceled } - - // Wait for the node to shut down - defer func() { - if err := node.Stop(); err != nil { - logger.Error("failed to stop node", "error", err) - } - }() - - // Keep the process running - select {} + return nil }, } From 084d0e584d0d331ffcd3d56c608101ccf98ddc79 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 6 Aug 2024 10:59:17 -0400 Subject: [PATCH 039/140] add comments --- node/cmd/root.go | 2 +- node/utils/multiplexer.go | 1 + node/utils/start_node.go | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index b1c6c9ecd9..a7261161d9 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -40,7 +40,7 @@ var rootCmd = &cobra.Command{ err = cctx.WaitForNextBlock() if err != nil { - fmt.Printf("waiting for next block failed: %v\n", err) // fails because context canceled + fmt.Printf("waiting for next block failed: %v\n", err) } return nil }, diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 07be55259f..fe0fb6bc25 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -58,6 +58,7 @@ func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { } func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { + // TODO consider getting app version from request.ConsensusParams.Version.AppVersion app := m.getCurrentApp() return app.InitChain(request) } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 5498578e8a..9ef7b12e3c 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -61,10 +61,10 @@ func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multi } func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { - // TODO: need to be able to switch between apps - return proxy.NewLocalClientCreator(multiplexer.apps[0]) + return proxy.NewLocalClientCreator(multiplexer) } +// TODO: double check that this doesn't create a no-op logger and actually emits to STDOUT. func newLogger(config *testnode.UniversalTestingConfig) log.Logger { if config.SuppressLogs { return log.NewNopLogger() From d089207b4b9829575f5877b938b946616697b3ce Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 6 Aug 2024 11:42:04 -0400 Subject: [PATCH 040/140] enable debug logs --- node/cmd/root.go | 3 +-- node/utils/config.go | 9 +++++++++ node/utils/start_node.go | 10 +++------- 3 files changed, 13 insertions(+), 9 deletions(-) create mode 100644 node/utils/config.go diff --git a/node/cmd/root.go b/node/cmd/root.go index a7261161d9..d890366252 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -6,7 +6,6 @@ import ( "os" "github.com/celestiaorg/celestia-app/node/utils" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -20,8 +19,8 @@ var rootCmd = &cobra.Command{ currentAppVersion := uint64(1) apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - config := testnode.DefaultConfig() + config := utils.GetConfig() ctx, cancel := context.WithCancel(context.Background()) defer cancel() cctx, err := utils.StartNode(ctx, config, multiplexer) diff --git a/node/utils/config.go b/node/utils/config.go new file mode 100644 index 0000000000..a02267a59f --- /dev/null +++ b/node/utils/config.go @@ -0,0 +1,9 @@ +package utils + +import "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + +func GetConfig() *testnode.Config { + tmConfig := testnode.DefaultTendermintConfig() + tmConfig.LogLevel = "DEBUG" + return testnode.DefaultConfig().WithTendermintConfig(tmConfig).WithSuppressLogs(false) +} diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 9ef7b12e3c..bfaa9aea18 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -52,7 +52,7 @@ func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multi node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), - newLogger(config), + newLogger(), ) if err != nil { return nil, err @@ -64,12 +64,8 @@ func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { return proxy.NewLocalClientCreator(multiplexer) } -// TODO: double check that this doesn't create a no-op logger and actually emits to STDOUT. -func newLogger(config *testnode.UniversalTestingConfig) log.Logger { - if config.SuppressLogs { - return log.NewNopLogger() - } +func newLogger() log.Logger { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - logger = log.NewFilter(logger, log.AllowError()) + logger = log.NewFilter(logger, log.AllowDebug()) return logger } From 393698c6195fd5995a95b1ddd5c259f7935a17d7 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 10:31:56 -0400 Subject: [PATCH 041/140] refactor: use temp dir --- node/utils/start_node.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index bfaa9aea18..5fdc366abf 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -2,6 +2,7 @@ package utils import ( "context" + "fmt" "os" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" @@ -14,10 +15,14 @@ import ( "github.com/tendermint/tendermint/proxy" ) -const baseDir = "~/.celestia-app-start-node" - func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { - baseDir, err := genesis.InitFiles(baseDir, config.TmConfig, config.Genesis, 0) + tempDir, err := os.MkdirTemp("", "example") + if err != nil { + return cctx, fmt.Errorf("failed to create temp directory: %v", err) + } + defer os.RemoveAll(tempDir) + + baseDir, err := genesis.InitFiles(tempDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err } From 4e758c28789addcbc2ec49a19b35546530bbe3a3 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 11:03:58 -0400 Subject: [PATCH 042/140] debug: attempt to bind to specific ports Concerning logs: E[2024-08-07|10:58:00.246] Stopped accept routine, as transport is closed module=p2p numPeers=0 I[2024-08-07|10:58:00.246] Closing rpc listener listener="&{Listener:0x140005c6a80 sem:0x14000374840 closeOnce:{done:{_:{} v:0} m:{state:0 sema:0}} done:0x140003748a0}" I[2024-08-07|10:58:00.246] RPC HTTP server stopped module=rpc-server err="accept tcp 127.0.0.1:26657: use of closed network connection" E[2024-08-07|10:58:00.246] Error serving server err="accept tcp 127.0.0.1:26657: use of closed network connection" I[2024-08-07|10:58:00.246] Closing rpc listener listener="&{Listener:0x140005c6ac0 sem:0x14000374900 closeOnce:{done:{_:{} v:0} m:{state:0 sema:0}} done:0x14000374960}" E[2024-08-07|10:58:00.246] Error starting gRPC server err="accept tcp 127.0.0.1:26658: use of closed network connection" --- node/utils/config.go | 3 +++ node/utils/start_node.go | 22 +++++++++++++++++----- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/node/utils/config.go b/node/utils/config.go index a02267a59f..f77ea89831 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -5,5 +5,8 @@ import "github.com/celestiaorg/celestia-app/v2/test/util/testnode" func GetConfig() *testnode.Config { tmConfig := testnode.DefaultTendermintConfig() tmConfig.LogLevel = "DEBUG" + tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" + tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" + tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" return testnode.DefaultConfig().WithTendermintConfig(tmConfig).WithSuppressLogs(false) } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 5fdc366abf..491d1968f3 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -8,6 +8,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/cosmos/cosmos-sdk/client/flags" + servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/tendermint/tendermint/libs/log" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/p2p" @@ -27,7 +28,7 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip return testnode.Context{}, err } - cometNode, err := newCometNode(baseDir, &config.UniversalTestingConfig, multiplexer) + cometNode, app, err := newCometNode(baseDir, &config.UniversalTestingConfig, multiplexer) if err != nil { return testnode.Context{}, err } @@ -40,14 +41,25 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip } defer stopNode() + cctx, cleanupGRPC, err := testnode.StartGRPCServer(app, config.AppConfig, cctx) + if err != nil { + return testnode.Context{}, err + } + defer cleanupGRPC() + + _, err = testnode.StartAPIServer(app, *config.AppConfig, cctx) + if err != nil { + return testnode.Context{}, err + } + return cctx, nil } -func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, err error) { +func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { config.AppOptions.Set(flags.FlagHome, baseDir) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { - return nil, err + return nil, nil, err } cometNode, err = node.NewNode( config.TmConfig, @@ -60,9 +72,9 @@ func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multi newLogger(), ) if err != nil { - return nil, err + return nil, nil, err } - return cometNode, err + return cometNode, nil, err } func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { From 6cdc4f51860a0d51a0e45e12fb625a9f1b09dfd0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 11:16:02 -0400 Subject: [PATCH 043/140] wip: refactor testnode package --- test/util/testnode/comet_node.go | 47 +++++++++++++++ .../{full_node_test.go => comet_node_test.go} | 0 test/util/testnode/config.go | 9 +++ test/util/testnode/full_node.go | 58 ------------------- test/util/testnode/logger.go | 16 +++++ test/util/testnode/network.go | 40 +++---------- test/util/testnode/node_interaction_api.go | 1 + test/util/testnode/rpc_client.go | 56 ++++-------------- test/util/testnode/utils.go | 48 +++++++++++++++ 9 files changed, 139 insertions(+), 136 deletions(-) create mode 100644 test/util/testnode/comet_node.go rename test/util/testnode/{full_node_test.go => comet_node_test.go} (100%) delete mode 100644 test/util/testnode/full_node.go create mode 100644 test/util/testnode/logger.go diff --git a/test/util/testnode/comet_node.go b/test/util/testnode/comet_node.go new file mode 100644 index 0000000000..bc83eef55d --- /dev/null +++ b/test/util/testnode/comet_node.go @@ -0,0 +1,47 @@ +package testnode + +import ( + "path/filepath" + + "github.com/cosmos/cosmos-sdk/client/flags" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/tendermint/tendermint/node" + "github.com/tendermint/tendermint/p2p" + "github.com/tendermint/tendermint/privval" + "github.com/tendermint/tendermint/proxy" + dbm "github.com/tendermint/tm-db" +) + +// NewCometNode creates a ready to use comet node that operates a single +// validator celestia-app network. It expects that all configuration files are +// already initialized and saved to the baseDir. +func NewCometNode(baseDir string, config *UniversalTestingConfig) (*node.Node, servertypes.Application, error) { + logger := newLogger(config) + dbPath := filepath.Join(config.TmConfig.RootDir, "data") + db, err := dbm.NewGoLevelDB("application", dbPath) + if err != nil { + return nil, nil, err + } + + config.AppOptions.Set(flags.FlagHome, baseDir) + + app := config.AppCreator(logger, db, nil, config.AppOptions) + + nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) + if err != nil { + return nil, nil, err + } + + cometNode, err := node.NewNode( + config.TmConfig, + privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), + nodeKey, + proxy.NewLocalClientCreator(app), + node.DefaultGenesisDocProviderFunc(config.TmConfig), + node.DefaultDBProvider, + node.DefaultMetricsProvider(config.TmConfig.Instrumentation), + logger, + ) + + return cometNode, app, err +} diff --git a/test/util/testnode/full_node_test.go b/test/util/testnode/comet_node_test.go similarity index 100% rename from test/util/testnode/full_node_test.go rename to test/util/testnode/comet_node_test.go diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index efaaf10ac6..00b10b8ca4 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -202,3 +202,12 @@ func CustomAppCreator(minGasPrice string) srvtypes.AppCreator { ) } } + +// DefaultAppConfig wraps the default config described in the server +func DefaultAppConfig() *srvconfig.Config { + appCfg := srvconfig.DefaultConfig() + appCfg.GRPC.Address = fmt.Sprintf("127.0.0.1:%d", mustGetFreePort()) + appCfg.API.Address = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + appCfg.MinGasPrices = fmt.Sprintf("%v%s", appconsts.DefaultMinGasPrice, appconsts.BondDenom) + return appCfg +} diff --git a/test/util/testnode/full_node.go b/test/util/testnode/full_node.go deleted file mode 100644 index 2a7b6e12c5..0000000000 --- a/test/util/testnode/full_node.go +++ /dev/null @@ -1,58 +0,0 @@ -package testnode - -import ( - "os" - "path/filepath" - - "github.com/cosmos/cosmos-sdk/client/flags" - srvtypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/tendermint/tendermint/libs/log" - "github.com/tendermint/tendermint/node" - "github.com/tendermint/tendermint/p2p" - "github.com/tendermint/tendermint/privval" - "github.com/tendermint/tendermint/proxy" - dbm "github.com/tendermint/tm-db" -) - -// NewCometNode creates a ready to use comet node that operates a single -// validator celestia-app network. It expects that all configuration files are -// already initialized and saved to the baseDir. -func NewCometNode(baseDir string, cfg *UniversalTestingConfig) (*node.Node, srvtypes.Application, error) { - logger := newLogger(cfg) - dbPath := filepath.Join(cfg.TmConfig.RootDir, "data") - db, err := dbm.NewGoLevelDB("application", dbPath) - if err != nil { - return nil, nil, err - } - - cfg.AppOptions.Set(flags.FlagHome, baseDir) - - app := cfg.AppCreator(logger, db, nil, cfg.AppOptions) - - nodeKey, err := p2p.LoadOrGenNodeKey(cfg.TmConfig.NodeKeyFile()) - if err != nil { - return nil, nil, err - } - - tmNode, err := node.NewNode( - cfg.TmConfig, - privval.LoadOrGenFilePV(cfg.TmConfig.PrivValidatorKeyFile(), cfg.TmConfig.PrivValidatorStateFile()), - nodeKey, - proxy.NewLocalClientCreator(app), - node.DefaultGenesisDocProviderFunc(cfg.TmConfig), - node.DefaultDBProvider, - node.DefaultMetricsProvider(cfg.TmConfig.Instrumentation), - logger, - ) - - return tmNode, app, err -} - -func newLogger(cfg *UniversalTestingConfig) log.Logger { - if cfg.SuppressLogs { - return log.NewNopLogger() - } - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - logger = log.NewFilter(logger, log.AllowError()) - return logger -} diff --git a/test/util/testnode/logger.go b/test/util/testnode/logger.go new file mode 100644 index 0000000000..3c072d1d74 --- /dev/null +++ b/test/util/testnode/logger.go @@ -0,0 +1,16 @@ +package testnode + +import ( + "os" + + "github.com/tendermint/tendermint/libs/log" +) + +func newLogger(cfg *UniversalTestingConfig) log.Logger { + if cfg.SuppressLogs { + return log.NewNopLogger() + } + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + logger = log.NewFilter(logger, log.AllowError()) + return logger +} diff --git a/test/util/testnode/network.go b/test/util/testnode/network.go index aec39cbc4c..4eeb977f7b 100644 --- a/test/util/testnode/network.go +++ b/test/util/testnode/network.go @@ -2,7 +2,6 @@ package testnode import ( "context" - "net" "testing" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" @@ -16,14 +15,14 @@ import ( // accessed via the returned client.Context or via the returned rpc and grpc // addresses. Configured genesis options will be applied after all accounts have // been initialized. -func NewNetwork(t testing.TB, cfg *Config) (cctx Context, rpcAddr, grpcAddr string) { +func NewNetwork(t testing.TB, config *Config) (cctx Context, rpcAddr, grpcAddr string) { t.Helper() // initialize the genesis file and validator files for the first validator. - baseDir, err := genesis.InitFiles(t.TempDir(), cfg.TmConfig, cfg.Genesis, 0) + baseDir, err := genesis.InitFiles(t.TempDir(), config.TmConfig, config.Genesis, 0) require.NoError(t, err) - tmNode, app, err := NewCometNode(baseDir, &cfg.UniversalTestingConfig) + tmNode, app, err := NewCometNode(baseDir, &config.UniversalTestingConfig) require.NoError(t, err) ctx, cancel := context.WithCancel(context.Background()) @@ -31,15 +30,15 @@ func NewNetwork(t testing.TB, cfg *Config) (cctx Context, rpcAddr, grpcAddr stri cancel() }) - cctx = NewContext(ctx, cfg.Genesis.Keyring(), cfg.TmConfig, cfg.Genesis.ChainID, cfg.AppConfig.API.Address) + cctx = NewContext(ctx, config.Genesis.Keyring(), config.TmConfig, config.Genesis.ChainID, config.AppConfig.API.Address) cctx, stopNode, err := StartNode(tmNode, cctx) require.NoError(t, err) - cctx, cleanupGRPC, err := StartGRPCServer(app, cfg.AppConfig, cctx) + cctx, cleanupGRPC, err := StartGRPCServer(app, config.AppConfig, cctx) require.NoError(t, err) - apiServer, err := StartAPIServer(app, *cfg.AppConfig, cctx) + apiServer, err := StartAPIServer(app, *config.AppConfig, cctx) require.NoError(t, err) t.Cleanup(func() { @@ -64,30 +63,5 @@ func NewNetwork(t testing.TB, cfg *Config) (cctx Context, rpcAddr, grpcAddr stri } }) - return cctx, cfg.TmConfig.RPC.ListenAddress, cfg.AppConfig.GRPC.Address -} - -// getFreePort returns a free port and optionally an error. -func getFreePort() (int, error) { - a, err := net.ResolveTCPAddr("tcp", "localhost:0") - if err != nil { - return 0, err - } - - l, err := net.ListenTCP("tcp", a) - if err != nil { - return 0, err - } - defer l.Close() - return l.Addr().(*net.TCPAddr).Port, nil -} - -// mustGetFreePort returns a free port. Panics if no free ports are available or -// an error is encountered. -func mustGetFreePort() int { - port, err := getFreePort() - if err != nil { - panic(err) - } - return port + return cctx, config.TmConfig.RPC.ListenAddress, config.AppConfig.GRPC.Address } diff --git a/test/util/testnode/node_interaction_api.go b/test/util/testnode/node_interaction_api.go index 1d5925997a..e5494c55d0 100644 --- a/test/util/testnode/node_interaction_api.go +++ b/test/util/testnode/node_interaction_api.go @@ -33,6 +33,7 @@ const ( type Context struct { goContext context.Context + // sdkContext client.Context apiAddress string } diff --git a/test/util/testnode/rpc_client.go b/test/util/testnode/rpc_client.go index fdf4086783..c6299af62a 100644 --- a/test/util/testnode/rpc_client.go +++ b/test/util/testnode/rpc_client.go @@ -1,13 +1,10 @@ package testnode import ( - "fmt" - "os" "path" "strings" "time" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/server/api" srvconfig "github.com/cosmos/cosmos-sdk/server/config" @@ -24,35 +21,33 @@ import ( // performs no operation. var noOpCleanup = func() error { return nil } -// StartNode starts the tendermint node along with a local core rpc client. The -// rpc is returned via the client.Context. The function returned should be +// StartNode starts the Comet node along with a local core RPC client. The +// RPC is returned via the client.Context. The function returned should be // called during cleanup to teardown the node, core client, along with canceling // the internal context.Context in the returned Context. -func StartNode(tmNode *node.Node, cctx Context) (Context, func() error, error) { - if err := tmNode.Start(); err != nil { +func StartNode(cometNode *node.Node, cctx Context) (Context, func() error, error) { + if err := cometNode.Start(); err != nil { return cctx, noOpCleanup, err } - - coreClient := local.New(tmNode) - - cctx.Context = cctx.WithClient(coreClient) + client := local.New(cometNode) + cctx.Context = cctx.WithClient(client) cleanup := func() error { - err := tmNode.Stop() + err := cometNode.Stop() if err != nil { return err } - tmNode.Wait() + cometNode.Wait() if err = removeDir(path.Join([]string{cctx.HomeDir, "config"}...)); err != nil { return err } - return removeDir(path.Join([]string{cctx.HomeDir, tmNode.Config().DBPath}...)) + return removeDir(path.Join([]string{cctx.HomeDir, cometNode.Config().DBPath}...)) } return cctx, cleanup, nil } -// StartGRPCServer starts the grpc server using the provided application and -// config. A grpc client connection to that server is also added to the client +// StartGRPCServer starts the GRPC server using the provided application and +// config. A GRPC client connection to that server is also added to the client // context. The returned function should be used to shutdown the server. func StartGRPCServer(app srvtypes.Application, appCfg *srvconfig.Config, cctx Context) (Context, func() error, error) { emptycleanup := func() error { return nil } @@ -91,35 +86,6 @@ func StartGRPCServer(app srvtypes.Application, appCfg *srvconfig.Config, cctx Co }, nil } -// DefaultAppConfig wraps the default config described in the server -func DefaultAppConfig() *srvconfig.Config { - appCfg := srvconfig.DefaultConfig() - appCfg.GRPC.Address = fmt.Sprintf("127.0.0.1:%d", mustGetFreePort()) - appCfg.API.Address = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - appCfg.MinGasPrices = fmt.Sprintf("%v%s", appconsts.DefaultMinGasPrice, appconsts.BondDenom) - return appCfg -} - -// removeDir removes the directory `rootDir`. -// The main use of this is to reduce the flakiness of the CI when it's unable to delete -// the config folder of the tendermint node. -// This will manually go over the files contained inside the provided `rootDir` -// and delete them one by one. -func removeDir(rootDir string) error { - dir, err := os.ReadDir(rootDir) - if err != nil { - return err - } - for _, d := range dir { - path := path.Join([]string{rootDir, d.Name()}...) - err := os.RemoveAll(path) - if err != nil { - return err - } - } - return os.RemoveAll(rootDir) -} - func StartAPIServer(app srvtypes.Application, appCfg srvconfig.Config, cctx Context) (*api.Server, error) { apiSrv := api.New(cctx.Context, log.NewNopLogger()) app.RegisterAPIRoutes(apiSrv, appCfg.API) diff --git a/test/util/testnode/utils.go b/test/util/testnode/utils.go index bcdabcfa55..dfcbe3e2fd 100644 --- a/test/util/testnode/utils.go +++ b/test/util/testnode/utils.go @@ -3,6 +3,9 @@ package testnode import ( "context" "encoding/hex" + "net" + "os" + "path" "github.com/celestiaorg/celestia-app/v2/app" "github.com/celestiaorg/celestia-app/v2/app/encoding" @@ -88,3 +91,48 @@ func GenerateAccounts(count int) []string { } return accs } + +// getFreePort returns a free port and optionally an error. +func getFreePort() (int, error) { + a, err := net.ResolveTCPAddr("tcp", "localhost:0") + if err != nil { + return 0, err + } + + l, err := net.ListenTCP("tcp", a) + if err != nil { + return 0, err + } + defer l.Close() + return l.Addr().(*net.TCPAddr).Port, nil +} + +// mustGetFreePort returns a free port. Panics if no free ports are available or +// an error is encountered. +func mustGetFreePort() int { + port, err := getFreePort() + if err != nil { + panic(err) + } + return port +} + +// removeDir removes the directory `rootDir`. +// The main use of this is to reduce the flakiness of the CI when it's unable to delete +// the config folder of the tendermint node. +// This will manually go over the files contained inside the provided `rootDir` +// and delete them one by one. +func removeDir(rootDir string) error { + dir, err := os.ReadDir(rootDir) + if err != nil { + return err + } + for _, d := range dir { + path := path.Join([]string{rootDir, d.Name()}...) + err := os.RemoveAll(path) + if err != nil { + return err + } + } + return os.RemoveAll(rootDir) +} From fc371181dc1e13fc6e5ceea575b1639197319e79 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 11:49:19 -0400 Subject: [PATCH 044/140] fix: stop filtering to just errors --- test/util/testnode/logger.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/test/util/testnode/logger.go b/test/util/testnode/logger.go index 3c072d1d74..7c63e63959 100644 --- a/test/util/testnode/logger.go +++ b/test/util/testnode/logger.go @@ -6,11 +6,9 @@ import ( "github.com/tendermint/tendermint/libs/log" ) -func newLogger(cfg *UniversalTestingConfig) log.Logger { - if cfg.SuppressLogs { +func newLogger(config *UniversalTestingConfig) log.Logger { + if config.SuppressLogs { return log.NewNopLogger() } - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - logger = log.NewFilter(logger, log.AllowError()) - return logger + return log.NewTMLogger(log.NewSyncWriter(os.Stdout)) } From ca6dd0d460eeacabff3f204c0f5f3d91b9667fe3 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 13:46:16 -0400 Subject: [PATCH 045/140] issue is with multiplexer app --- node/utils/start_node.go | 14 ++++++++++++-- test/util/testnode/comet_node.go | 4 ++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 491d1968f3..38bbbfdc1d 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "os" + "path/filepath" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -14,6 +15,7 @@ import ( "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" "github.com/tendermint/tendermint/proxy" + tmdb "github.com/tendermint/tm-db" ) func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { @@ -56,7 +58,14 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip } func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { + logger := newLogger() + dbPath := filepath.Join(config.TmConfig.RootDir, "data") + db, err := tmdb.NewGoLevelDB("application", dbPath) + if err != nil { + return nil, nil, err + } config.AppOptions.Set(flags.FlagHome, baseDir) + app = config.AppCreator(logger, db, nil, config.AppOptions) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { return nil, nil, err @@ -65,7 +74,8 @@ func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multi config.TmConfig, privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), nodeKey, - newProxyClientCreator(multiplexer), + // newProxyClientCreator(multiplexer), + proxy.NewLocalClientCreator(app), node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), @@ -74,7 +84,7 @@ func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multi if err != nil { return nil, nil, err } - return cometNode, nil, err + return cometNode, app, err } func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { diff --git a/test/util/testnode/comet_node.go b/test/util/testnode/comet_node.go index bc83eef55d..84a6dee1b7 100644 --- a/test/util/testnode/comet_node.go +++ b/test/util/testnode/comet_node.go @@ -9,7 +9,7 @@ import ( "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" "github.com/tendermint/tendermint/proxy" - dbm "github.com/tendermint/tm-db" + tmdb "github.com/tendermint/tm-db" ) // NewCometNode creates a ready to use comet node that operates a single @@ -18,7 +18,7 @@ import ( func NewCometNode(baseDir string, config *UniversalTestingConfig) (*node.Node, servertypes.Application, error) { logger := newLogger(config) dbPath := filepath.Join(config.TmConfig.RootDir, "data") - db, err := dbm.NewGoLevelDB("application", dbPath) + db, err := tmdb.NewGoLevelDB("application", dbPath) if err != nil { return nil, nil, err } From fbe9a2eee276d133e0fdcbebb665ced03b76ccf8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 13:54:00 -0400 Subject: [PATCH 046/140] error: panic: leveldb: closed --- node/utils/start_node.go | 7 ++++--- test/util/genesis/files.go | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 38bbbfdc1d..1ba27a89cc 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "os" - "path/filepath" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -58,13 +57,15 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip } func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { + config.AppOptions.Set(flags.FlagHome, baseDir) + logger := newLogger() - dbPath := filepath.Join(config.TmConfig.RootDir, "data") + // dbPath := filepath.Join(config.TmConfig.RootDir, "data") + dbPath := config.TmConfig.DBPath db, err := tmdb.NewGoLevelDB("application", dbPath) if err != nil { return nil, nil, err } - config.AppOptions.Set(flags.FlagHome, baseDir) app = config.AppCreator(logger, db, nil, config.AppOptions) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { diff --git a/test/util/genesis/files.go b/test/util/genesis/files.go index c8de7eec03..96fff9d337 100644 --- a/test/util/genesis/files.go +++ b/test/util/genesis/files.go @@ -11,22 +11,22 @@ import ( "github.com/tendermint/tendermint/privval" ) -// InitFiles initializes the files for a new tendermint node with the provided +// InitFiles initializes the files for a new Comet node with the provided // genesis. It will use the validatorIndex to save the validator's consensus // key. func InitFiles( - dir string, - tmCfg *config.Config, - g *Genesis, + rootDir string, + tmConfig *config.Config, + genesis *Genesis, validatorIndex int, ) (string, error) { - val, has := g.Validator(validatorIndex) + val, has := genesis.Validator(validatorIndex) if !has { return "", fmt.Errorf("validator %d not found", validatorIndex) } - basePath := filepath.Join(dir, ".celestia-app") - tmCfg.SetRoot(basePath) + basePath := filepath.Join(rootDir, ".celestia-app") + tmConfig.SetRoot(basePath) // save the genesis file configPath := filepath.Join(basePath, "config") @@ -34,27 +34,27 @@ func InitFiles( if err != nil { return "", err } - gDoc, err := g.Export() + genesisDoc, err := genesis.Export() if err != nil { return "", fmt.Errorf("exporting genesis: %w", err) } - err = gDoc.SaveAs(tmCfg.GenesisFile()) + err = genesisDoc.SaveAs(tmConfig.GenesisFile()) if err != nil { return "", err } - pvStateFile := tmCfg.PrivValidatorStateFile() + pvStateFile := tmConfig.PrivValidatorStateFile() if err := tmos.EnsureDir(filepath.Dir(pvStateFile), 0o777); err != nil { return "", err } - pvKeyFile := tmCfg.PrivValidatorKeyFile() + pvKeyFile := tmConfig.PrivValidatorKeyFile() if err := tmos.EnsureDir(filepath.Dir(pvKeyFile), 0o777); err != nil { return "", err } filePV := privval.NewFilePV(val.ConsensusKey, pvKeyFile, pvStateFile) filePV.Save() - nodeKeyFile := tmCfg.NodeKeyFile() + nodeKeyFile := tmConfig.NodeKeyFile() if err := tmos.EnsureDir(filepath.Dir(nodeKeyFile), 0o777); err != nil { return "", err } From 2becb822afefb720a85df3b3a3a1bef69ce8ace3 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 14:09:43 -0400 Subject: [PATCH 047/140] still: panic: leveldb: closed --- node/cmd/root.go | 9 ++++++++- node/cmd/root_test.go | 6 +++++- node/utils/start_node.go | 15 ++++----------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index d890366252..3f776f3e9c 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -12,6 +12,8 @@ import ( var cfgFile string +const rootDir = "rootDir" + // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "node", @@ -23,7 +25,12 @@ var rootCmd = &cobra.Command{ config := utils.GetConfig() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, err := utils.StartNode(ctx, config, multiplexer) + + err := os.Mkdir(rootDir, 0755) + if err != nil { + return err + } + cctx, err := utils.StartNode(ctx, config, multiplexer, rootDir) if err != nil { fmt.Printf("Failed to start node: %v\n", err) return err diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index 41371e99f9..4b46dd1a59 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -15,10 +15,14 @@ func TestRun(t *testing.T) { apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) config := testnode.DefaultConfig() + tempDir := t.TempDir() + fmt.Printf("dbPath %v\n", config.TmConfig.DBPath) + fmt.Printf("dbDir %v\n", config.TmConfig.DBDir()) + fmt.Printf("tempDir %v\n", tempDir) ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, err := utils.StartNode(ctx, config, multiplexer) + cctx, err := utils.StartNode(ctx, config, multiplexer, tempDir) require.NoError(t, err) fmt.Printf("chainID %v\n", cctx.ChainID) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 1ba27a89cc..3b3806461a 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -2,8 +2,8 @@ package utils import ( "context" - "fmt" "os" + "path/filepath" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -17,14 +17,8 @@ import ( tmdb "github.com/tendermint/tm-db" ) -func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { - tempDir, err := os.MkdirTemp("", "example") - if err != nil { - return cctx, fmt.Errorf("failed to create temp directory: %v", err) - } - defer os.RemoveAll(tempDir) - - baseDir, err := genesis.InitFiles(tempDir, config.TmConfig, config.Genesis, 0) +func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, err error) { + baseDir, err := genesis.InitFiles(rootDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err } @@ -60,8 +54,7 @@ func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multi config.AppOptions.Set(flags.FlagHome, baseDir) logger := newLogger() - // dbPath := filepath.Join(config.TmConfig.RootDir, "data") - dbPath := config.TmConfig.DBPath + dbPath := filepath.Join(config.TmConfig.RootDir, "data") db, err := tmdb.NewGoLevelDB("application", dbPath) if err != nil { return nil, nil, err From 3ef359e966f78e04e2344f2d1b439d33503552d2 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 14:18:47 -0400 Subject: [PATCH 048/140] still panic --- node/cmd/root_test.go | 5 +++-- node/utils/config.go | 3 +++ node/utils/start_node.go | 13 +++++-------- test/util/genesis/files.go | 6 +++--- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index 4b46dd1a59..6a1cbd375b 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -6,7 +6,6 @@ import ( "testing" "github.com/celestiaorg/celestia-app/node/utils" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/stretchr/testify/require" ) @@ -14,8 +13,10 @@ func TestRun(t *testing.T) { currentAppVersion := uint64(1) apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - config := testnode.DefaultConfig() + config := utils.GetConfig() + tempDir := t.TempDir() + fmt.Printf("rootDir %v\n", config.TmConfig.RootDir) fmt.Printf("dbPath %v\n", config.TmConfig.DBPath) fmt.Printf("dbDir %v\n", config.TmConfig.DBDir()) fmt.Printf("tempDir %v\n", tempDir) diff --git a/node/utils/config.go b/node/utils/config.go index f77ea89831..4b7467480f 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -8,5 +8,8 @@ func GetConfig() *testnode.Config { tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" + tmConfig.DBPath = "data" + tmConfig.DBBackend = "goleveldb" + tmConfig.RootDir = "rootDir" return testnode.DefaultConfig().WithTendermintConfig(tmConfig).WithSuppressLogs(false) } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 3b3806461a..0bc55a01dd 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -3,7 +3,6 @@ package utils import ( "context" "os" - "path/filepath" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" @@ -18,12 +17,13 @@ import ( ) func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, err error) { - baseDir, err := genesis.InitFiles(rootDir, config.TmConfig, config.Genesis, 0) + basePath, err := genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err } + config.AppOptions.Set(flags.FlagHome, basePath) - cometNode, app, err := newCometNode(baseDir, &config.UniversalTestingConfig, multiplexer) + cometNode, app, err := newCometNode(&config.UniversalTestingConfig, multiplexer) if err != nil { return testnode.Context{}, err } @@ -50,12 +50,9 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip return cctx, nil } -func newCometNode(baseDir string, config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { - config.AppOptions.Set(flags.FlagHome, baseDir) - +func newCometNode(config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { logger := newLogger() - dbPath := filepath.Join(config.TmConfig.RootDir, "data") - db, err := tmdb.NewGoLevelDB("application", dbPath) + db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { return nil, nil, err } diff --git a/test/util/genesis/files.go b/test/util/genesis/files.go index 96fff9d337..ff702d3c15 100644 --- a/test/util/genesis/files.go +++ b/test/util/genesis/files.go @@ -19,18 +19,18 @@ func InitFiles( tmConfig *config.Config, genesis *Genesis, validatorIndex int, -) (string, error) { +) (basePath string, err error) { val, has := genesis.Validator(validatorIndex) if !has { return "", fmt.Errorf("validator %d not found", validatorIndex) } - basePath := filepath.Join(rootDir, ".celestia-app") + basePath = filepath.Join(rootDir, ".celestia-app") tmConfig.SetRoot(basePath) // save the genesis file configPath := filepath.Join(basePath, "config") - err := os.MkdirAll(configPath, os.ModePerm) + err = os.MkdirAll(configPath, os.ModePerm) if err != nil { return "", err } From f842f17c43ebe9255bdd9330676835f0e05190ea Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 14:21:51 -0400 Subject: [PATCH 049/140] fix: stop cleaning up node --- node/utils/start_node.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 0bc55a01dd..2e74650a49 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -30,17 +30,15 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip cctx = testnode.NewContext(ctx, config.Genesis.Keyring(), config.TmConfig, config.Genesis.ChainID, config.AppConfig.API.Address) - cctx, stopNode, err := testnode.StartNode(cometNode, cctx) + cctx, _, err = testnode.StartNode(cometNode, cctx) if err != nil { return testnode.Context{}, err } - defer stopNode() - cctx, cleanupGRPC, err := testnode.StartGRPCServer(app, config.AppConfig, cctx) + cctx, _, err = testnode.StartGRPCServer(app, config.AppConfig, cctx) if err != nil { return testnode.Context{}, err } - defer cleanupGRPC() _, err = testnode.StartAPIServer(app, *config.AppConfig, cctx) if err != nil { From 3ed43103335153147b17e31a3983f04b40185ddf Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 14:27:49 -0400 Subject: [PATCH 050/140] refactor: remove unnecessary rootDir --- node/cmd/root.go | 8 +------- node/cmd/root_test.go | 10 +++------- node/utils/start_node.go | 2 +- 3 files changed, 5 insertions(+), 15 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 3f776f3e9c..e55e094acc 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -12,8 +12,6 @@ import ( var cfgFile string -const rootDir = "rootDir" - // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "node", @@ -26,11 +24,7 @@ var rootCmd = &cobra.Command{ ctx, cancel := context.WithCancel(context.Background()) defer cancel() - err := os.Mkdir(rootDir, 0755) - if err != nil { - return err - } - cctx, err := utils.StartNode(ctx, config, multiplexer, rootDir) + cctx, err := utils.StartNode(ctx, config, multiplexer) if err != nil { fmt.Printf("Failed to start node: %v\n", err) return err diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index 6a1cbd375b..f36ed26728 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -13,24 +13,20 @@ func TestRun(t *testing.T) { currentAppVersion := uint64(1) apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - config := utils.GetConfig() - tempDir := t.TempDir() + config := utils.GetConfig() fmt.Printf("rootDir %v\n", config.TmConfig.RootDir) fmt.Printf("dbPath %v\n", config.TmConfig.DBPath) fmt.Printf("dbDir %v\n", config.TmConfig.DBDir()) - fmt.Printf("tempDir %v\n", tempDir) ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, err := utils.StartNode(ctx, config, multiplexer, tempDir) + + cctx, err := utils.StartNode(ctx, config, multiplexer) require.NoError(t, err) fmt.Printf("chainID %v\n", cctx.ChainID) latestHeight, err := cctx.LatestHeight() require.NoError(t, err) fmt.Printf("latestHeight %v\n", latestHeight) - - err = cctx.WaitForNextBlock() - require.NoError(t, err) } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 2e74650a49..c136d135a2 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -16,7 +16,7 @@ import ( tmdb "github.com/tendermint/tm-db" ) -func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, err error) { +func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { basePath, err := genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err From af59529f123cba7617a733ab942531b6e091c1e3 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 14:39:07 -0400 Subject: [PATCH 051/140] bug: not progressing past block height 0 --- node/cmd/root_test.go | 6 ++++++ test/util/testnode/config.go | 32 ++++++++++++++++---------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index f36ed26728..dcb60e5d7d 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -29,4 +29,10 @@ func TestRun(t *testing.T) { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) fmt.Printf("latestHeight %v\n", latestHeight) + + cctx.WaitForNextBlock() + + latestHeight, err = cctx.LatestHeight() + require.NoError(t, err) + fmt.Printf("latestHeight %v\n", latestHeight) } diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index 00b10b8ca4..0dd502964d 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/cosmos/cosmos-sdk/baseapp" srvconfig "github.com/cosmos/cosmos-sdk/server/config" - srvtypes "github.com/cosmos/cosmos-sdk/server/types" + servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/simapp" tmconfig "github.com/tendermint/tendermint/config" "github.com/tendermint/tendermint/libs/log" @@ -35,7 +35,7 @@ type UniversalTestingConfig struct { // AppOptions are the application options of the test node. AppOptions *KVAppOptions // AppCreator is used to create the application for the testnode. - AppCreator srvtypes.AppCreator + AppCreator servertypes.AppCreator // SuppressLogs in testnode. This should be set to true when running // network tests. SuppressLogs bool @@ -71,7 +71,7 @@ func (c *Config) WithAppOptions(opts *KVAppOptions) *Config { } // WithAppCreator sets the AppCreator and returns the Config. -func (c *Config) WithAppCreator(creator srvtypes.AppCreator) *Config { +func (c *Config) WithAppCreator(creator servertypes.AppCreator) *Config { c.AppCreator = creator return c } @@ -145,34 +145,34 @@ func DefaultConsensusParams() *tmproto.ConsensusParams { } func DefaultTendermintConfig() *tmconfig.Config { - tmCfg := tmconfig.DefaultConfig() + tmConfig := tmconfig.DefaultConfig() // Reduce the timeout commit to 1ms to speed up the rate at which the test // node produces blocks. - tmCfg.Consensus.TimeoutCommit = 1 * time.Millisecond + tmConfig.Consensus.TimeoutCommit = 1 * time.Millisecond // Override the mempool's MaxTxBytes to allow the testnode to accept a // transaction that fills the entire square. Any blob transaction larger // than the square size will still fail no matter what. maxTxBytes := appconsts.DefaultSquareSizeUpperBound * appconsts.DefaultSquareSizeUpperBound * appconsts.ContinuationSparseShareContentSize - tmCfg.Mempool.MaxTxBytes = maxTxBytes + tmConfig.Mempool.MaxTxBytes = maxTxBytes // Override the MaxBodyBytes to allow the testnode to accept very large // transactions and respond to queries with large responses (200 MiB was // chosen only as an arbitrary large number). - tmCfg.RPC.MaxBodyBytes = 200 * mebibyte + tmConfig.RPC.MaxBodyBytes = 200 * mebibyte - tmCfg.RPC.TimeoutBroadcastTxCommit = time.Minute + tmConfig.RPC.TimeoutBroadcastTxCommit = time.Minute // set all the ports to random open ones - tmCfg.RPC.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - tmCfg.P2P.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - tmCfg.RPC.GRPCListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + tmConfig.RPC.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + tmConfig.P2P.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + tmConfig.RPC.GRPCListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - return tmCfg + return tmConfig } -func DefaultAppCreator() srvtypes.AppCreator { - return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ srvtypes.AppOptions) srvtypes.Application { +func DefaultAppCreator() servertypes.AppCreator { + return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ servertypes.AppOptions) servertypes.Application { encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) return app.New( log.NewNopLogger(), @@ -187,8 +187,8 @@ func DefaultAppCreator() srvtypes.AppCreator { } } -func CustomAppCreator(minGasPrice string) srvtypes.AppCreator { - return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ srvtypes.AppOptions) srvtypes.Application { +func CustomAppCreator(minGasPrice string) servertypes.AppCreator { + return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ servertypes.AppOptions) servertypes.Application { encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) return app.New( log.NewNopLogger(), From f67284b44ea72537233a4bc27dab709089b9f9fd Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 15:01:44 -0400 Subject: [PATCH 052/140] Revert "bug: not progressing past block height 0" This reverts commit af59529f123cba7617a733ab942531b6e091c1e3. --- node/cmd/root_test.go | 6 ------ test/util/testnode/config.go | 32 ++++++++++++++++---------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index dcb60e5d7d..f36ed26728 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -29,10 +29,4 @@ func TestRun(t *testing.T) { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) fmt.Printf("latestHeight %v\n", latestHeight) - - cctx.WaitForNextBlock() - - latestHeight, err = cctx.LatestHeight() - require.NoError(t, err) - fmt.Printf("latestHeight %v\n", latestHeight) } diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index 0dd502964d..00b10b8ca4 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/cosmos/cosmos-sdk/baseapp" srvconfig "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" + srvtypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/simapp" tmconfig "github.com/tendermint/tendermint/config" "github.com/tendermint/tendermint/libs/log" @@ -35,7 +35,7 @@ type UniversalTestingConfig struct { // AppOptions are the application options of the test node. AppOptions *KVAppOptions // AppCreator is used to create the application for the testnode. - AppCreator servertypes.AppCreator + AppCreator srvtypes.AppCreator // SuppressLogs in testnode. This should be set to true when running // network tests. SuppressLogs bool @@ -71,7 +71,7 @@ func (c *Config) WithAppOptions(opts *KVAppOptions) *Config { } // WithAppCreator sets the AppCreator and returns the Config. -func (c *Config) WithAppCreator(creator servertypes.AppCreator) *Config { +func (c *Config) WithAppCreator(creator srvtypes.AppCreator) *Config { c.AppCreator = creator return c } @@ -145,34 +145,34 @@ func DefaultConsensusParams() *tmproto.ConsensusParams { } func DefaultTendermintConfig() *tmconfig.Config { - tmConfig := tmconfig.DefaultConfig() + tmCfg := tmconfig.DefaultConfig() // Reduce the timeout commit to 1ms to speed up the rate at which the test // node produces blocks. - tmConfig.Consensus.TimeoutCommit = 1 * time.Millisecond + tmCfg.Consensus.TimeoutCommit = 1 * time.Millisecond // Override the mempool's MaxTxBytes to allow the testnode to accept a // transaction that fills the entire square. Any blob transaction larger // than the square size will still fail no matter what. maxTxBytes := appconsts.DefaultSquareSizeUpperBound * appconsts.DefaultSquareSizeUpperBound * appconsts.ContinuationSparseShareContentSize - tmConfig.Mempool.MaxTxBytes = maxTxBytes + tmCfg.Mempool.MaxTxBytes = maxTxBytes // Override the MaxBodyBytes to allow the testnode to accept very large // transactions and respond to queries with large responses (200 MiB was // chosen only as an arbitrary large number). - tmConfig.RPC.MaxBodyBytes = 200 * mebibyte + tmCfg.RPC.MaxBodyBytes = 200 * mebibyte - tmConfig.RPC.TimeoutBroadcastTxCommit = time.Minute + tmCfg.RPC.TimeoutBroadcastTxCommit = time.Minute // set all the ports to random open ones - tmConfig.RPC.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - tmConfig.P2P.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - tmConfig.RPC.GRPCListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + tmCfg.RPC.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + tmCfg.P2P.ListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + tmCfg.RPC.GRPCListenAddress = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - return tmConfig + return tmCfg } -func DefaultAppCreator() servertypes.AppCreator { - return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ servertypes.AppOptions) servertypes.Application { +func DefaultAppCreator() srvtypes.AppCreator { + return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ srvtypes.AppOptions) srvtypes.Application { encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) return app.New( log.NewNopLogger(), @@ -187,8 +187,8 @@ func DefaultAppCreator() servertypes.AppCreator { } } -func CustomAppCreator(minGasPrice string) servertypes.AppCreator { - return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ servertypes.AppOptions) servertypes.Application { +func CustomAppCreator(minGasPrice string) srvtypes.AppCreator { + return func(_ log.Logger, _ tmdb.DB, _ io.Writer, _ srvtypes.AppOptions) srvtypes.Application { encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) return app.New( log.NewNopLogger(), From 057ebcddae99c5d45562253f3256dc51bb95e5ce Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 15:01:51 -0400 Subject: [PATCH 053/140] Revert "refactor: remove unnecessary rootDir" This reverts commit 3ed43103335153147b17e31a3983f04b40185ddf. --- node/cmd/root.go | 8 +++++++- node/cmd/root_test.go | 10 +++++++--- node/utils/start_node.go | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index e55e094acc..3f776f3e9c 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -12,6 +12,8 @@ import ( var cfgFile string +const rootDir = "rootDir" + // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "node", @@ -24,7 +26,11 @@ var rootCmd = &cobra.Command{ ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, err := utils.StartNode(ctx, config, multiplexer) + err := os.Mkdir(rootDir, 0755) + if err != nil { + return err + } + cctx, err := utils.StartNode(ctx, config, multiplexer, rootDir) if err != nil { fmt.Printf("Failed to start node: %v\n", err) return err diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index f36ed26728..6a1cbd375b 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -13,20 +13,24 @@ func TestRun(t *testing.T) { currentAppVersion := uint64(1) apps := utils.GetApps() multiplexer := utils.NewMultiplexer(currentAppVersion, apps) - config := utils.GetConfig() + + tempDir := t.TempDir() fmt.Printf("rootDir %v\n", config.TmConfig.RootDir) fmt.Printf("dbPath %v\n", config.TmConfig.DBPath) fmt.Printf("dbDir %v\n", config.TmConfig.DBDir()) + fmt.Printf("tempDir %v\n", tempDir) ctx, cancel := context.WithCancel(context.Background()) defer cancel() - - cctx, err := utils.StartNode(ctx, config, multiplexer) + cctx, err := utils.StartNode(ctx, config, multiplexer, tempDir) require.NoError(t, err) fmt.Printf("chainID %v\n", cctx.ChainID) latestHeight, err := cctx.LatestHeight() require.NoError(t, err) fmt.Printf("latestHeight %v\n", latestHeight) + + err = cctx.WaitForNextBlock() + require.NoError(t, err) } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index c136d135a2..2e74650a49 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -16,7 +16,7 @@ import ( tmdb "github.com/tendermint/tm-db" ) -func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, err error) { +func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, err error) { basePath, err := genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, err From f087316f4a0871b8ab259e4866239ecd668254a5 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 15:02:09 -0400 Subject: [PATCH 054/140] fix: logger --- node/cmd/root_test.go | 5 ++--- node/utils/config.go | 2 +- node/utils/start_node.go | 12 ++---------- test/util/testnode/comet_node.go | 2 +- test/util/testnode/logger.go | 14 ++++++++++++-- 5 files changed, 18 insertions(+), 17 deletions(-) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index 6a1cbd375b..fbf5fbf36a 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/celestiaorg/celestia-app/node/utils" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -30,7 +31,5 @@ func TestRun(t *testing.T) { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) fmt.Printf("latestHeight %v\n", latestHeight) - - err = cctx.WaitForNextBlock() - require.NoError(t, err) + assert.Greater(t, latestHeight, int64(0)) } diff --git a/node/utils/config.go b/node/utils/config.go index 4b7467480f..b77c19990b 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -4,7 +4,7 @@ import "github.com/celestiaorg/celestia-app/v2/test/util/testnode" func GetConfig() *testnode.Config { tmConfig := testnode.DefaultTendermintConfig() - tmConfig.LogLevel = "DEBUG" + tmConfig.LogLevel = "info" tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 2e74650a49..67e7b7138d 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -2,13 +2,11 @@ package utils import ( "context" - "os" "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/cosmos/cosmos-sdk/client/flags" servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/tendermint/tendermint/libs/log" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" @@ -49,7 +47,7 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip } func newCometNode(config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { - logger := newLogger() + logger := testnode.NewLogger(config) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { return nil, nil, err @@ -68,7 +66,7 @@ func newCometNode(config *testnode.UniversalTestingConfig, multiplexer *Multiple node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), - newLogger(), + logger, ) if err != nil { return nil, nil, err @@ -79,9 +77,3 @@ func newCometNode(config *testnode.UniversalTestingConfig, multiplexer *Multiple func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { return proxy.NewLocalClientCreator(multiplexer) } - -func newLogger() log.Logger { - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - logger = log.NewFilter(logger, log.AllowDebug()) - return logger -} diff --git a/test/util/testnode/comet_node.go b/test/util/testnode/comet_node.go index 84a6dee1b7..da0e566b37 100644 --- a/test/util/testnode/comet_node.go +++ b/test/util/testnode/comet_node.go @@ -16,7 +16,7 @@ import ( // validator celestia-app network. It expects that all configuration files are // already initialized and saved to the baseDir. func NewCometNode(baseDir string, config *UniversalTestingConfig) (*node.Node, servertypes.Application, error) { - logger := newLogger(config) + logger := NewLogger(config) dbPath := filepath.Join(config.TmConfig.RootDir, "data") db, err := tmdb.NewGoLevelDB("application", dbPath) if err != nil { diff --git a/test/util/testnode/logger.go b/test/util/testnode/logger.go index 7c63e63959..36f80e249b 100644 --- a/test/util/testnode/logger.go +++ b/test/util/testnode/logger.go @@ -6,9 +6,19 @@ import ( "github.com/tendermint/tendermint/libs/log" ) -func newLogger(config *UniversalTestingConfig) log.Logger { +func NewLogger(config *UniversalTestingConfig) log.Logger { if config.SuppressLogs { return log.NewNopLogger() } - return log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + switch config.TmConfig.LogLevel { + case "error": + return log.NewFilter(logger, log.AllowError()) + case "info": + return log.NewFilter(logger, log.AllowInfo()) + case "debug": + return log.NewFilter(logger, log.AllowDebug()) + default: + return logger + } } From d9bf079f39871be58d982632e698a46dbb45616a Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 7 Aug 2024 15:05:56 -0400 Subject: [PATCH 055/140] refactor: clean up --- node/cmd/root_test.go | 4 ---- node/utils/config.go | 3 --- 2 files changed, 7 deletions(-) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index fbf5fbf36a..e4d587dc36 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -17,10 +17,6 @@ func TestRun(t *testing.T) { config := utils.GetConfig() tempDir := t.TempDir() - fmt.Printf("rootDir %v\n", config.TmConfig.RootDir) - fmt.Printf("dbPath %v\n", config.TmConfig.DBPath) - fmt.Printf("dbDir %v\n", config.TmConfig.DBDir()) - fmt.Printf("tempDir %v\n", tempDir) ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/node/utils/config.go b/node/utils/config.go index b77c19990b..37f0787b6a 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -8,8 +8,5 @@ func GetConfig() *testnode.Config { tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" - tmConfig.DBPath = "data" - tmConfig.DBBackend = "goleveldb" - tmConfig.RootDir = "rootDir" return testnode.DefaultConfig().WithTendermintConfig(tmConfig).WithSuppressLogs(false) } From f4cb007d9ef990da853a61b1b1bba5c4ad996ec1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 8 Aug 2024 11:38:37 -0400 Subject: [PATCH 056/140] wip --- node/cmd/root.go | 3 ++- node/cmd/root_test.go | 3 ++- node/utils/start_node.go | 42 +++++++++++++++++++++++++--------------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 3f776f3e9c..fee6b49213 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -30,7 +30,8 @@ var rootCmd = &cobra.Command{ if err != nil { return err } - cctx, err := utils.StartNode(ctx, config, multiplexer, rootDir) + cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, rootDir) + defer cleanup() if err != nil { fmt.Printf("Failed to start node: %v\n", err) return err diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index e4d587dc36..72d0a0933e 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -20,7 +20,8 @@ func TestRun(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, err := utils.StartNode(ctx, config, multiplexer, tempDir) + cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, tempDir) + defer cleanup() require.NoError(t, err) fmt.Printf("chainID %v\n", cctx.ChainID) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 67e7b7138d..7914caa35c 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -14,48 +14,55 @@ import ( tmdb "github.com/tendermint/tm-db" ) -func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, err error) { +func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, cleanup func() error, err error) { basePath, err := genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.Genesis, 0) if err != nil { - return testnode.Context{}, err + return testnode.Context{}, nil, err } config.AppOptions.Set(flags.FlagHome, basePath) - cometNode, app, err := newCometNode(&config.UniversalTestingConfig, multiplexer) + cometNode, app, cleanupComet, err := newCometNode(config, multiplexer) if err != nil { - return testnode.Context{}, err + return testnode.Context{}, nil, err } cctx = testnode.NewContext(ctx, config.Genesis.Keyring(), config.TmConfig, config.Genesis.ChainID, config.AppConfig.API.Address) - cctx, _, err = testnode.StartNode(cometNode, cctx) + cctx, cleanupNode, err := testnode.StartNode(cometNode, cctx) if err != nil { - return testnode.Context{}, err + return testnode.Context{}, nil, err } - cctx, _, err = testnode.StartGRPCServer(app, config.AppConfig, cctx) + cctx, cleanupGRPC, err := testnode.StartGRPCServer(app, config.AppConfig, cctx) if err != nil { - return testnode.Context{}, err + return testnode.Context{}, nil, err } _, err = testnode.StartAPIServer(app, *config.AppConfig, cctx) if err != nil { - return testnode.Context{}, err + return testnode.Context{}, nil, err } - return cctx, nil + cleanup = func() error { + cleanupComet() + cleanupNode() + cleanupGRPC() + return nil + } + + return cctx, cleanup, nil } -func newCometNode(config *testnode.UniversalTestingConfig, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, err error) { - logger := testnode.NewLogger(config) +func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, cleanupComet func() error, err error) { + logger := testnode.NewLogger(&config.UniversalTestingConfig) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { - return nil, nil, err + return nil, nil, nil, err } app = config.AppCreator(logger, db, nil, config.AppOptions) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { - return nil, nil, err + return nil, nil, nil, err } cometNode, err = node.NewNode( config.TmConfig, @@ -69,9 +76,12 @@ func newCometNode(config *testnode.UniversalTestingConfig, multiplexer *Multiple logger, ) if err != nil { - return nil, nil, err + return nil, nil, nil, err + } + cleanup := func() error { + return db.Close() } - return cometNode, app, err + return cometNode, app, cleanup, err } func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { From 2fc392c99728e55e3daf1764da318112132055c1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 10:50:54 -0400 Subject: [PATCH 057/140] refactor: remove API server --- node/utils/start_node.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 7914caa35c..af20840aa8 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -38,11 +38,6 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip return testnode.Context{}, nil, err } - _, err = testnode.StartAPIServer(app, *config.AppConfig, cctx) - if err != nil { - return testnode.Context{}, nil, err - } - cleanup = func() error { cleanupComet() cleanupNode() @@ -59,6 +54,8 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode if err != nil { return nil, nil, nil, err } + + // TODO: remove this line app = config.AppCreator(logger, db, nil, config.AppOptions) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { @@ -68,6 +65,7 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode config.TmConfig, privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), nodeKey, + // TODO: use multiplexer instead of singular app // newProxyClientCreator(multiplexer), proxy.NewLocalClientCreator(app), node.DefaultGenesisDocProviderFunc(config.TmConfig), From a253034a2e17581d5719f99c4366b0fb1d2b0708 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 10:54:17 -0400 Subject: [PATCH 058/140] HACKHACK: passing test --- node/utils/start_node.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index af20840aa8..782361bfaf 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -66,8 +66,8 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), nodeKey, // TODO: use multiplexer instead of singular app - // newProxyClientCreator(multiplexer), - proxy.NewLocalClientCreator(app), + newProxyClientCreator(multiplexer), + // proxy.NewLocalClientCreator(app), node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), From fbca2b5f54cff98337419d67f4044898880c132a Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 14:41:48 -0400 Subject: [PATCH 059/140] fix: test by waiting for block height > 0 --- node/cmd/root_test.go | 11 ++++++----- node/utils/start_node.go | 24 ++++++++++-------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index 72d0a0933e..50f6098824 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -4,9 +4,9 @@ import ( "context" "fmt" "testing" + "time" "github.com/celestiaorg/celestia-app/node/utils" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -25,8 +25,9 @@ func TestRun(t *testing.T) { require.NoError(t, err) fmt.Printf("chainID %v\n", cctx.ChainID) - latestHeight, err := cctx.LatestHeight() - require.NoError(t, err) - fmt.Printf("latestHeight %v\n", latestHeight) - assert.Greater(t, latestHeight, int64(0)) + require.Eventually(t, func() bool { + latestHeight, err := cctx.LatestHeight() + require.NoError(t, err) + return latestHeight > 0 + }, time.Second*10, time.Second) } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 782361bfaf..5260405db3 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -6,7 +6,6 @@ import ( "github.com/celestiaorg/celestia-app/v2/test/util/genesis" "github.com/celestiaorg/celestia-app/v2/test/util/testnode" "github.com/cosmos/cosmos-sdk/client/flags" - servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" @@ -21,7 +20,7 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip } config.AppOptions.Set(flags.FlagHome, basePath) - cometNode, app, cleanupComet, err := newCometNode(config, multiplexer) + cometNode, cleanupComet, err := newCometNode(config, multiplexer) if err != nil { return testnode.Context{}, nil, err } @@ -33,33 +32,30 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip return testnode.Context{}, nil, err } - cctx, cleanupGRPC, err := testnode.StartGRPCServer(app, config.AppConfig, cctx) - if err != nil { - return testnode.Context{}, nil, err - } - cleanup = func() error { cleanupComet() cleanupNode() - cleanupGRPC() return nil } return cctx, cleanup, nil } -func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode *node.Node, app servertypes.Application, cleanupComet func() error, err error) { +// HACKHACK: this is a temporary solution to get the CometBFT node running. The +// CometBFT node is connected to the multiplexer but the returned application is +// a singular app (not a multiplexed app). +func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode *node.Node, cleanupComet func() error, err error) { logger := testnode.NewLogger(&config.UniversalTestingConfig) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { - return nil, nil, nil, err + return nil, nil, err } // TODO: remove this line - app = config.AppCreator(logger, db, nil, config.AppOptions) + // app = config.AppCreator(logger, db, nil, config.AppOptions) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { - return nil, nil, nil, err + return nil, nil, err } cometNode, err = node.NewNode( config.TmConfig, @@ -74,12 +70,12 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode logger, ) if err != nil { - return nil, nil, nil, err + return nil, nil, err } cleanup := func() error { return db.Close() } - return cometNode, app, cleanup, err + return cometNode, cleanup, err } func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { From b06361463dea71908d2d0adbe733f77bfa102aea Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 14:41:57 -0400 Subject: [PATCH 060/140] feat: pair w/ Callum --- node/utils/multiplexer.go | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index fe0fb6bc25..4ac3038fae 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -1,6 +1,13 @@ package utils -import abci "github.com/tendermint/tendermint/abci/types" +import ( + "fmt" + + abci "github.com/tendermint/tendermint/abci/types" +) + +// TODO: modify v1 state machine to contain an upgrade height and have an EndBlocker that returns with ConsensusParamsUpdates app version 2 +// TODO: extend the abci.Application interface to include a method called "RunMigration" // Multiplexer implements the abci.Application interface var _ abci.Application = (*Multiplexer)(nil) @@ -8,7 +15,9 @@ var _ abci.Application = (*Multiplexer)(nil) // Multiplexer is used to switch between different versions of the application. type Multiplexer struct { currentAppVersion uint64 - apps []abci.Application + // TODO: refactor apps to a map from appVersion to app + apps []abci.Application + nextAppVersion uint64 } func NewMultiplexer(currentAppVersion uint64, apps []abci.Application) *Multiplexer { @@ -38,8 +47,20 @@ func (m *Multiplexer) CheckTx(request abci.RequestCheckTx) abci.ResponseCheckTx } func (m *Multiplexer) Commit() abci.ResponseCommit { + // Note: the application can create or delete stores in this method app := m.getCurrentApp() - return app.Commit() + got := app.Commit() + + if m.nextAppVersion != 0 { + m.currentAppVersion = m.nextAppVersion + m.nextAppVersion = 0 + // TODO need to add RunMigrations to the abci.Application interface then uncomment: + // app := m.getCurrentApp() + // appHash := app.RunMigrations() + // got.Data = appHash + return got + } + return got } func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeliverTx { @@ -48,8 +69,18 @@ func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeli } func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { + // Note: the application can't create or delete stores in this method + // because it is operating on a branch of state. app := m.getCurrentApp() - return app.EndBlock(request) + got := app.EndBlock(request) + if got.ConsensusParamUpdates.Version.AppVersion != m.currentAppVersion { + if int(got.ConsensusParamUpdates.Version.AppVersion) >= len(m.apps) { + panic("multiplexer: app version out of range") + } + fmt.Printf("setting nextAppVersion %v\n", got.ConsensusParamUpdates.Version.AppVersion) + m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion + } + return got } func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { From 3fb927ff9fe225f7a32c26ed9c763a27efe42ce9 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 14:50:24 -0400 Subject: [PATCH 061/140] refactor: multiplexer nextAppVersion --- node/utils/multiplexer.go | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 4ac3038fae..1f37b1528d 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -6,6 +6,10 @@ import ( abci "github.com/tendermint/tendermint/abci/types" ) +const ( + InitialAppVersion = 1 +) + // TODO: modify v1 state machine to contain an upgrade height and have an EndBlocker that returns with ConsensusParamsUpdates app version 2 // TODO: extend the abci.Application interface to include a method called "RunMigration" @@ -14,21 +18,24 @@ var _ abci.Application = (*Multiplexer)(nil) // Multiplexer is used to switch between different versions of the application. type Multiplexer struct { + // applications is a map from appVersion to application + applications map[uint64]abci.Application + // currentAppVersion is the version of the application that is currently running currentAppVersion uint64 - // TODO: refactor apps to a map from appVersion to app - apps []abci.Application + // nextAppVersion is the version of the application that should be upgraded to. Usually this value is the same as currentAppVersion except if the current height is an upgrade height. nextAppVersion uint64 } -func NewMultiplexer(currentAppVersion uint64, apps []abci.Application) *Multiplexer { +func NewMultiplexer(apps map[uint64]abci.Application, currentAppVersion uint64) *Multiplexer { return &Multiplexer{ - currentAppVersion: 1, - apps: apps, + applications: apps, + currentAppVersion: InitialAppVersion, + nextAppVersion: InitialAppVersion, } } func (m *Multiplexer) getCurrentApp() abci.Application { - return m.apps[m.currentAppVersion] + return m.applications[m.currentAppVersion] } func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { @@ -51,9 +58,8 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { app := m.getCurrentApp() got := app.Commit() - if m.nextAppVersion != 0 { + if m.isUpgradePending() { m.currentAppVersion = m.nextAppVersion - m.nextAppVersion = 0 // TODO need to add RunMigrations to the abci.Application interface then uncomment: // app := m.getCurrentApp() // appHash := app.RunMigrations() @@ -73,11 +79,10 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo // because it is operating on a branch of state. app := m.getCurrentApp() got := app.EndBlock(request) - if got.ConsensusParamUpdates.Version.AppVersion != m.currentAppVersion { - if int(got.ConsensusParamUpdates.Version.AppVersion) >= len(m.apps) { - panic("multiplexer: app version out of range") + if m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { + if _, ok := m.applications[m.nextAppVersion]; !ok { + panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) } - fmt.Printf("setting nextAppVersion %v\n", got.ConsensusParamUpdates.Version.AppVersion) m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion } return got @@ -128,3 +133,7 @@ func (m *Multiplexer) SetOption(request abci.RequestSetOption) abci.ResponseSetO app := m.getCurrentApp() return app.SetOption(request) } + +func (m *Multiplexer) isUpgradePending() bool { + return m.currentAppVersion != m.nextAppVersion +} From 75714fa7728e405cacd6446800ddd4343cf62d6f Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 14:56:02 -0400 Subject: [PATCH 062/140] refactor: GetApplications --- node/cmd/root.go | 4 +--- node/cmd/root_test.go | 4 +--- node/utils/apps.go | 33 +++++++++++++++++---------------- node/utils/apps_test.go | 2 +- node/utils/multiplexer.go | 6 ++++-- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index fee6b49213..5cc22c6bf0 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -18,9 +18,7 @@ const rootDir = "rootDir" var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { - currentAppVersion := uint64(1) - apps := utils.GetApps() - multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + multiplexer := utils.NewMultiplexer() config := utils.GetConfig() ctx, cancel := context.WithCancel(context.Background()) diff --git a/node/cmd/root_test.go b/node/cmd/root_test.go index 50f6098824..18b282fd8d 100644 --- a/node/cmd/root_test.go +++ b/node/cmd/root_test.go @@ -11,9 +11,7 @@ import ( ) func TestRun(t *testing.T) { - currentAppVersion := uint64(1) - apps := utils.GetApps() - multiplexer := utils.NewMultiplexer(currentAppVersion, apps) + multiplexer := utils.NewMultiplexer() config := utils.GetConfig() tempDir := t.TempDir() diff --git a/node/utils/apps.go b/node/utils/apps.go index dd4212546e..feca708a1c 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -1,22 +1,25 @@ package utils import ( - v1 "github.com/celestiaorg/celestia-app/app" - v1encoding "github.com/celestiaorg/celestia-app/app/encoding" - v2 "github.com/celestiaorg/celestia-app/v2/app" - v2encoding "github.com/celestiaorg/celestia-app/v2/app/encoding" + appV1 "github.com/celestiaorg/celestia-app/app" + encodingV1 "github.com/celestiaorg/celestia-app/app/encoding" + appV2 "github.com/celestiaorg/celestia-app/v2/app" + encodingV2 "github.com/celestiaorg/celestia-app/v2/app/encoding" + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) -func GetApps() []types.Application { - v1 := NewAppV1() - v2 := NewAppV2() - return []types.Application{v1, v2} +func GetApplications() map[uint64]types.Application { + return map[uint64]types.Application{ + v1.Version: NewAppV1(), + v2.Version: NewAppV2(), + } } -func NewAppV1() *v1.App { +func NewAppV1() *appV1.App { logger := log.NewNopLogger() db := tmdb.NewMemDB() traceStore := &NoopWriter{} @@ -24,20 +27,18 @@ func NewAppV1() *v1.App { skipUpgradeHeights := make(map[int64]bool) homePath := "" invCheckPeriod := uint(1) - encodingConfig := v1encoding.MakeConfig(v1.ModuleEncodingRegisters...) + encodingConfig := encodingV1.MakeConfig(appV1.ModuleEncodingRegisters...) appOptions := NoopAppOptions{} - - return v1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) + return appV1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) } -func NewAppV2() *v2.App { +func NewAppV2() *appV2.App { logger := log.NewNopLogger() db := tmdb.NewMemDB() traceStore := &NoopWriter{} invCheckPeriod := uint(1) - encodingConfig := v2encoding.MakeConfig(v2.ModuleEncodingRegisters...) + encodingConfig := encodingV2.MakeConfig(appV2.ModuleEncodingRegisters...) upgradeHeight := int64(0) appOptions := NoopAppOptions{} - - return v2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) + return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) } diff --git a/node/utils/apps_test.go b/node/utils/apps_test.go index dde024ae0b..9c82f84e9e 100644 --- a/node/utils/apps_test.go +++ b/node/utils/apps_test.go @@ -7,6 +7,6 @@ import ( ) func TestGetApps(t *testing.T) { - got := GetApps() + got := GetApplications() assert.Len(t, got, 2) } diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 1f37b1528d..07c72b943b 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -26,9 +26,11 @@ type Multiplexer struct { nextAppVersion uint64 } -func NewMultiplexer(apps map[uint64]abci.Application, currentAppVersion uint64) *Multiplexer { +func NewMultiplexer() *Multiplexer { + applications := GetApplications() + return &Multiplexer{ - applications: apps, + applications: applications, currentAppVersion: InitialAppVersion, nextAppVersion: InitialAppVersion, } From b64af994c2fb5273795e79864267089e45b99dc0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 14:56:42 -0400 Subject: [PATCH 063/140] refactor: unexport const --- node/utils/multiplexer.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 07c72b943b..f101c04576 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -7,7 +7,7 @@ import ( ) const ( - InitialAppVersion = 1 + initialAppVersion = 1 ) // TODO: modify v1 state machine to contain an upgrade height and have an EndBlocker that returns with ConsensusParamsUpdates app version 2 @@ -27,12 +27,10 @@ type Multiplexer struct { } func NewMultiplexer() *Multiplexer { - applications := GetApplications() - return &Multiplexer{ - applications: applications, - currentAppVersion: InitialAppVersion, - nextAppVersion: InitialAppVersion, + applications: GetApplications(), + currentAppVersion: initialAppVersion, + nextAppVersion: initialAppVersion, } } From 6438131bac369e32e09301bc15601930fcb48fcf Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 15:10:52 -0400 Subject: [PATCH 064/140] refactor: move test --- node/{cmd/root_test.go => utils/start_node_test.go} | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) rename node/{cmd/root_test.go => utils/start_node_test.go} (82%) diff --git a/node/cmd/root_test.go b/node/utils/start_node_test.go similarity index 82% rename from node/cmd/root_test.go rename to node/utils/start_node_test.go index 18b282fd8d..ddd6d65881 100644 --- a/node/cmd/root_test.go +++ b/node/utils/start_node_test.go @@ -1,4 +1,4 @@ -package cmd +package utils_test import ( "context" @@ -7,10 +7,11 @@ import ( "time" "github.com/celestiaorg/celestia-app/node/utils" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) -func TestRun(t *testing.T) { +func TestStartNode(t *testing.T) { multiplexer := utils.NewMultiplexer() config := utils.GetConfig() @@ -23,7 +24,7 @@ func TestRun(t *testing.T) { require.NoError(t, err) fmt.Printf("chainID %v\n", cctx.ChainID) - require.Eventually(t, func() bool { + assert.Eventually(t, func() bool { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) return latestHeight > 0 From 5a5d496bd0748dadf38fa8d96dd87398e56f040e Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 15:11:20 -0400 Subject: [PATCH 065/140] wip: attempt to use v1 app with hard-coded upgrade height --- node/go.mod | 10 ++++++---- node/go.sum | 6 ++---- node/utils/multiplexer.go | 2 ++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/node/go.mod b/node/go.mod index 0a88d36698..2ffd6b214f 100644 --- a/node/go.mod +++ b/node/go.mod @@ -4,10 +4,11 @@ go 1.22.4 require ( github.com/celestiaorg/celestia-app v1.13.0 - github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 + github.com/celestiaorg/celestia-app/v2 v2.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 + github.com/stretchr/testify v1.9.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 ) @@ -158,7 +159,6 @@ require ( github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -204,10 +204,12 @@ require ( ) replace ( - // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() - github.com/celestiaorg/celestia-app/v2 => ../ // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 + // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.21.0 + // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() + github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/go.sum b/node/go.sum index 514279d105..c5d66fdb0d 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,10 +311,6 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-app v1.13.0 h1:7MWEox6lim6WDyiP84Y2/ERfWUJxWPfZlKxzO6OFcig= -github.com/celestiaorg/celestia-app v1.13.0/go.mod h1:CF9VZwWAlTU0Is/BOsmxqkbkYnnmrgl0YRlSBIzr0m0= -github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4 h1:s+F8q10ir9D5DN0STZhdOKKauzXkt/HizkEOCDUoCXA= -github.com/celestiaorg/celestia-app/v2 v2.0.0-rc4/go.mod h1:t/balaAQzi5r/68uHqwEBPc9vofN9CDhtkp3cNEvo2w= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= @@ -1132,6 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rootulp/celestia-app v1.21.0 h1:Iwl7cHOwLhVE3pW/yq3ma59nwb1xFHkvIsGVBvPyiwE= +github.com/rootulp/celestia-app v1.21.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index f101c04576..2fe9b7d806 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -59,6 +59,7 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { got := app.Commit() if m.isUpgradePending() { + fmt.Printf("upgrade is pending from %v to %v", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion // TODO need to add RunMigrations to the abci.Application interface then uncomment: // app := m.getCurrentApp() @@ -84,6 +85,7 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) } m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion + fmt.Printf("end block with current app version %v returned new app version %v\n", m.currentAppVersion, got.ConsensusParamUpdates.Version.AppVersion) } return got } From 94b1220e78689b71cec7a1c29641091f620d0d30 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 15:21:19 -0400 Subject: [PATCH 066/140] failing test E[2024-08-09|15:20:58.543] CONSENSUS FAILURE!!! module=consensus err="UnmarshalJSON cannot decode empty bytes" stack="goroutine 244 [running]:\nruntime/debug.Stack()\n\t/Users/rootulp/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/debug/stack.go:24 +0x64\ngithub.com/tendermint/tendermint/consensus.(*State).receiveRoutine.func2()\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:748 +0x44\npanic({0x102919740?, 0x140011bd5c0?})\n\t/Users/rootulp/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/panic.go:770 +0x124\ngithub.com/cosmos/cosmos-sdk/x/params/types.Subspace.Get({{_, _}, _, {_, _}, {_, _}, {_, _, _}, ...}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.23.0-sdk-v0.46.16/x/params/types/subspace.go:110 +0x20c\ngithub.com/celestiaorg/celestia-app/v2/x/blob/keeper.Keeper.GovMaxSquareSize(...)\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app/x/blob/keeper/params.go:29\ngithub.com/celestiaorg/celestia-app/v2/app.(*App).MaxEffectiveSquareSize(_, {{0x102ccb850, 0x1040e3b20}, {0x102cddcc0, 0x140015deec0}, {{0x0, 0x0}, {0x14000439040, 0x6}, 0x2, ...}, ...})\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app/app/square_size.go:20 +0x1c4\ngithub.com/celestiaorg/celestia-app/v2/app.(*App).PrepareProposal(0x140014d5508, {0x140015ded80, 0x1e1cb6, {0x14000439040, 0x6}, 0x2, {0x1f0fa900, 0xede48631a, 0x0}})\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app/app/prepare_proposal.go:51 +0x344\ngithub.com/celestiaorg/celestia-app/node/utils.(*Multiplexer).PrepareProposal(0x140015a3008?, {0x140015ded80, 0x1e1cb6, {0x14000439040, 0x6}, 0x2, {0x1f0fa900, 0xede48631a, 0x0}})\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app/node/utils/multiplexer.go:121 +0x80\ngithub.com/tendermint/tendermint/abci/client.(*localClient).PrepareProposalSync(0x14001179aa0, {0x140015ded80, 0x1e1cb6, {0x14000439040, 0x6}, 0x2, {0x1f0fa900, 0xede48631a, 0x0}})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/abci/client/local_client.go:359 +0x148\ngithub.com/tendermint/tendermint/proxy.(*appConnConsensus).PrepareProposalSync(0x1400131f180?, {0x140015ded80, 0x1e1cb6, {0x14000439040, 0x6}, 0x2, {0x1f0fa900, 0xede48631a, 0x0}})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/proxy/app_conn.go:102 +0x58\ngithub.com/tendermint/tendermint/state.(*BlockExecutor).CreateProposalBlock(_, _, {{{0xb, 0x2}, {0x14000439018, 0x7}}, {0x14000439040, 0x6}, 0x1, 0x1, ...}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/state/execution.go:128 +0x22c\ngithub.com/tendermint/tendermint/consensus.(*State).createProposalBlock(0x1400042ce08)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1252 +0x1fc\ngithub.com/tendermint/tendermint/consensus.(*State).defaultDecideProposal(0x1400042ce08, 0x2, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1166 +0xb0\ngithub.com/tendermint/tendermint/consensus.(*State).enterPropose(0x1400042ce08, 0x2, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1145 +0x794\ngithub.com/tendermint/tendermint/consensus.(*State).enterNewRound(0x1400042ce08, 0x2, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1064 +0x9a4\ngithub.com/tendermint/tendermint/consensus.(*State).handleTimeout(0x1400042ce08, {0xe23dc8e84eb4ee29?, 0x3b189764cbc94400?, 0x5f4578?, 0x40?}, {0x2, 0x0, 0x1, {0x1f6c3468, 0xede48631a, ...}, ...})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:933 +0x870\ngithub.com/tendermint/tendermint/consensus.(*State).receiveRoutine(0x1400042ce08, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:815 +0x4c4\ncreated by github.com/tendermint/tendermint/consensus.(*State).OnStart in goroutine 12\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:391 +0x110\n" --- node/utils/start_node_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index ddd6d65881..4c993e286b 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -27,6 +27,6 @@ func TestStartNode(t *testing.T) { assert.Eventually(t, func() bool { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) - return latestHeight > 0 + return latestHeight > 1 }, time.Second*10, time.Second) } From 90bc71fa660bb45856826fdbf5af8375c91e7155 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:14:08 -0400 Subject: [PATCH 067/140] chore: upgrade to fork that prints more logs --- node/go.mod | 2 +- node/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node/go.mod b/node/go.mod index 2ffd6b214f..2d590e3ef3 100644 --- a/node/go.mod +++ b/node/go.mod @@ -207,7 +207,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.21.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.22.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 diff --git a/node/go.sum b/node/go.sum index c5d66fdb0d..9b1ce5bb10 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.21.0 h1:Iwl7cHOwLhVE3pW/yq3ma59nwb1xFHkvIsGVBvPyiwE= -github.com/rootulp/celestia-app v1.21.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-app v1.22.0 h1:lmABO3WXa7LTSkkNzhvadFZdq4R04+vfEvrxqsRCSQ4= +github.com/rootulp/celestia-app v1.22.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= From 95d06c77bdbbdc8faf1a4419d294af52b55ce498 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:14:15 -0400 Subject: [PATCH 068/140] refactor: clean up rootDir --- node/cmd/root.go | 1 + 1 file changed, 1 insertion(+) diff --git a/node/cmd/root.go b/node/cmd/root.go index 5cc22c6bf0..4b29305e9b 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -28,6 +28,7 @@ var rootCmd = &cobra.Command{ if err != nil { return err } + defer os.RemoveAll(rootDir) cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, rootDir) defer cleanup() if err != nil { From 6a2ed91d9b72f6d15f3855ef9686fd60335e2424 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:26:31 -0400 Subject: [PATCH 069/140] premature upgrade InitChain invoked with current app version 1 chainID Z55LgT latestHeight 0 EndBlock height 1 invoked with current app version 1 EndBlock height 1 with current app version 1 returned new app version 2 upgrade is pending from 1 to 2 --- app/square_size.go | 3 +++ node/utils/config.go | 2 +- node/utils/multiplexer.go | 6 ++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/square_size.go b/app/square_size.go index b09e49688a..2d30ff9db0 100644 --- a/app/square_size.go +++ b/app/square_size.go @@ -1,6 +1,8 @@ package app import ( + "fmt" + "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -16,6 +18,7 @@ func (app *App) MaxEffectiveSquareSize(ctx sdk.Context) int { if ctx.BlockHeader().Height <= 1 { return int(appconsts.DefaultGovMaxSquareSize) } + fmt.Printf("foo") govMax := int(app.BlobKeeper.GovMaxSquareSize(ctx)) hardMax := appconsts.SquareSizeUpperBound(app.AppVersion()) diff --git a/node/utils/config.go b/node/utils/config.go index 37f0787b6a..c72e66f1dd 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -4,7 +4,7 @@ import "github.com/celestiaorg/celestia-app/v2/test/util/testnode" func GetConfig() *testnode.Config { tmConfig := testnode.DefaultTendermintConfig() - tmConfig.LogLevel = "info" + tmConfig.LogLevel = "error" tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 2fe9b7d806..d21b591d4a 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -59,7 +59,7 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { got := app.Commit() if m.isUpgradePending() { - fmt.Printf("upgrade is pending from %v to %v", m.currentAppVersion, m.nextAppVersion) + fmt.Printf("upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion // TODO need to add RunMigrations to the abci.Application interface then uncomment: // app := m.getCurrentApp() @@ -76,6 +76,7 @@ func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeli } func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { + fmt.Printf("EndBlock height %v invoked with current app version %v\n", request.Height, m.currentAppVersion) // Note: the application can't create or delete stores in this method // because it is operating on a branch of state. app := m.getCurrentApp() @@ -85,7 +86,7 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) } m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion - fmt.Printf("end block with current app version %v returned new app version %v\n", m.currentAppVersion, got.ConsensusParamUpdates.Version.AppVersion) + fmt.Printf("EndBlock height %v with current app version %v returned new app version %v\n", request.Height, m.currentAppVersion, got.ConsensusParamUpdates.Version.AppVersion) } return got } @@ -97,6 +98,7 @@ func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { // TODO consider getting app version from request.ConsensusParams.Version.AppVersion + fmt.Printf("InitChain invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() return app.InitChain(request) } From dad7391e956069fd74d4de553de6fe1261f3346c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:31:14 -0400 Subject: [PATCH 070/140] these logs helped InitChain invoked with current app version 1 chainID Kj3se3 latestHeight 0 EndBlock height 1 invoked with current app version 1 EndBlocker invoked on state machine v1 with req.Height 1 E[2024-08-09|16:33:51.088] CONSENSUS FAILURE!!! module=consensus err="runtime error: invalid memory address or nil pointer dereference" stack="goroutine 207 [running]:\nruntime/debug.Stack()\n\t/Users/rootulp/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/debug/stack.go:24 +0x64\ngithub.com/tendermint/tendermint/consensus.(*State).receiveRoutine.func2()\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:748 +0x44\npanic({0x1032b1080?, 0x10488e510?})\n\t/Users/rootulp/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.4.darwin-arm64/src/runtime/panic.go:770 +0x124\ngithub.com/celestiaorg/celestia-app/app.(*App).EndBlocker(_, {{0x103616400, 0x104a07460}, {0x103628800, 0x140015e54c0}, {{0xb, 0x2}, {0x14000880540, 0x6}, 0x1, ...}, ...}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.24.0/app/app.go:576 +0x188\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).EndBlock(0x140003034a0, {0x1035898a0?})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.23.0-sdk-v0.46.16/baseapp/abci.go:214 +0xfc\ngithub.com/celestiaorg/celestia-app/node/utils.(*Multiplexer).EndBlock(0x1400019cdc8, {0x20?})\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app/node/utils/multiplexer.go:83 +0xe0\ngithub.com/tendermint/tendermint/abci/client.(*localClient).EndBlockSync(0x140012c2f60, {0x1022b9dac?})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/abci/client/local_client.go:314 +0xec\ngithub.com/tendermint/tendermint/proxy.(*appConnConsensus).EndBlockSync(0x140005f3d00?, {0x20?})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/proxy/app_conn.go:92 +0x28\ngithub.com/tendermint/tendermint/state.execBlockOnProxyApp({0x103616898, 0x1400015f700}, {0x103625700, 0x140016baa20}, 0x14001358000, {0x103628c98, 0x1400178c0c0}, 0x1)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/state/execution.go:426 +0x5bc\ngithub.com/tendermint/tendermint/state.(*BlockExecutor).ApplyBlock(_, {{{0xb, 0x2}, {0x140017bad50, 0x7}}, {0x140017bad58, 0x6}, 0x1, 0x0, {{0x0, ...}, ...}, ...}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/state/execution.go:224 +0x12c\ngithub.com/tendermint/tendermint/consensus.(*State).finalizeCommit(0x14000313188, 0x1)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1710 +0x974\ngithub.com/tendermint/tendermint/consensus.(*State).tryFinalizeCommit(0x14000313188, 0x1)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1616 +0x26c\ngithub.com/tendermint/tendermint/consensus.(*State).enterCommit.func1()\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1551 +0x8c\ngithub.com/tendermint/tendermint/consensus.(*State).enterCommit(0x14000313188, 0x1, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:1589 +0xac4\ngithub.com/tendermint/tendermint/consensus.(*State).addVote(0x14000313188, 0x14001549c20, {0x0, 0x0})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:2229 +0x13c8\ngithub.com/tendermint/tendermint/consensus.(*State).tryAddVote(0x14000313188, 0x14001549c20, {0x0?, 0x100cbc2f0?})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:2021 +0x28\ngithub.com/tendermint/tendermint/consensus.(*State).handleMsg(0x14000313188, {{0x1035f4d80, 0x14000166e48}, {0x0, 0x0}})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:879 +0x110\ngithub.com/tendermint/tendermint/consensus.(*State).receiveRoutine(0x14000313188, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:806 +0x380\ncreated by github.com/tendermint/tendermint/consensus.(*State).OnStart in goroutine 1\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.38.0-tm-v0.34.29/consensus/state.go:391 +0x110\n" --- node/go.mod | 2 +- node/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node/go.mod b/node/go.mod index 2d590e3ef3..2f5c442ee0 100644 --- a/node/go.mod +++ b/node/go.mod @@ -207,7 +207,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.22.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.24.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 diff --git a/node/go.sum b/node/go.sum index 9b1ce5bb10..16b86b07ae 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.22.0 h1:lmABO3WXa7LTSkkNzhvadFZdq4R04+vfEvrxqsRCSQ4= -github.com/rootulp/celestia-app v1.22.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-app v1.24.0 h1:ZNL4ev0zVx470YC/UDC/m2hyY+jpA1CGtjqmWCNOVbI= +github.com/rootulp/celestia-app v1.24.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= From 094c8e2da313b22e60035511250e2b7df5954bf4 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:38:49 -0400 Subject: [PATCH 071/140] check for nil --- node/utils/multiplexer.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index d21b591d4a..7b2246d0bb 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -81,7 +81,9 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo // because it is operating on a branch of state. app := m.getCurrentApp() got := app.EndBlock(request) - if m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { + if got.ConsensusParamUpdates != nil && + got.ConsensusParamUpdates.Version != nil && + m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { if _, ok := m.applications[m.nextAppVersion]; !ok { panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) } From 8dd82591edc5f86553b807d8887a5958e3995827 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:48:59 -0400 Subject: [PATCH 072/140] more logs --- node/go.mod | 2 +- node/go.sum | 4 ++-- node/utils/multiplexer.go | 19 +++++++++++-------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/node/go.mod b/node/go.mod index 2f5c442ee0..89c83c8bfa 100644 --- a/node/go.mod +++ b/node/go.mod @@ -207,7 +207,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.24.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.25.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 diff --git a/node/go.sum b/node/go.sum index 16b86b07ae..054abc8fee 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.24.0 h1:ZNL4ev0zVx470YC/UDC/m2hyY+jpA1CGtjqmWCNOVbI= -github.com/rootulp/celestia-app v1.24.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-app v1.25.0 h1:X3hCk+lk1ysHQWsqo4TRHyQOg0iuVlQsyj0FvuWwu8A= +github.com/rootulp/celestia-app v1.25.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 7b2246d0bb..a8d273f980 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -3,11 +3,12 @@ package utils import ( "fmt" + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" abci "github.com/tendermint/tendermint/abci/types" ) const ( - initialAppVersion = 1 + initialAppVersion = v1.Version ) // TODO: modify v1 state machine to contain an upgrade height and have an EndBlocker that returns with ConsensusParamsUpdates app version 2 @@ -81,14 +82,16 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo // because it is operating on a branch of state. app := m.getCurrentApp() got := app.EndBlock(request) - if got.ConsensusParamUpdates != nil && - got.ConsensusParamUpdates.Version != nil && - m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { - if _, ok := m.applications[m.nextAppVersion]; !ok { - panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) + if got.ConsensusParamUpdates != nil && got.ConsensusParamUpdates.Version != nil { + fmt.Printf("EndBlock height %v with current app version %v next app version %v returned app version %v\n", request.Height, m.currentAppVersion, m.nextAppVersion, got.ConsensusParamUpdates.Version.AppVersion) + if m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { + if _, ok := m.applications[got.ConsensusParamUpdates.Version.AppVersion]; !ok { + panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) + } + m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion } - m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion - fmt.Printf("EndBlock height %v with current app version %v returned new app version %v\n", request.Height, m.currentAppVersion, got.ConsensusParamUpdates.Version.AppVersion) + } else { + fmt.Printf("EndBlock height %v with current app version %v next app version %v returned nil app version\n", request.Height, m.currentAppVersion, m.nextAppVersion) } return got } From fab168bfe0e45b9271793a5acacc611aa56c3a9e Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 16:55:01 -0400 Subject: [PATCH 073/140] implement failing check --- node/utils/multiplexer.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index a8d273f980..5bfb6354e8 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -46,6 +46,10 @@ func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { app := m.getCurrentApp() + got := app.Info(abci.RequestInfo{}) + if got.AppVersion != m.currentAppVersion { + panic(fmt.Sprintf("current app version %v does not match app version from current app %v\n", m.currentAppVersion, got.AppVersion)) + } return app.BeginBlock(request) } From 92be05c5fe8408bf0aeec161caaab729c80c3df2 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 17:06:01 -0400 Subject: [PATCH 074/140] v1 state machine is initChained with v2 --- node/utils/multiplexer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 5bfb6354e8..148d17366a 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -107,7 +107,7 @@ func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { // TODO consider getting app version from request.ConsensusParams.Version.AppVersion - fmt.Printf("InitChain invoked with current app version %v\n", m.currentAppVersion) + fmt.Printf("InitChain invoked with current app version %v request %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion) app := m.getCurrentApp() return app.InitChain(request) } From 55a4c3d9d9691cf967f604ed980e4200520e224d Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 9 Aug 2024 17:10:46 -0400 Subject: [PATCH 075/140] fix: start v1 state machine with v1 consensus param --- node/utils/config.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/node/utils/config.go b/node/utils/config.go index c72e66f1dd..7295f71b27 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -1,6 +1,9 @@ package utils -import "github.com/celestiaorg/celestia-app/v2/test/util/testnode" +import ( + v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + "github.com/celestiaorg/celestia-app/v2/test/util/testnode" +) func GetConfig() *testnode.Config { tmConfig := testnode.DefaultTendermintConfig() @@ -8,5 +11,12 @@ func GetConfig() *testnode.Config { tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" - return testnode.DefaultConfig().WithTendermintConfig(tmConfig).WithSuppressLogs(false) + + consensusParams := testnode.DefaultConsensusParams() + consensusParams.Version.AppVersion = v1.Version + + return testnode.DefaultConfig(). + WithTendermintConfig(tmConfig). + WithConsensusParams(consensusParams). + WithSuppressLogs(false) } From 139bde429aed4901f52b7ccd105a4895bc7f1ee9 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 11:19:15 -0400 Subject: [PATCH 076/140] wip: cosmos-sdk is overwriting the consensus param updates --- node/go.mod | 2 +- node/go.sum | 4 ++-- node/utils/start_node_test.go | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/node/go.mod b/node/go.mod index 89c83c8bfa..241efc6b7c 100644 --- a/node/go.mod +++ b/node/go.mod @@ -207,7 +207,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.25.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.26.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 diff --git a/node/go.sum b/node/go.sum index 054abc8fee..d73f42b7ab 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.25.0 h1:X3hCk+lk1ysHQWsqo4TRHyQOg0iuVlQsyj0FvuWwu8A= -github.com/rootulp/celestia-app v1.25.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-app v1.26.0 h1:Q6MjTK8w5WqqCFByEqLlEdSngMylykIfIvOWcKqq27M= +github.com/rootulp/celestia-app v1.26.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index 4c993e286b..c53e21b840 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -27,6 +27,6 @@ func TestStartNode(t *testing.T) { assert.Eventually(t, func() bool { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) - return latestHeight > 1 - }, time.Second*10, time.Second) + return latestHeight > 5 + }, time.Second*60, time.Second) } From 548d4121460456ee9c183a99ae073398840a8943 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 11:54:01 -0400 Subject: [PATCH 077/140] v2 state machine does not have params param store does not have key [71 111 118 77 97 120 83 113 117 97 114 101 83 105 122 101] --- app/square_size.go | 3 ++- node/go.mod | 2 +- node/go.sum | 4 ++-- node/utils/multiplexer.go | 14 ++++++++------ x/blob/keeper/params.go | 7 +++++++ 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/square_size.go b/app/square_size.go index 2d30ff9db0..06a0bd0b4c 100644 --- a/app/square_size.go +++ b/app/square_size.go @@ -18,7 +18,8 @@ func (app *App) MaxEffectiveSquareSize(ctx sdk.Context) int { if ctx.BlockHeader().Height <= 1 { return int(appconsts.DefaultGovMaxSquareSize) } - fmt.Printf("foo") + + fmt.Printf("MaxEffectiveSquareSize invoked on app version %v\n", app.AppVersion()) govMax := int(app.BlobKeeper.GovMaxSquareSize(ctx)) hardMax := appconsts.SquareSizeUpperBound(app.AppVersion()) diff --git a/node/go.mod b/node/go.mod index 241efc6b7c..b1a418b161 100644 --- a/node/go.mod +++ b/node/go.mod @@ -207,7 +207,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.26.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.27.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 diff --git a/node/go.sum b/node/go.sum index d73f42b7ab..4c68f802eb 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.26.0 h1:Q6MjTK8w5WqqCFByEqLlEdSngMylykIfIvOWcKqq27M= -github.com/rootulp/celestia-app v1.26.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-app v1.27.0 h1:fF9gBJW0i9IpBPkrf8qro0wlO06RkQ1ZpLyWaA0ncoE= +github.com/rootulp/celestia-app v1.27.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 148d17366a..49c35fa18e 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -64,8 +64,9 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { got := app.Commit() if m.isUpgradePending() { - fmt.Printf("upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) + fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion + fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) // TODO need to add RunMigrations to the abci.Application interface then uncomment: // app := m.getCurrentApp() // appHash := app.RunMigrations() @@ -81,21 +82,21 @@ func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeli } func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { - fmt.Printf("EndBlock height %v invoked with current app version %v\n", request.Height, m.currentAppVersion) + fmt.Printf("Multiplexer EndBlock height %v invoked with current app version %v\n", request.Height, m.currentAppVersion) // Note: the application can't create or delete stores in this method // because it is operating on a branch of state. app := m.getCurrentApp() got := app.EndBlock(request) if got.ConsensusParamUpdates != nil && got.ConsensusParamUpdates.Version != nil { - fmt.Printf("EndBlock height %v with current app version %v next app version %v returned app version %v\n", request.Height, m.currentAppVersion, m.nextAppVersion, got.ConsensusParamUpdates.Version.AppVersion) + fmt.Printf("Multplexer EndBlock height %v with current app version %v next app version %v returned app version %v\n", request.Height, m.currentAppVersion, m.nextAppVersion, got.ConsensusParamUpdates.Version.AppVersion) if m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { if _, ok := m.applications[got.ConsensusParamUpdates.Version.AppVersion]; !ok { - panic(fmt.Sprintf("multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) + panic(fmt.Sprintf("Multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) } m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion } } else { - fmt.Printf("EndBlock height %v with current app version %v next app version %v returned nil app version\n", request.Height, m.currentAppVersion, m.nextAppVersion) + fmt.Printf("Multiplexer EndBlock height %v with current app version %v next app version %v returned nil app version\n", request.Height, m.currentAppVersion, m.nextAppVersion) } return got } @@ -107,7 +108,7 @@ func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { // TODO consider getting app version from request.ConsensusParams.Version.AppVersion - fmt.Printf("InitChain invoked with current app version %v request %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion) + fmt.Printf("Multiplexer InitChain invoked with current app version %v request %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion) app := m.getCurrentApp() return app.InitChain(request) } @@ -128,6 +129,7 @@ func (m *Multiplexer) OfferSnapshot(request abci.RequestOfferSnapshot) abci.Resp } func (m *Multiplexer) PrepareProposal(request abci.RequestPrepareProposal) abci.ResponsePrepareProposal { + fmt.Printf("Multiplexer PrepareProposal invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() return app.PrepareProposal(request) } diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index e4e4eee3c1..283ddae767 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -1,6 +1,8 @@ package keeper import ( + "fmt" + "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -26,6 +28,11 @@ func (k Keeper) GasPerBlobByte(ctx sdk.Context) (res uint32) { // GovMaxSquareSize returns the GovMaxSquareSize param func (k Keeper) GovMaxSquareSize(ctx sdk.Context) (res uint64) { + if k.paramStore.Has(ctx, types.KeyGovMaxSquareSize) { + fmt.Printf("param store has key %v\n", types.KeyGovMaxSquareSize) + } else { + fmt.Printf("param store does not have key %v\n", types.KeyGovMaxSquareSize) + } k.paramStore.Get(ctx, types.KeyGovMaxSquareSize, &res) return res } From 53e5592ae49c834db50ac1548d8f337cfcbe9c15 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 12:48:27 -0400 Subject: [PATCH 078/140] wip: RunMigrations interface --- app/app.go | 4 ++++ node/utils/apps.go | 7 +++++-- node/utils/interface.go | 18 ++++++++++++++++++ node/utils/multiplexer.go | 1 + 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 node/utils/interface.go diff --git a/app/app.go b/app/app.go index 0c0decfd0a..0be8bfedd1 100644 --- a/app/app.go +++ b/app/app.go @@ -534,6 +534,10 @@ func (app *App) Info(req abci.RequestInfo) abci.ResponseInfo { return resp } +func (app *App) RunMigrations() { + app.mountKeysAndInit(v2) +} + // InitChain implements the ABCI interface. This method is a wrapper around // baseapp's InitChain so we can take the app version and setup the multicommit // store. diff --git a/node/utils/apps.go b/node/utils/apps.go index feca708a1c..5c67968271 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -12,6 +12,10 @@ import ( tmdb "github.com/tendermint/tm-db" ) +const ( + upgradeHeightV1ToV2 = int64(3) +) + func GetApplications() map[uint64]types.Application { return map[uint64]types.Application{ v1.Version: NewAppV1(), @@ -38,7 +42,6 @@ func NewAppV2() *appV2.App { traceStore := &NoopWriter{} invCheckPeriod := uint(1) encodingConfig := encodingV2.MakeConfig(appV2.ModuleEncodingRegisters...) - upgradeHeight := int64(0) appOptions := NoopAppOptions{} - return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) + return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV1ToV2, appOptions) } diff --git a/node/utils/interface.go b/node/utils/interface.go new file mode 100644 index 0000000000..7d6a59e0af --- /dev/null +++ b/node/utils/interface.go @@ -0,0 +1,18 @@ +package utils + +import abci "github.com/tendermint/tendermint/abci/types" + +// ApplicationWithMigrations extends the abci.Application interface with a method to run migrations. +type ApplicationWithMigrations interface { + abci.Application + + // RunMigrations should be invoked when the app version has increased and + // the current app needs to migrate state from the previous app. + RunMigrations(RequestRunMigrations) ResponseRunMigrations +} + +type RequestRunMigrations struct{} + +type ResponseRunMigrations struct { + DataRoot []byte +} diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 49c35fa18e..2d36036a63 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -67,6 +67,7 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) + // TODO need to add RunMigrations to the abci.Application interface then uncomment: // app := m.getCurrentApp() // appHash := app.RunMigrations() From 3fbef6acbcc8a7c3d7ba1636dabe21c8e666410d Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 13:27:46 -0400 Subject: [PATCH 079/140] wip: RunMigrations --- app/app.go | 5 ++++- go.mod | 6 ++++-- go.sum | 4 ++-- node/go.mod | 7 +++++-- node/go.sum | 4 ++-- node/utils/interface.go | 18 ------------------ node/utils/multiplexer.go | 15 +++++++++------ 7 files changed, 26 insertions(+), 33 deletions(-) delete mode 100644 node/utils/interface.go diff --git a/app/app.go b/app/app.go index 0be8bfedd1..fa35cc72e8 100644 --- a/app/app.go +++ b/app/app.go @@ -534,8 +534,11 @@ func (app *App) Info(req abci.RequestInfo) abci.ResponseInfo { return resp } -func (app *App) RunMigrations() { +func (app *App) RunMigrations(abci.RequestRunMigrations) abci.ResponseRunMigrations { app.mountKeysAndInit(v2) + return abci.ResponseRunMigrations{ + AppHash: []byte{}, + } } // InitChain implements the ABCI interface. This method is a wrapper around diff --git a/go.mod b/go.mod index ee75956951..5eececdde7 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/celestiaorg/celestia-app/v2 -go 1.22.4 +go 1.22.5 + +toolchain go1.22.6 require ( cosmossdk.io/errors v1.0.1 @@ -253,5 +255,5 @@ replace ( github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 + github.com/tendermint/tendermint => github.com/rootulp/celestia-core v1.0.0 ) diff --git a/go.sum b/go.sum index 42ba33e2ce..dd4436d482 100644 --- a/go.sum +++ b/go.sum @@ -318,8 +318,6 @@ github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7 h1:nxplQi8w github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7/go.mod h1:1EF5MfOxVf0WC51Gb7pJ6bcZxnXKNAf9pqWtjgPBAYc= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= @@ -1193,6 +1191,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= +github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= diff --git a/node/go.mod b/node/go.mod index b1a418b161..f4b1848612 100644 --- a/node/go.mod +++ b/node/go.mod @@ -1,6 +1,8 @@ module github.com/celestiaorg/celestia-app/node -go 1.22.4 +go 1.22.5 + +toolchain go1.22.6 require ( github.com/celestiaorg/celestia-app v1.13.0 @@ -216,5 +218,6 @@ replace ( github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 + // replace tendermint with fork that has RunMigrations on abci.Application + github.com/tendermint/tendermint => github.com/rootulp/celestia-core v1.0.0 ) diff --git a/node/go.sum b/node/go.sum index 4c68f802eb..648c5e53b0 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,8 +311,6 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= -github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= @@ -1130,6 +1128,8 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rootulp/celestia-app v1.27.0 h1:fF9gBJW0i9IpBPkrf8qro0wlO06RkQ1ZpLyWaA0ncoE= github.com/rootulp/celestia-app v1.27.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= +github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/interface.go b/node/utils/interface.go deleted file mode 100644 index 7d6a59e0af..0000000000 --- a/node/utils/interface.go +++ /dev/null @@ -1,18 +0,0 @@ -package utils - -import abci "github.com/tendermint/tendermint/abci/types" - -// ApplicationWithMigrations extends the abci.Application interface with a method to run migrations. -type ApplicationWithMigrations interface { - abci.Application - - // RunMigrations should be invoked when the app version has increased and - // the current app needs to migrate state from the previous app. - RunMigrations(RequestRunMigrations) ResponseRunMigrations -} - -type RequestRunMigrations struct{} - -type ResponseRunMigrations struct { - DataRoot []byte -} diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 2d36036a63..df286a1646 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -67,11 +67,8 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - - // TODO need to add RunMigrations to the abci.Application interface then uncomment: - // app := m.getCurrentApp() - // appHash := app.RunMigrations() - // got.Data = appHash + result := m.RunMigrations(abci.RequestRunMigrations{}) + got.Data = result.AppHash return got } return got @@ -89,7 +86,7 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo app := m.getCurrentApp() got := app.EndBlock(request) if got.ConsensusParamUpdates != nil && got.ConsensusParamUpdates.Version != nil { - fmt.Printf("Multplexer EndBlock height %v with current app version %v next app version %v returned app version %v\n", request.Height, m.currentAppVersion, m.nextAppVersion, got.ConsensusParamUpdates.Version.AppVersion) + fmt.Printf("Multiplexer EndBlock height %v with current app version %v next app version %v returned app version %v\n", request.Height, m.currentAppVersion, m.nextAppVersion, got.ConsensusParamUpdates.Version.AppVersion) if m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { if _, ok := m.applications[got.ConsensusParamUpdates.Version.AppVersion]; !ok { panic(fmt.Sprintf("Multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) @@ -153,3 +150,9 @@ func (m *Multiplexer) SetOption(request abci.RequestSetOption) abci.ResponseSetO func (m *Multiplexer) isUpgradePending() bool { return m.currentAppVersion != m.nextAppVersion } + +func (m *Multiplexer) RunMigrations(request abci.RequestRunMigrations) abci.ResponseRunMigrations { + fmt.Printf("Multiplexer RunMigrations invoked with current app version %v\n", m.currentAppVersion) + app := m.getCurrentApp() + return app.RunMigrations(request) +} From 9917b0aa8a69a972036f5974d3f5f754f380e177 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 13:44:26 -0400 Subject: [PATCH 080/140] bump to latest v1.x celestia-app that uses cosmos-sdk fork with RunMigrations implemented --- node/go.mod | 2 +- node/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node/go.mod b/node/go.mod index f4b1848612..b3a44b78db 100644 --- a/node/go.mod +++ b/node/go.mod @@ -209,7 +209,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.27.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.30.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 diff --git a/node/go.sum b/node/go.sum index 648c5e53b0..cf4f1c8ae0 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1126,8 +1126,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.27.0 h1:fF9gBJW0i9IpBPkrf8qro0wlO06RkQ1ZpLyWaA0ncoE= -github.com/rootulp/celestia-app v1.27.0/go.mod h1:OPkbzIvBUGwTvfunQ/uh7qEekjkix59kB0CsK8+i6uM= +github.com/rootulp/celestia-app v1.30.0 h1:i5WHH3G3dyqPnoXKrEJpaLclETUI/E9FEwOlnCvmwis= +github.com/rootulp/celestia-app v1.30.0/go.mod h1:UzLZBKoLurauzlsvjy7Iq+8qa7bbgLe4Xmcfx3NpzLI= github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= From 6c9fbcc492e078cd89b9fd374db1224ecea88452 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 13:47:26 -0400 Subject: [PATCH 081/140] crazy error for go imports $ make build-node --> Building celestia-app/node and outputting binary to build/node /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/encoding/encoding.go:4:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/encoding/encoding.go:5:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/codec (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/encoding/encoding.go:6:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/codec/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/encoding/encoding.go:7:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/std (imported by github.com/celestiaorg/celestia-app/app/encoding); to add: go get github.com/celestiaorg/celestia-app/app/encoding@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/encoding/index_wrapper_decoder.go:4:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/encoding/encoding.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/tx (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/test_util.go:6:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/hd (imported by github.com/celestiaorg/celestia-app/v2/test/util/genesis); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/genesis@v2.0.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/builder.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/keyring (imported by github.com/celestiaorg/celestia-app/v2/test/util/genesis); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/genesis@v2.0.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/codec.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/msgservice (imported by github.com/celestiaorg/celestia-app/x/blob/types); to add: go get github.com/celestiaorg/celestia-app/x/blob/types@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/query.pb.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/query (imported by github.com/celestiaorg/celestia-app/x/blob/types); to add: go get github.com/celestiaorg/celestia-app/x/blob/types@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/builder.go:11:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/tx (imported by github.com/celestiaorg/celestia-app/x/blob); to add: go get github.com/celestiaorg/celestia-app/x/blob@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/builder.go:12:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/tx/signing (imported by github.com/celestiaorg/celestia-app/x/blob/types); to add: go get github.com/celestiaorg/celestia-app/x/blob/types@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/payforblob.go:14:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/migrations/legacytx (imported by github.com/celestiaorg/celestia-app/x/blob/types); to add: go get github.com/celestiaorg/celestia-app/x/blob/types@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/builder.go:13:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/signing (imported by github.com/celestiaorg/celestia-app/app/ante); to add: go get github.com/celestiaorg/celestia-app/app/ante@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/builder.go:14:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/types/params.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/params/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/ante/ante.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/errors (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/keeper/keeper.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/store/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/ante/ante.go:7:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/ante (imported by github.com/celestiaorg/celestia-app/app/ante); to add: go get github.com/celestiaorg/celestia-app/app/ante@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/ante/gov.go:6:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/ante/gov.go:7:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov/types/v1 (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/types/codec.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1 (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/types/expected_keepers.go:7:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/staking/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/types/client.pb.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/upgrade/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/exported/expected_keepers.go:5:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/capability/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/keeper/msg_server.go:7:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/telemetry (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/keeper/keeper.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/capability/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/keeper/grpc_query.go:10:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/store/prefix (imported by github.com/cosmos/ibc-go/v6/modules/apps/transfer/keeper); to add: go get github.com/cosmos/ibc-go/v6/modules/apps/transfer/keeper@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/legacy/v100/solomachine.go:7:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/types (imported by github.com/celestiaorg/celestia-app/v2/test/util/genesis); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/genesis@v2.0.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/light-clients/06-solomachine/types/proof.go:6:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/types/multisig (imported by github.com/cosmos/ibc-go/v6/testing); to add: go get github.com/cosmos/ibc-go/v6/testing@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/client/cli/query.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client/flags (imported by github.com/celestiaorg/celestia-app/node/utils); to add: go get github.com/celestiaorg/celestia-app/node/utils /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/client/cli/tx.go:10:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client/tx (imported by github.com/celestiaorg/celestia-app/v2/test/util/genesis); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/genesis@v2.0.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/client/cli/query.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/version (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/core/02-client/client/cli/tx.go:14:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov/client/cli (imported by github.com/cosmos/ibc-go/v6/modules/core/02-client/client/cli); to add: go get github.com/cosmos/ibc-go/v6/modules/core/02-client/client/cli@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/test/util/testfactory/utils.go:10:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/simapp (imported by github.com/celestiaorg/celestia-app/v2/test/util/testnode); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/testnode@v2.0.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/test/util/testfactory/utils.go:13:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/bank/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/client/cli/payforblob.go:17:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client/input (imported by github.com/celestiaorg/celestia-app/x/blob/client/cli); to add: go get github.com/celestiaorg/celestia-app/x/blob/client/cli@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/blob/module.go:21:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/module (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/mint/simulation/decoder.go:9:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/kv (imported by github.com/celestiaorg/celestia-app/x/mint/simulation); to add: go get github.com/celestiaorg/celestia-app/x/mint/simulation@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/mint/module.go:21:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/simulation (imported by github.com/celestiaorg/celestia-app/x/mint); to add: go get github.com/celestiaorg/celestia-app/x/mint@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/paramfilter/gov_handler.go:10:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/params/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/x/paramfilter/gov_handler.go:11:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/params/types/proposal (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/apps/transfer/types/codec.go:10:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/authz (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:12:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/baseapp (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:14:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client/grpc/node (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:15:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client/grpc/tmservice (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:18:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/server/api (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:19:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/server/config (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:20:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/server/types (imported by github.com/celestiaorg/celestia-app/node/utils); to add: go get github.com/celestiaorg/celestia-app/node/utils /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:25:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:26:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:27:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/posthandler (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:30:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/vesting (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:31:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/vesting/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:33:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/authz/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:34:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/authz/module (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:35:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/bank (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:36:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/bank/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:38:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/capability (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:41:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/crisis (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:42:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/crisis/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:43:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/crisis/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:44:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/distribution (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/default_overrides.go:20:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/distribution/client (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:45:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/distribution/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:46:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/distribution/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:47:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/evidence (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:48:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/evidence/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:49:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/evidence/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:50:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/feegrant (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:51:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/feegrant/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:52:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/feegrant/module (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:53:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/genutil (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:54:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/genutil/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:55:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/default_overrides.go:23:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov/client (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:56:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/gov/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:60:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/params (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/default_overrides.go:25:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/params/client (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:64:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/slashing (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:65:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/slashing/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:66:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/slashing/types (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:67:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/staking (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:68:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/staking/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/rootulp/celestia-app@v1.30.0/app/app.go:70:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/upgrade/keeper (imported by github.com/celestiaorg/celestia-app/app); to add: go get github.com/celestiaorg/celestia-app/app@v1.13.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/modules/apps/transfer/simulation/params.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/simulation (imported by github.com/cosmos/ibc-go/v6/modules/apps/transfer/simulation); to add: go get github.com/cosmos/ibc-go/v6/modules/apps/transfer/simulation@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6@v6.1.2/packetforward/ibc_middleware.go:16:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/types/address (imported by github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6/packetforward); to add: go get github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6/packetforward@v6.1.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/app.go:13:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/codec (imported by github.com/celestiaorg/celestia-app/v2/test/util/genesis); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/genesis@v2.0.0 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/solomachine.go:8:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/keys/multisig (imported by github.com/cosmos/ibc-go/v6/testing); to add: go get github.com/cosmos/ibc-go/v6/testing@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/chain.go:10:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1 (imported by github.com/cosmos/ibc-go/v6/testing); to add: go get github.com/cosmos/ibc-go/v6/testing@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/chain.go:18:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/staking/teststaking (imported by github.com/cosmos/ibc-go/v6/testing); to add: go get github.com/cosmos/ibc-go/v6/testing@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/mock/privval.go:5:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/crypto/keys/ed25519 (imported by github.com/cosmos/ibc-go/v6/testing/mock); to add: go get github.com/cosmos/ibc-go/v6/testing/mock@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:12:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/client/docs/statik (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:20:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/testutil/testdata (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:27:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/auth/simulation (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:62:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/group (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:63:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/group/keeper (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:64:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/group/module (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:65:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/mint (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:66:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/mint/keeper (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:67:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/mint/types (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:79:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/upgrade (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 /Users/rootulp/go/pkg/mod/github.com/cosmos/ibc-go/v6@v6.2.2/testing/simapp/app.go:80:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/x/upgrade/client (imported by github.com/cosmos/ibc-go/v6/testing/simapp); to add: go get github.com/cosmos/ibc-go/v6/testing/simapp@v6.2.2 ../test/util/testnode/app_options.go:4:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/pruning/types (imported by github.com/celestiaorg/celestia-app/v2/test/util/testnode); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/testnode@v2.0.0 ../test/util/testnode/app_options.go:5:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/server (imported by github.com/celestiaorg/celestia-app/v2/test/util/testnode); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/testnode@v2.0.0 ../test/util/testnode/rpc_client.go:11:2: missing go.sum entry for module providing package github.com/cosmos/cosmos-sdk/server/grpc (imported by github.com/celestiaorg/celestia-app/v2/test/util/testnode); to add: go get github.com/celestiaorg/celestia-app/v2/test/util/testnode@v2.0.0 make: *** [build-node] Error 1 --- go.mod | 2 +- go.sum | 4 ++-- node/go.mod | 2 +- node/go.sum | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5eececdde7..4c58598849 100644 --- a/go.mod +++ b/go.mod @@ -249,7 +249,7 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 + github.com/cosmos/cosmos-sdk => github.com/rootulp/cosmos-sdk v1.1.0 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 diff --git a/go.sum b/go.sum index dd4436d482..d20c23a14f 100644 --- a/go.sum +++ b/go.sum @@ -318,8 +318,6 @@ github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7 h1:nxplQi8w github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7/go.mod h1:1EF5MfOxVf0WC51Gb7pJ6bcZxnXKNAf9pqWtjgPBAYc= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= @@ -1193,6 +1191,8 @@ github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjR github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= +github.com/rootulp/cosmos-sdk v1.1.0 h1:WeIJtsC4o1ayZmYFwGtP6uQKkgoCpyWFh625v+xohsY= +github.com/rootulp/cosmos-sdk v1.1.0/go.mod h1:XVADIJVLDglWUvkPAI+omqA/sU1SPOmBNPJxHGv46WQ= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= diff --git a/node/go.mod b/node/go.mod index b3a44b78db..fdabfb709d 100644 --- a/node/go.mod +++ b/node/go.mod @@ -212,7 +212,7 @@ replace ( github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.30.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 + github.com/cosmos/cosmos-sdk => github.com/rootulp/cosmos-sdk v1.1.0 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 diff --git a/node/go.sum b/node/go.sum index cf4f1c8ae0..096dbe8318 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,8 +311,6 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= -github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= @@ -1130,6 +1128,8 @@ github.com/rootulp/celestia-app v1.30.0 h1:i5WHH3G3dyqPnoXKrEJpaLclETUI/E9FEwOln github.com/rootulp/celestia-app v1.30.0/go.mod h1:UzLZBKoLurauzlsvjy7Iq+8qa7bbgLe4Xmcfx3NpzLI= github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= +github.com/rootulp/cosmos-sdk v1.0.0 h1:NHt/+s/q6NdVErCmXzDkXLXdCYG3fp/8D4jIFJ55oR0= +github.com/rootulp/cosmos-sdk v1.0.0/go.mod h1:DMscoBVUi36KKSBPsAulOqgv69KJYESbwOp0c4MqcLs= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= From 61480ad4d9b2d14aedfcfd7135826c9265234e28 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 14:01:10 -0400 Subject: [PATCH 082/140] wip: try again with interface --- app/app.go | 6 ++---- go.mod | 4 ++-- go.sum | 8 ++++---- node/go.mod | 11 +++++++---- node/go.sum | 12 ++++++------ node/utils/apps.go | 5 ++--- node/utils/interface.go | 9 +++++++++ node/utils/multiplexer.go | 8 ++++++-- 8 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 node/utils/interface.go diff --git a/app/app.go b/app/app.go index fa35cc72e8..5fa1f0a831 100644 --- a/app/app.go +++ b/app/app.go @@ -534,11 +534,9 @@ func (app *App) Info(req abci.RequestInfo) abci.ResponseInfo { return resp } -func (app *App) RunMigrations(abci.RequestRunMigrations) abci.ResponseRunMigrations { +func (app *App) RunMigrations() []byte { app.mountKeysAndInit(v2) - return abci.ResponseRunMigrations{ - AppHash: []byte{}, - } + return []byte{} } // InitChain implements the ABCI interface. This method is a wrapper around diff --git a/go.mod b/go.mod index 4c58598849..4de1b0addc 100644 --- a/go.mod +++ b/go.mod @@ -249,11 +249,11 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/rootulp/cosmos-sdk v1.1.0 + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/rootulp/celestia-core v1.0.0 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 ) diff --git a/go.sum b/go.sum index d20c23a14f..5c59dd618e 100644 --- a/go.sum +++ b/go.sum @@ -318,6 +318,10 @@ github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7 h1:nxplQi8w github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7/go.mod h1:1EF5MfOxVf0WC51Gb7pJ6bcZxnXKNAf9pqWtjgPBAYc= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= +github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= +github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= @@ -1189,10 +1193,6 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= -github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= -github.com/rootulp/cosmos-sdk v1.1.0 h1:WeIJtsC4o1ayZmYFwGtP6uQKkgoCpyWFh625v+xohsY= -github.com/rootulp/cosmos-sdk v1.1.0/go.mod h1:XVADIJVLDglWUvkPAI+omqA/sU1SPOmBNPJxHGv46WQ= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= diff --git a/node/go.mod b/node/go.mod index fdabfb709d..862c758b8a 100644 --- a/node/go.mod +++ b/node/go.mod @@ -209,15 +209,18 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.30.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.31.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ - github.com/cosmos/cosmos-sdk => github.com/rootulp/cosmos-sdk v1.1.0 + + // -------------------------------------- + // --- Unmodified replace statements --- + // -------------------------------------- + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - // replace tendermint with fork that has RunMigrations on abci.Application - github.com/tendermint/tendermint => github.com/rootulp/celestia-core v1.0.0 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 ) diff --git a/node/go.sum b/node/go.sum index 096dbe8318..fa811263a7 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,6 +311,10 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= +github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= +github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= @@ -1124,12 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.30.0 h1:i5WHH3G3dyqPnoXKrEJpaLclETUI/E9FEwOlnCvmwis= -github.com/rootulp/celestia-app v1.30.0/go.mod h1:UzLZBKoLurauzlsvjy7Iq+8qa7bbgLe4Xmcfx3NpzLI= -github.com/rootulp/celestia-core v1.0.0 h1:PbFY+GdOuA8daZqgv/AntA6rRuUQjdITf1FMMuJ/v4U= -github.com/rootulp/celestia-core v1.0.0/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= -github.com/rootulp/cosmos-sdk v1.0.0 h1:NHt/+s/q6NdVErCmXzDkXLXdCYG3fp/8D4jIFJ55oR0= -github.com/rootulp/cosmos-sdk v1.0.0/go.mod h1:DMscoBVUi36KKSBPsAulOqgv69KJYESbwOp0c4MqcLs= +github.com/rootulp/celestia-app v1.31.0 h1:ZuNXJEHMOl1sNvlU+qXmZS1niMH9DsOqk5a2ryqMFCU= +github.com/rootulp/celestia-app v1.31.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/apps.go b/node/utils/apps.go index 5c67968271..2e992074d2 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -7,7 +7,6 @@ import ( encodingV2 "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - "github.com/tendermint/tendermint/abci/types" "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) @@ -16,8 +15,8 @@ const ( upgradeHeightV1ToV2 = int64(3) ) -func GetApplications() map[uint64]types.Application { - return map[uint64]types.Application{ +func GetApplications() map[uint64]AppWithMigrations { + return map[uint64]AppWithMigrations{ v1.Version: NewAppV1(), v2.Version: NewAppV2(), } diff --git a/node/utils/interface.go b/node/utils/interface.go new file mode 100644 index 0000000000..b54601673d --- /dev/null +++ b/node/utils/interface.go @@ -0,0 +1,9 @@ +package utils + +import abci "github.com/tendermint/tendermint/abci/types" + +type AppWithMigrations interface { + abci.Application + + RunMigrations() []byte +} diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index df286a1646..cb49c711f0 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -3,6 +3,7 @@ package utils import ( "fmt" + appv2 "github.com/celestiaorg/celestia-app/v2/app" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" abci "github.com/tendermint/tendermint/abci/types" ) @@ -67,7 +68,7 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - result := m.RunMigrations(abci.RequestRunMigrations{}) + result := m.RunMigrations(appv2.RequestRunMigrations{}) got.Data = result.AppHash return got } @@ -151,8 +152,11 @@ func (m *Multiplexer) isUpgradePending() bool { return m.currentAppVersion != m.nextAppVersion } -func (m *Multiplexer) RunMigrations(request abci.RequestRunMigrations) abci.ResponseRunMigrations { +func (m *Multiplexer) RunMigrations(request appv2.RequestRunMigrations) appv2.ResponseRunMigrations { fmt.Printf("Multiplexer RunMigrations invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() + if app, ok := app.(appv2.App); ok { + return app.RunMigrations(request) + } return app.RunMigrations(request) } From 8ebabb7a749a6b32058ed3dd1324c003f337ed1b Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 14:05:29 -0400 Subject: [PATCH 083/140] feat: RunMigrations --- node/go.mod | 2 +- node/go.sum | 4 ++-- node/utils/multiplexer.go | 16 ++++++---------- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/node/go.mod b/node/go.mod index 862c758b8a..1113fde291 100644 --- a/node/go.mod +++ b/node/go.mod @@ -209,7 +209,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.31.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.32.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ diff --git a/node/go.sum b/node/go.sum index fa811263a7..955a07ab49 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.31.0 h1:ZuNXJEHMOl1sNvlU+qXmZS1niMH9DsOqk5a2ryqMFCU= -github.com/rootulp/celestia-app v1.31.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= +github.com/rootulp/celestia-app v1.32.0 h1:S+oyMqom9oAktK/7kQp5FhnMktmFPdy8HelTBd6saXA= +github.com/rootulp/celestia-app v1.32.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index cb49c711f0..b3e3e7588b 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -3,7 +3,6 @@ package utils import ( "fmt" - appv2 "github.com/celestiaorg/celestia-app/v2/app" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" abci "github.com/tendermint/tendermint/abci/types" ) @@ -21,7 +20,7 @@ var _ abci.Application = (*Multiplexer)(nil) // Multiplexer is used to switch between different versions of the application. type Multiplexer struct { // applications is a map from appVersion to application - applications map[uint64]abci.Application + applications map[uint64]AppWithMigrations // currentAppVersion is the version of the application that is currently running currentAppVersion uint64 // nextAppVersion is the version of the application that should be upgraded to. Usually this value is the same as currentAppVersion except if the current height is an upgrade height. @@ -36,7 +35,7 @@ func NewMultiplexer() *Multiplexer { } } -func (m *Multiplexer) getCurrentApp() abci.Application { +func (m *Multiplexer) getCurrentApp() AppWithMigrations { return m.applications[m.currentAppVersion] } @@ -68,8 +67,8 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - result := m.RunMigrations(appv2.RequestRunMigrations{}) - got.Data = result.AppHash + appHash := m.RunMigrations() + got.Data = appHash return got } return got @@ -152,11 +151,8 @@ func (m *Multiplexer) isUpgradePending() bool { return m.currentAppVersion != m.nextAppVersion } -func (m *Multiplexer) RunMigrations(request appv2.RequestRunMigrations) appv2.ResponseRunMigrations { +func (m *Multiplexer) RunMigrations() []byte { fmt.Printf("Multiplexer RunMigrations invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - if app, ok := app.(appv2.App); ok { - return app.RunMigrations(request) - } - return app.RunMigrations(request) + return app.RunMigrations() } From 9a7c0fa60c1c72351023df75bb6bc1dce0d80358 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Sat, 10 Aug 2024 14:33:30 -0400 Subject: [PATCH 084/140] attempt to fix nil panic --- app/app.go | 5 +++++ node/utils/start_node_test.go | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 5fa1f0a831..66f754f6c9 100644 --- a/app/app.go +++ b/app/app.go @@ -536,6 +536,11 @@ func (app *App) Info(req abci.RequestInfo) abci.ResponseInfo { func (app *App) RunMigrations() []byte { app.mountKeysAndInit(v2) + // HACKHACK uses true because app.deliverState is nil which causes a panic + // if this is set to false. + isCheckTx := true + ctx := app.NewContext(isCheckTx, tmproto.Header{}) + app.manager.RunMigrations(ctx, app.configurator, v1, v2) return []byte{} } diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index c53e21b840..150ba1f49b 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -28,5 +28,5 @@ func TestStartNode(t *testing.T) { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) return latestHeight > 5 - }, time.Second*60, time.Second) + }, time.Second*10, time.Second) } From 3cc04176e1c6353188fc5dad47d352d8abe7b873 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 12 Aug 2024 10:15:13 -0400 Subject: [PATCH 085/140] add log --- x/blob/genesis.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/x/blob/genesis.go b/x/blob/genesis.go index 8076f9eb9b..4b38eaa9a3 100644 --- a/x/blob/genesis.go +++ b/x/blob/genesis.go @@ -1,6 +1,8 @@ package blob import ( + "fmt" + "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -9,6 +11,7 @@ import ( // InitGenesis initializes the capability module's state from a provided genesis // state. func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { + fmt.Printf("celestia-app v2 InitGenesis x/blob genState.Params %v\n", genState.Params) k.SetParams(ctx, genState.Params) } From e710924f419507aadd9f828252c13cee468baf93 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 12 Aug 2024 12:06:02 -0400 Subject: [PATCH 086/140] bump to v1.33.0 with more logs --- node/go.mod | 2 +- node/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node/go.mod b/node/go.mod index 1113fde291..1714eb0377 100644 --- a/node/go.mod +++ b/node/go.mod @@ -209,7 +209,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.32.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.33.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ diff --git a/node/go.sum b/node/go.sum index 955a07ab49..10483c4f2f 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.32.0 h1:S+oyMqom9oAktK/7kQp5FhnMktmFPdy8HelTBd6saXA= -github.com/rootulp/celestia-app v1.32.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= +github.com/rootulp/celestia-app v1.33.0 h1:2ZF2Ls4B3HHBSrgJ0RIjuQp+gDtUf0uZ59Fuvw5xCoI= +github.com/rootulp/celestia-app v1.33.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= From 87e9e81181cc090b997025712691a035be249568 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 12:36:03 -0400 Subject: [PATCH 087/140] clean up method order --- node/utils/multiplexer.go | 134 ++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 55 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index b3e3e7588b..2812b9a3a0 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -11,9 +11,6 @@ const ( initialAppVersion = v1.Version ) -// TODO: modify v1 state machine to contain an upgrade height and have an EndBlocker that returns with ConsensusParamsUpdates app version 2 -// TODO: extend the abci.Application interface to include a method called "RunMigration" - // Multiplexer implements the abci.Application interface var _ abci.Application = (*Multiplexer)(nil) @@ -21,9 +18,12 @@ var _ abci.Application = (*Multiplexer)(nil) type Multiplexer struct { // applications is a map from appVersion to application applications map[uint64]AppWithMigrations - // currentAppVersion is the version of the application that is currently running + // currentAppVersion is the version of the application that is currently + // running. currentAppVersion uint64 - // nextAppVersion is the version of the application that should be upgraded to. Usually this value is the same as currentAppVersion except if the current height is an upgrade height. + // nextAppVersion is the version of the application that should be upgraded + // to. This value only differs from currentAppVersion if the current height + // is an upgrade height. nextAppVersion uint64 } @@ -35,52 +35,45 @@ func NewMultiplexer() *Multiplexer { } } -func (m *Multiplexer) getCurrentApp() AppWithMigrations { - return m.applications[m.currentAppVersion] -} +// +// #region Consensus +// -func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { +func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { + fmt.Printf("Multiplexer InitChain invoked with current app version %v request app version %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion) + m.currentAppVersion = request.ConsensusParams.Version.AppVersion + m.nextAppVersion = request.ConsensusParams.Version.AppVersion app := m.getCurrentApp() - return app.ApplySnapshotChunk(request) + return app.InitChain(request) } -func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { +func (m *Multiplexer) PrepareProposal(request abci.RequestPrepareProposal) abci.ResponsePrepareProposal { + fmt.Printf("Multiplexer PrepareProposal invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - got := app.Info(abci.RequestInfo{}) - if got.AppVersion != m.currentAppVersion { - panic(fmt.Sprintf("current app version %v does not match app version from current app %v\n", m.currentAppVersion, got.AppVersion)) - } - return app.BeginBlock(request) + return app.PrepareProposal(request) } -func (m *Multiplexer) CheckTx(request abci.RequestCheckTx) abci.ResponseCheckTx { +func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci.ResponseProcessProposal { + fmt.Printf("Multiplexer ProcessProposal invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - return app.CheckTx(request) + return app.ProcessProposal(request) } -func (m *Multiplexer) Commit() abci.ResponseCommit { - // Note: the application can create or delete stores in this method +func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { + fmt.Printf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - got := app.Commit() - - if m.isUpgradePending() { - fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) - m.currentAppVersion = m.nextAppVersion - fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - appHash := m.RunMigrations() - got.Data = appHash - return got - } - return got + return app.BeginBlock(request) } func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeliverTx { + fmt.Printf("Multiplexer DeliverTx invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() return app.DeliverTx(request) } func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { - fmt.Printf("Multiplexer EndBlock height %v invoked with current app version %v\n", request.Height, m.currentAppVersion) + fmt.Printf("Multiplexer EndBlock invoked with current app version %v\n", m.currentAppVersion) + // Note: the application can't create or delete stores in this method // because it is operating on a branch of state. app := m.getCurrentApp() @@ -99,60 +92,91 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo return got } +func (m *Multiplexer) Commit() abci.ResponseCommit { + fmt.Printf("Multiplexer Commit invoked with current app version %v\n", m.currentAppVersion) + + // Note: the application can create or delete stores in this method + app := m.getCurrentApp() + got := app.Commit() + + if m.isUpgradePending() { + fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) + m.currentAppVersion = m.nextAppVersion + fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) + appHash := m.RunMigrations() + got.Data = appHash + return got + } + return got +} + +// +// #region Mempool +// + +func (m *Multiplexer) CheckTx(request abci.RequestCheckTx) abci.ResponseCheckTx { + app := m.getCurrentApp() + return app.CheckTx(request) +} + +// +// #region Info +// + func (m *Multiplexer) Info(request abci.RequestInfo) abci.ResponseInfo { app := m.getCurrentApp() return app.Info(request) } -func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { - // TODO consider getting app version from request.ConsensusParams.Version.AppVersion - fmt.Printf("Multiplexer InitChain invoked with current app version %v request %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion) +func (m *Multiplexer) Query(request abci.RequestQuery) abci.ResponseQuery { app := m.getCurrentApp() - return app.InitChain(request) + return app.Query(request) } +// +// #region Snapshot +// + +func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) abci.ResponseApplySnapshotChunk { + app := m.getCurrentApp() + return app.ApplySnapshotChunk(request) +} func (m *Multiplexer) ListSnapshots(request abci.RequestListSnapshots) abci.ResponseListSnapshots { app := m.getCurrentApp() return app.ListSnapshots(request) } - func (m *Multiplexer) LoadSnapshotChunk(request abci.RequestLoadSnapshotChunk) abci.ResponseLoadSnapshotChunk { app := m.getCurrentApp() return app.LoadSnapshotChunk(request) } - func (m *Multiplexer) OfferSnapshot(request abci.RequestOfferSnapshot) abci.ResponseOfferSnapshot { app := m.getCurrentApp() return app.OfferSnapshot(request) } -func (m *Multiplexer) PrepareProposal(request abci.RequestPrepareProposal) abci.ResponsePrepareProposal { - fmt.Printf("Multiplexer PrepareProposal invoked with current app version %v\n", m.currentAppVersion) - app := m.getCurrentApp() - return app.PrepareProposal(request) -} +// +// #region Other +// -func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci.ResponseProcessProposal { +func (m *Multiplexer) SetOption(request abci.RequestSetOption) abci.ResponseSetOption { app := m.getCurrentApp() - return app.ProcessProposal(request) + return app.SetOption(request) } -func (m *Multiplexer) Query(request abci.RequestQuery) abci.ResponseQuery { +func (m *Multiplexer) RunMigrations() []byte { + fmt.Printf("Multiplexer RunMigrations invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - return app.Query(request) + return app.RunMigrations() } -func (m *Multiplexer) SetOption(request abci.RequestSetOption) abci.ResponseSetOption { - app := m.getCurrentApp() - return app.SetOption(request) -} +// +// #region Private +// func (m *Multiplexer) isUpgradePending() bool { return m.currentAppVersion != m.nextAppVersion } -func (m *Multiplexer) RunMigrations() []byte { - fmt.Printf("Multiplexer RunMigrations invoked with current app version %v\n", m.currentAppVersion) - app := m.getCurrentApp() - return app.RunMigrations() +func (m *Multiplexer) getCurrentApp() AppWithMigrations { + return m.applications[m.currentAppVersion] } From fca53074b67d3a0f4859c43008eb3933d3f5de5d Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 13:43:25 -0400 Subject: [PATCH 088/140] emit logs for apps --- node/utils/apps.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/node/utils/apps.go b/node/utils/apps.go index 2e992074d2..a8c362cea6 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -1,6 +1,8 @@ package utils import ( + "os" + appV1 "github.com/celestiaorg/celestia-app/app" encodingV1 "github.com/celestiaorg/celestia-app/app/encoding" appV2 "github.com/celestiaorg/celestia-app/v2/app" @@ -23,7 +25,7 @@ func GetApplications() map[uint64]AppWithMigrations { } func NewAppV1() *appV1.App { - logger := log.NewNopLogger() + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) db := tmdb.NewMemDB() traceStore := &NoopWriter{} loadLatest := true @@ -36,7 +38,7 @@ func NewAppV1() *appV1.App { } func NewAppV2() *appV2.App { - logger := log.NewNopLogger() + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) db := tmdb.NewMemDB() traceStore := &NoopWriter{} invCheckPeriod := uint(1) From 4c450e696fd017d14b96a43b7495b7b4036c1713 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 13:58:12 -0400 Subject: [PATCH 089/140] wip: get/set commit multi store --- app/app.go | 8 ++++++++ node/utils/interface.go | 7 ++++++- node/utils/multiplexer.go | 4 ++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/app.go b/app/app.go index 66f754f6c9..e06a9817b1 100644 --- a/app/app.go +++ b/app/app.go @@ -791,3 +791,11 @@ func (app *App) InitializeAppVersion(ctx sdk.Context) { app.SetAppVersion(ctx, appVersion) } } + +func (app *App) SetCommitMultiStore(cms storetypes.CommitMultiStore) { + app.SetCMS(cms) +} + +func (app *App) GetCommitMultiStore() storetypes.CommitMultiStore { + return app.CommitMultiStore() +} diff --git a/node/utils/interface.go b/node/utils/interface.go index b54601673d..b08dfcb15d 100644 --- a/node/utils/interface.go +++ b/node/utils/interface.go @@ -1,9 +1,14 @@ package utils -import abci "github.com/tendermint/tendermint/abci/types" +import ( + storetypes "github.com/cosmos/cosmos-sdk/store/types" + abci "github.com/tendermint/tendermint/abci/types" +) type AppWithMigrations interface { abci.Application RunMigrations() []byte + GetCommitMultiStore() storetypes.CommitMultiStore + SetCommitMultiStore(cms storetypes.CommitMultiStore) } diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 2812b9a3a0..e9fe458527 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -103,6 +103,10 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) + + cms := m.applications[1].GetCommitMultiStore() + m.applications[2].SetCommitMultiStore(cms) + appHash := m.RunMigrations() got.Data = appHash return got From 8b7a64b52f925ad5dfb06f3ae204c059ef74f74a Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 14:07:06 -0400 Subject: [PATCH 090/140] new error I[2024-08-13|14:05:15.710] upgrading from app version 1 to 2 Multiplexer EndBlock height 3 with current app version 1 next app version 1 returned app version 2 Multiplexer Commit invoked with current app version 1 I[2024-08-13|14:05:15.713] commit synced commit=436F6D6D697449447B5B3935203135203331203138322031312036372031323820323338203334203138302032372039372031333620323032203130312032313220393120313839203836203139372031363420343220323433203233382039203737203234372031343420353720323130203233392037305D3A337D Multiplexer upgrade is pending from 1 to 2 Copying commit multi store from app 1 to app 2 Done copying commit multi storeMultiplexer upgrade completed to 2 Multiplexer RunMigrations invoked with current app version 2 D[2024-08-13|14:05:15.713] mounting KVStore KVStoreKey{0x14001570970,transfer}=(MISSING) E[2024-08-13|14:05:15.714] CONSENSUS FAILURE!!! module=consensus err="store duplicate store key name KVStoreKey{0x14001570970, transfer}" --- node/go.mod | 2 +- node/go.sum | 4 ++-- node/utils/multiplexer.go | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/node/go.mod b/node/go.mod index 1714eb0377..2042b9f819 100644 --- a/node/go.mod +++ b/node/go.mod @@ -209,7 +209,7 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.33.0 + github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.34.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ diff --git a/node/go.sum b/node/go.sum index 10483c4f2f..7821ee0409 100644 --- a/node/go.sum +++ b/node/go.sum @@ -1128,8 +1128,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.33.0 h1:2ZF2Ls4B3HHBSrgJ0RIjuQp+gDtUf0uZ59Fuvw5xCoI= -github.com/rootulp/celestia-app v1.33.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= +github.com/rootulp/celestia-app v1.34.0 h1:DI+lnMuB6Q8yROuerko/NRYM1hB8evfRoLdPotCy7GI= +github.com/rootulp/celestia-app v1.34.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index e9fe458527..e7f074fd61 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -101,12 +101,14 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { if m.isUpgradePending() { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) + fmt.Printf("Copying commit multi store from app %v to app %v\n", m.currentAppVersion, m.nextAppVersion) + cms := m.applications[m.currentAppVersion].GetCommitMultiStore() + m.applications[m.nextAppVersion].SetCommitMultiStore(cms) + fmt.Printf("Done copying commit multi store") + m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - cms := m.applications[1].GetCommitMultiStore() - m.applications[2].SetCommitMultiStore(cms) - appHash := m.RunMigrations() got.Data = appHash return got From ede5f3e233941e6361df1e66a22108b3ff75723e Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 14:32:52 -0400 Subject: [PATCH 091/140] let v2 state machine handle v1 -> v2 --- node/go.mod | 5 +---- node/go.sum | 4 ---- node/utils/apps.go | 25 +++++++------------------ node/utils/multiplexer.go | 10 ++-------- 4 files changed, 10 insertions(+), 34 deletions(-) diff --git a/node/go.mod b/node/go.mod index 2042b9f819..17754aae96 100644 --- a/node/go.mod +++ b/node/go.mod @@ -5,7 +5,6 @@ go 1.22.5 toolchain go1.22.6 require ( - github.com/celestiaorg/celestia-app v1.13.0 github.com/celestiaorg/celestia-app/v2 v2.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 @@ -41,7 +40,6 @@ require ( github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect github.com/celestiaorg/nmt v0.22.0 // indirect - github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 // indirect github.com/celestiaorg/rsmt2d v0.14.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect @@ -140,6 +138,7 @@ require ( github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/nxadm/tail v1.4.8 // indirect + github.com/onsi/gomega v1.27.4 // indirect github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -208,8 +207,6 @@ require ( replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 - // replace celestia-app v1 with fork that has a hard-coded upgrade height of 3 - github.com/celestiaorg/celestia-app => github.com/rootulp/celestia-app v1.34.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ diff --git a/node/go.sum b/node/go.sum index 7821ee0409..2a3cc9fe7f 100644 --- a/node/go.sum +++ b/node/go.sum @@ -323,8 +323,6 @@ github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= github.com/celestiaorg/nmt v0.22.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= -github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2 h1:Q8nr5SAtDW5gocrBwqwDJcSS/JedqU58WwQA2SP+nXw= -github.com/celestiaorg/quantum-gravity-bridge/v2 v2.1.2/go.mod h1:s/LzLUw0WeYPJ6qdk4q46jKLOq7rc9Z5Mdrxtfpcigw= github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= @@ -1128,8 +1126,6 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rootulp/celestia-app v1.34.0 h1:DI+lnMuB6Q8yROuerko/NRYM1hB8evfRoLdPotCy7GI= -github.com/rootulp/celestia-app v1.34.0/go.mod h1:Nkjs/LD9uOwyavPbe2XO9ybYbHYQP9NqRU8wK0ffbPk= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= diff --git a/node/utils/apps.go b/node/utils/apps.go index a8c362cea6..d9cf0183a1 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -3,8 +3,6 @@ package utils import ( "os" - appV1 "github.com/celestiaorg/celestia-app/app" - encodingV1 "github.com/celestiaorg/celestia-app/app/encoding" appV2 "github.com/celestiaorg/celestia-app/v2/app" encodingV2 "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" @@ -14,29 +12,20 @@ import ( ) const ( - upgradeHeightV1ToV2 = int64(3) + upgradeHeightV1ToV2 = int64(5) + upgradeHeightV2ToV3 = int64(10) ) func GetApplications() map[uint64]AppWithMigrations { + appV2 := NewAppV2() + return map[uint64]AppWithMigrations{ - v1.Version: NewAppV1(), - v2.Version: NewAppV2(), + v1.Version: appV2, + v2.Version: appV2, + // TODO: add a v3 app here } } -func NewAppV1() *appV1.App { - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - db := tmdb.NewMemDB() - traceStore := &NoopWriter{} - loadLatest := true - skipUpgradeHeights := make(map[int64]bool) - homePath := "" - invCheckPeriod := uint(1) - encodingConfig := encodingV1.MakeConfig(appV1.ModuleEncodingRegisters...) - appOptions := NoopAppOptions{} - return appV1.New(logger, db, traceStore, loadLatest, skipUpgradeHeights, homePath, invCheckPeriod, encodingConfig, appOptions) -} - func NewAppV2() *appV2.App { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) db := tmdb.NewMemDB() diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index e7f074fd61..264a3a521e 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -86,8 +86,6 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo } m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion } - } else { - fmt.Printf("Multiplexer EndBlock height %v with current app version %v next app version %v returned nil app version\n", request.Height, m.currentAppVersion, m.nextAppVersion) } return got } @@ -101,16 +99,12 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { if m.isUpgradePending() { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) - fmt.Printf("Copying commit multi store from app %v to app %v\n", m.currentAppVersion, m.nextAppVersion) - cms := m.applications[m.currentAppVersion].GetCommitMultiStore() - m.applications[m.nextAppVersion].SetCommitMultiStore(cms) - fmt.Printf("Done copying commit multi store") m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - appHash := m.RunMigrations() - got.Data = appHash + // appHash := m.RunMigrations() + // got.Data = appHash return got } return got From e6a3c902981428ea6e42ea783f00d9f4f8420b08 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 14:51:23 -0400 Subject: [PATCH 092/140] let v2 upgrade to v3 based on hard-coded flag --- app/app.go | 7 +++++++ app/app_test.go | 5 +++-- app/test/upgrade_test.go | 5 +++-- cmd/celestia-appd/cmd/root.go | 4 +++- node/utils/apps.go | 8 +++++--- test/tokenfilter/setup.go | 2 +- test/util/malicious/app.go | 2 +- test/util/test_app.go | 6 ++++-- test/util/testnode/config.go | 2 ++ 9 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/app.go b/app/app.go index e06a9817b1..0e8a31fcc8 100644 --- a/app/app.go +++ b/app/app.go @@ -166,6 +166,9 @@ type App struct { // upgradeHeightV2 is used as a coordination mechanism for the height-based // upgrade from v1 to v2. upgradeHeightV2 int64 + // upgradeHeightv3 is a hard-coded mechanism for the height-based + // upgrade from v2 to v3. + upgradeHeightV3 int64 // MsgGateKeeper is used to define which messages are accepted for a given // app version. MsgGateKeeper *ante.MsgVersioningGateKeeper @@ -184,6 +187,7 @@ func New( invCheckPeriod uint, encodingConfig encoding.Config, upgradeHeightV2 int64, + upgradeHeightV3 int64, appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *App { @@ -210,6 +214,7 @@ func New( tkeys: tkeys, memKeys: memKeys, upgradeHeightV2: upgradeHeightV2, + upgradeHeightV3: upgradeHeightV3, } app.ParamsKeeper = initParamsKeeper(appCodec, encodingConfig.Amino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) @@ -475,6 +480,8 @@ func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.Respo app.SetAppVersion(ctx, newVersion) app.SignalKeeper.ResetTally(ctx) } + } else if req.Height == app.upgradeHeightV3-1 { + app.SetAppVersion(ctx, 3) } return res } diff --git a/app/app_test.go b/app/app_test.go index a991981d41..473e088ef4 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -17,10 +17,11 @@ func TestNew(t *testing.T) { traceStore := &NoopWriter{} invCheckPeriod := uint(1) encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) - upgradeHeight := int64(0) + upgradeHeightV2 := int64(0) + upgradeHeightV3 := int64(0) appOptions := NoopAppOptions{} - got := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) + got := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) t.Run("initializes ICAHostKeeper", func(t *testing.T) { assert.NotNil(t, got.ICAHostKeeper) diff --git a/app/test/upgrade_test.go b/app/test/upgrade_test.go index b80321204b..0ab1b80478 100644 --- a/app/test/upgrade_test.go +++ b/app/test/upgrade_test.go @@ -122,13 +122,14 @@ func TestBlobstreamRemovedInV2(t *testing.T) { require.Error(t, err) } -func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeight int64) (*app.App, keyring.Keyring) { +func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeightV2 int64) (*app.App, keyring.Keyring) { t.Helper() + upgradeHeightV3 := int64(0) db := dbm.NewMemDB() chainID := "test_chain" encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeight, util.EmptyAppOptions{}) + testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, upgradeHeightV3, util.EmptyAppOptions{}) genesisState, _, kr := util.GenesisStateWithSingleValidator(testApp, "account") stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) diff --git a/cmd/celestia-appd/cmd/root.go b/cmd/celestia-appd/cmd/root.go index 6d4663a4d7..fa8811223c 100644 --- a/cmd/celestia-appd/cmd/root.go +++ b/cmd/celestia-appd/cmd/root.go @@ -227,12 +227,14 @@ func NewAppServer(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts se if err != nil { panic(err) } + upgradeHeightV3 := int64(0) return app.New( logger, db, traceStore, cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), encoding.MakeConfig(app.ModuleEncodingRegisters...), // Ideally, we would reuse the one created by NewRootCmd. cast.ToInt64(appOpts.Get(UpgradeHeightFlag)), + upgradeHeightV3, appOpts, baseapp.SetPruning(pruningOpts), baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), @@ -257,7 +259,7 @@ func createAppAndExport( appOpts servertypes.AppOptions, ) (servertypes.ExportedApp, error) { config := encoding.MakeConfig(app.ModuleEncodingRegisters...) - celestiaApp := app.New(logger, db, traceStore, uint(1), config, 0, appOpts) + celestiaApp := app.New(logger, db, traceStore, uint(1), config, 0, 0, appOpts) if height != -1 { if err := celestiaApp.LoadHeight(height); err != nil { return servertypes.ExportedApp{}, err diff --git a/node/utils/apps.go b/node/utils/apps.go index d9cf0183a1..d0ce587121 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -12,8 +12,10 @@ import ( ) const ( - upgradeHeightV1ToV2 = int64(5) - upgradeHeightV2ToV3 = int64(10) + // upgradeHeightV2 is the height at which the app should be upgraded to v2. + upgradeHeightV2 = int64(5) + // upgradeHeightV2 is the height at which the app should be upgraded to v3. + upgradeHeightV3 = int64(10) ) func GetApplications() map[uint64]AppWithMigrations { @@ -33,5 +35,5 @@ func NewAppV2() *appV2.App { invCheckPeriod := uint(1) encodingConfig := encodingV2.MakeConfig(appV2.ModuleEncodingRegisters...) appOptions := NoopAppOptions{} - return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV1ToV2, appOptions) + return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) } diff --git a/test/tokenfilter/setup.go b/test/tokenfilter/setup.go index 4e2764eeb4..fd77f45358 100644 --- a/test/tokenfilter/setup.go +++ b/test/tokenfilter/setup.go @@ -147,7 +147,7 @@ func SetupWithGenesisValSet(t testing.TB, valSet *tmtypes.ValidatorSet, genAccs encCdc := encoding.MakeConfig(app.ModuleEncodingRegisters...) genesisState := app.NewDefaultGenesisState(encCdc.Codec) app := app.New( - log.NewNopLogger(), db, nil, 5, encCdc, 0, simapp.EmptyAppOptions{}, + log.NewNopLogger(), db, nil, 5, encCdc, 0, 0, simapp.EmptyAppOptions{}, ) // set genesis accounts diff --git a/test/util/malicious/app.go b/test/util/malicious/app.go index 9212e966d7..6048b567d0 100644 --- a/test/util/malicious/app.go +++ b/test/util/malicious/app.go @@ -56,7 +56,7 @@ func New( appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *App { - goodApp := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, 0, appOpts, baseAppOptions...) + goodApp := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, 0, 0, appOpts, baseAppOptions...) badApp := &App{App: goodApp} // set the malicious prepare proposal handler if it is set in the app options diff --git a/test/util/test_app.go b/test/util/test_app.go index e1d50722e2..2ad97130e0 100644 --- a/test/util/test_app.go +++ b/test/util/test_app.go @@ -90,6 +90,7 @@ func NewTestApp() *app.App { cast.ToUint(emptyOpts.Get(server.FlagInvCheckPeriod)), encCfg, 0, + 0, emptyOpts, ) } @@ -423,13 +424,14 @@ func NewDefaultGenesisState(cdc codec.JSONCodec) app.GenesisState { return app.ModuleBasics.DefaultGenesis(cdc) } -func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeight int64) (*app.App, keyring.Keyring) { +func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeightV2 int64) (*app.App, keyring.Keyring) { t.Helper() db := dbm.NewMemDB() chainID := "test_chain" encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeight, EmptyAppOptions{}) + upgradeHeightV3 := int64(0) + testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, upgradeHeightV3, EmptyAppOptions{}) genesisState, _, kr := GenesisStateWithSingleValidator(testApp, "account") stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index 00b10b8ca4..2e6a9e9c26 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -181,6 +181,7 @@ func DefaultAppCreator() srvtypes.AppCreator { 0, // invCheckPerid encodingConfig, 0, // v2 upgrade height + 0, // v3 upgrade height simapp.EmptyAppOptions{}, baseapp.SetMinGasPrices(fmt.Sprintf("%v%v", appconsts.DefaultMinGasPrice, app.BondDenom)), ) @@ -197,6 +198,7 @@ func CustomAppCreator(minGasPrice string) srvtypes.AppCreator { 0, // invCheckPerid encodingConfig, 0, // v2 upgrade height + 0, // v3 upgrade height simapp.EmptyAppOptions{}, baseapp.SetMinGasPrices(minGasPrice), ) From f3bb95d611dea0ec5b085b92c1b17492b823b6c5 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 15:06:56 -0400 Subject: [PATCH 093/140] cleanup --- node/cmd/root.go | 13 +++---------- node/utils/start_node.go | 7 ------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 4b29305e9b..d7793e9273 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "os" + "time" "github.com/celestiaorg/celestia-app/node/utils" "github.com/spf13/cobra" @@ -32,22 +33,14 @@ var rootCmd = &cobra.Command{ cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, rootDir) defer cleanup() if err != nil { - fmt.Printf("Failed to start node: %v\n", err) + fmt.Printf("failed to start node: %v\n", err) return err } - fmt.Printf("chainID %v\n", cctx.ChainID) - - latestHeight, err := cctx.LatestHeight() - if err != nil { - fmt.Printf("Failed to get latest height: %v\n", err) - return err - } - fmt.Printf("latestHeight %v\n", latestHeight) - err = cctx.WaitForNextBlock() if err != nil { fmt.Printf("waiting for next block failed: %v\n", err) } + time.Sleep(10 * time.Second) return nil }, } diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 5260405db3..34ccffb967 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -41,9 +41,6 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip return cctx, cleanup, nil } -// HACKHACK: this is a temporary solution to get the CometBFT node running. The -// CometBFT node is connected to the multiplexer but the returned application is -// a singular app (not a multiplexed app). func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode *node.Node, cleanupComet func() error, err error) { logger := testnode.NewLogger(&config.UniversalTestingConfig) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) @@ -51,8 +48,6 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode return nil, nil, err } - // TODO: remove this line - // app = config.AppCreator(logger, db, nil, config.AppOptions) nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) if err != nil { return nil, nil, err @@ -61,9 +56,7 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode config.TmConfig, privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), nodeKey, - // TODO: use multiplexer instead of singular app newProxyClientCreator(multiplexer), - // proxy.NewLocalClientCreator(app), node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), From bef55d289fe93955596136da5ab1a7a55d985c89 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 15:28:06 -0400 Subject: [PATCH 094/140] import app v3 --- node/go.mod | 9 +++++---- node/go.sum | 6 ++++-- node/utils/apps.go | 16 +++++++++++++++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/node/go.mod b/node/go.mod index 17754aae96..f65ccb359f 100644 --- a/node/go.mod +++ b/node/go.mod @@ -1,11 +1,10 @@ module github.com/celestiaorg/celestia-app/node -go 1.22.5 - -toolchain go1.22.6 +go 1.22.6 require ( github.com/celestiaorg/celestia-app/v2 v2.0.0 + github.com/celestiaorg/celestia-app/v3 v3.0.0 github.com/cosmos/cosmos-sdk v0.46.16 github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.19.0 @@ -38,8 +37,9 @@ require ( github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect + github.com/celestiaorg/go-square/v2 v2.0.0-rc2 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect - github.com/celestiaorg/nmt v0.22.0 // indirect + github.com/celestiaorg/nmt v0.22.1 // indirect github.com/celestiaorg/rsmt2d v0.14.0 // indirect github.com/cenkalti/backoff/v4 v4.1.3 // indirect github.com/cespare/xxhash v1.1.0 // indirect @@ -209,6 +209,7 @@ replace ( cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ + github.com/celestiaorg/celestia-app/v3 => ../../celestia-app-v3 // -------------------------------------- // --- Unmodified replace statements --- diff --git a/node/go.sum b/node/go.sum index 2a3cc9fe7f..5d070d4c76 100644 --- a/node/go.sum +++ b/node/go.sum @@ -319,10 +319,12 @@ github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3L github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= +github.com/celestiaorg/go-square/v2 v2.0.0-rc2 h1:4D+ASgZGYVCsffc2uhPagACrvNiLZu9/CqNYvnlHCgg= +github.com/celestiaorg/go-square/v2 v2.0.0-rc2/go.mod h1:eeaU8f8jBpk3ZS/gaDZIlTesJR2F51QAmveNzWH6aEU= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= -github.com/celestiaorg/nmt v0.22.0 h1:AGtfmBiVgreR1KkIV5R7XFNeMp/H4IUDLlBbLjZZ3zk= -github.com/celestiaorg/nmt v0.22.0/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/nmt v0.22.1 h1:t7fqoP5MJ8mBns5DB2XjfcPxQpS3CKMkY+v+BEkDxYc= +github.com/celestiaorg/nmt v0.22.1/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= diff --git a/node/utils/apps.go b/node/utils/apps.go index d0ce587121..c7c09b8810 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -7,6 +7,9 @@ import ( encodingV2 "github.com/celestiaorg/celestia-app/v2/app/encoding" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" + appV3 "github.com/celestiaorg/celestia-app/v3/app" + encodingV3 "github.com/celestiaorg/celestia-app/v3/app/encoding" + v3 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v3" "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) @@ -20,11 +23,12 @@ const ( func GetApplications() map[uint64]AppWithMigrations { appV2 := NewAppV2() + appV3 := NewAppV3() return map[uint64]AppWithMigrations{ v1.Version: appV2, v2.Version: appV2, - // TODO: add a v3 app here + v3.Version: appV3, } } @@ -37,3 +41,13 @@ func NewAppV2() *appV2.App { appOptions := NoopAppOptions{} return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) } + +func NewAppV3() *appV3.App { + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + db := tmdb.NewMemDB() + traceStore := &NoopWriter{} + invCheckPeriod := uint(1) + encodingConfig := encodingV3.MakeConfig(appV3.ModuleEncodingRegisters...) + appOptions := NoopAppOptions{} + return appV3.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, appOptions) +} From 80408d9e55613af7bd25976e5220555b693daf05 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 16:26:24 -0400 Subject: [PATCH 095/140] make modules support v3 --- app/modules.go | 66 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/app/modules.go b/app/modules.go index 0a18a50b3a..bf2accda41 100644 --- a/app/modules.go +++ b/app/modules.go @@ -91,80 +91,82 @@ var ( ModuleEncodingRegisters = extractRegisters(ModuleBasics) ) +const v3 = uint64(3) + func (app *App) setupModuleManager(skipGenesisInvariants bool) error { var err error app.manager, err = module.NewManager([]module.VersionedModule{ { Module: genutil.NewAppModule(app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, app.txConfig), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: auth.NewAppModule(app.appCodec, app.AccountKeeper, nil), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: bank.NewAppModule(app.appCodec, app.BankKeeper, app.AccountKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: capability.NewAppModule(app.appCodec, *app.CapabilityKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: feegrantmodule.NewAppModule(app.appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: gov.NewAppModule(app.appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: mint.NewAppModule(app.appCodec, app.MintKeeper, app.AccountKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: slashing.NewAppModule(app.appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: distr.NewAppModule(app.appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: staking.NewAppModule(app.appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: evidence.NewAppModule(app.EvidenceKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: authzmodule.NewAppModule(app.appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: ibc.NewAppModule(app.IBCKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: params.NewAppModule(app.ParamsKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: transfer.NewAppModule(app.TransferKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: blob.NewAppModule(app.appCodec, app.BlobKeeper), - FromVersion: v1, ToVersion: v2, + FromVersion: v1, ToVersion: v3, }, { Module: blobstream.NewAppModule(app.appCodec, app.BlobstreamKeeper), @@ -172,19 +174,19 @@ func (app *App) setupModuleManager(skipGenesisInvariants bool) error { }, { Module: signal.NewAppModule(app.SignalKeeper), - FromVersion: v2, ToVersion: v2, + FromVersion: v2, ToVersion: v3, }, { Module: minfee.NewAppModule(app.ParamsKeeper), - FromVersion: v2, ToVersion: v2, + FromVersion: v2, ToVersion: v3, }, { Module: packetforward.NewAppModule(app.PacketForwardKeeper), - FromVersion: v2, ToVersion: v2, + FromVersion: v2, ToVersion: v3, }, { Module: ica.NewAppModule(nil, &app.ICAHostKeeper), - FromVersion: v2, ToVersion: v2, + FromVersion: v2, ToVersion: v3, }, }) if err != nil { @@ -341,6 +343,26 @@ func versionedStoreKeys() map[uint64][]string { stakingtypes.StoreKey, upgradetypes.StoreKey, }, + 3: { + authtypes.StoreKey, + authzkeeper.StoreKey, + banktypes.StoreKey, + blobtypes.StoreKey, + capabilitytypes.StoreKey, + distrtypes.StoreKey, + evidencetypes.StoreKey, + feegrant.StoreKey, + govtypes.StoreKey, + ibchost.StoreKey, + ibctransfertypes.StoreKey, + icahosttypes.StoreKey, + minttypes.StoreKey, + packetforwardtypes.StoreKey, + signaltypes.StoreKey, + slashingtypes.StoreKey, + stakingtypes.StoreKey, + upgradetypes.StoreKey, + }, } } From bf5d067c5ce4fc48f0f4a6e2f4d10a57b15bb980 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 16:44:01 -0400 Subject: [PATCH 096/140] attempt to create v3 app only when needed --- node/utils/multiplexer.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 264a3a521e..8dd2715971 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -16,8 +16,8 @@ var _ abci.Application = (*Multiplexer)(nil) // Multiplexer is used to switch between different versions of the application. type Multiplexer struct { - // applications is a map from appVersion to application - applications map[uint64]AppWithMigrations + // application is the current application + application AppWithMigrations // currentAppVersion is the version of the application that is currently // running. currentAppVersion uint64 @@ -28,8 +28,10 @@ type Multiplexer struct { } func NewMultiplexer() *Multiplexer { + application := NewAppV2() + return &Multiplexer{ - applications: GetApplications(), + application: application, currentAppVersion: initialAppVersion, nextAppVersion: initialAppVersion, } @@ -79,12 +81,10 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo app := m.getCurrentApp() got := app.EndBlock(request) if got.ConsensusParamUpdates != nil && got.ConsensusParamUpdates.Version != nil { - fmt.Printf("Multiplexer EndBlock height %v with current app version %v next app version %v returned app version %v\n", request.Height, m.currentAppVersion, m.nextAppVersion, got.ConsensusParamUpdates.Version.AppVersion) - if m.nextAppVersion != got.ConsensusParamUpdates.Version.AppVersion { - if _, ok := m.applications[got.ConsensusParamUpdates.Version.AppVersion]; !ok { - panic(fmt.Sprintf("Multiplexer does not support app version %v\n", got.ConsensusParamUpdates.Version.AppVersion)) - } - m.nextAppVersion = got.ConsensusParamUpdates.Version.AppVersion + nextAppVersion := got.ConsensusParamUpdates.Version.AppVersion + if m.nextAppVersion != nextAppVersion { + fmt.Printf("Setting multiplexer next app version to %v\n", nextAppVersion) + m.nextAppVersion = nextAppVersion } } return got @@ -99,7 +99,9 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { if m.isUpgradePending() { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) - + if m.nextAppVersion == 3 { + m.application = NewAppV3() + } m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) @@ -178,5 +180,5 @@ func (m *Multiplexer) isUpgradePending() bool { } func (m *Multiplexer) getCurrentApp() AppWithMigrations { - return m.applications[m.currentAppVersion] + return m.application } From 9a576a0db056581ca370ad3c00d2029ace85311b Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 13 Aug 2024 17:05:08 -0400 Subject: [PATCH 097/140] remove unneeded RunMigrations --- app/app.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/app.go b/app/app.go index 0e8a31fcc8..d88399fea6 100644 --- a/app/app.go +++ b/app/app.go @@ -541,13 +541,9 @@ func (app *App) Info(req abci.RequestInfo) abci.ResponseInfo { return resp } +// RunMigrations is a no-op because the v2 state machine already handles +// migrating from v1 -> v2 at the v2 upgrade height. func (app *App) RunMigrations() []byte { - app.mountKeysAndInit(v2) - // HACKHACK uses true because app.deliverState is nil which causes a panic - // if this is set to false. - isCheckTx := true - ctx := app.NewContext(isCheckTx, tmproto.Header{}) - app.manager.RunMigrations(ctx, app.configurator, v1, v2) return []byte{} } From 5ea48de101bf71c41f7776da633cbd78140606dc Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 11:23:32 -0400 Subject: [PATCH 098/140] feat: share DB for all state machines E[2024-08-14|11:23:04.794] CONSENSUS FAILURE!!! module=consensus err="kv store with key KVStoreKey{0x140045fc240, capability} has not been registered in stores" stack="goroutine 101 [running]:\nruntime/debug.Stack()\n\t/Users/rootulp/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.6.darwin-arm64/src/runtime/debug/stack.go:24 +0x64\ngithub.com/tendermint/tendermint/consensus.(*State).receiveRoutine.func2()\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:748 +0x44\npanic({0x106e53880?, 0x14003d52960?})\n\t/Users/rootulp/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.22.6.darwin-arm64/src/runtime/panic.go:770 +0x124\ngithub.com/cosmos/cosmos-sdk/store/cachemulti.Store.GetKVStore({{0x1072b1238, 0x1400468d140}, 0x14004681bf0, 0x140045f84e0, {0x10727b108, 0x1086acfa0}, 0x14004681b30}, {0x107284d80, 0x140045fc240})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.24.1-sdk-v0.46.16/store/cachemulti/store.go:167 +0x120\ngithub.com/cosmos/cosmos-sdk/types.Context.KVStore({{0x10729fca0, 0x1086acfa0}, {0x1072b2280, 0x1400468d240}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, {0x2b746f78, ...}, ...}, ...}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.24.1-sdk-v0.46.16/types/context.go:281 +0x60\ngithub.com/cosmos/cosmos-sdk/x/capability/keeper.(*Keeper).InitMemStore(_, {{0x10729fca0, 0x1086acfa0}, {0x1072b2280, 0x1400468d240}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, ...}, ...})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.24.1-sdk-v0.46.16/x/capability/keeper/keeper.go:121 +0x118\ngithub.com/cosmos/cosmos-sdk/x/capability.AppModule.BeginBlock({{{_, _}}, {{_, _}, {_, _}, {_, _}, _, _, ...}}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.24.1-sdk-v0.46.16/x/capability/module.go:148 +0xb4\ngithub.com/celestiaorg/celestia-app/v3/app/module.(*Manager).BeginBlock(_, {{0x10729fca0, 0x1086acfa0}, {0x1072b2280, 0x1400468d240}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, ...}, ...}, ...)\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app-v3/app/module/manager.go:285 +0x1e4\ngithub.com/celestiaorg/celestia-app/v3/app.(*App).BeginBlocker(_, {{0x10729fca0, 0x1086acfa0}, {0x1072b2280, 0x1400468d240}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, ...}, ...}, ...)\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app-v3/app/app.go:451 +0xa8\ngithub.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).BeginBlock(_, {{0x14003d755c0, 0x20, 0x20}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, {0x2b746f78, ...}, ...}, ...})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/cosmos-sdk@v1.24.1-sdk-v0.46.16/baseapp/abci.go:191 +0x66c\ngithub.com/celestiaorg/celestia-app/node/utils.(*Multiplexer).BeginBlock(_, {{0x14003d755c0, 0x20, 0x20}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, {0x2b746f78, ...}, ...}, ...})\n\t/Users/rootulp/git/rootulp/celestiaorg/celestia-app/node/utils/multiplexer.go:71 +0xa4\ngithub.com/tendermint/tendermint/abci/client.(*localClient).BeginBlockSync(_, {{0x14003d755c0, 0x20, 0x20}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, {0x2b746f78, ...}, ...}, ...})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/abci/client/local_client.go:306 +0x104\ngithub.com/tendermint/tendermint/proxy.(*appConnConsensus).BeginBlockSync(_, {{0x14003d755c0, 0x20, 0x20}, {{0xb, 0x3}, {0x14003968a60, 0x6}, 0xa, {0x2b746f78, ...}, ...}, ...})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/proxy/app_conn.go:84 +0x4c\ngithub.com/tendermint/tendermint/state.execBlockOnProxyApp({0x1072a0138, 0x140000ade80}, {0x1072af240, 0x14001596c30}, 0x14001440960, {0x1072b2718, 0x140006444b0}, 0x1)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/state/execution.go:407 +0x378\ngithub.com/tendermint/tendermint/state.(*BlockExecutor).ApplyBlock(_, {{{0xb, 0x3}, {0x14001540280, 0x7}}, {0x14001540288, 0x6}, 0x1, 0x9, {{0x14004383820, ...}, ...}, ...}, ...)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/state/execution.go:230 +0x12c\ngithub.com/tendermint/tendermint/consensus.(*State).finalizeCommit(0x140002f8a88, 0xa)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:1710 +0x974\ngithub.com/tendermint/tendermint/consensus.(*State).tryFinalizeCommit(0x140002f8a88, 0xa)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:1616 +0x26c\ngithub.com/tendermint/tendermint/consensus.(*State).enterCommit.func1()\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:1551 +0x8c\ngithub.com/tendermint/tendermint/consensus.(*State).enterCommit(0x140002f8a88, 0xa, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:1589 +0xac4\ngithub.com/tendermint/tendermint/consensus.(*State).addVote(0x140002f8a88, 0x14001468e60, {0x0, 0x0})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:2229 +0x13c8\ngithub.com/tendermint/tendermint/consensus.(*State).tryAddVote(0x140002f8a88, 0x14001468e60, {0x0?, 0x104928640?})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:2021 +0x28\ngithub.com/tendermint/tendermint/consensus.(*State).handleMsg(0x140002f8a88, {{0x10727e1e0, 0x14001424380}, {0x0, 0x0}})\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:879 +0x110\ngithub.com/tendermint/tendermint/consensus.(*State).receiveRoutine(0x140002f8a88, 0x0)\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:806 +0x380\ncreated by github.com/tendermint/tendermint/consensus.(*State).OnStart in goroutine 1\n\t/Users/rootulp/go/pkg/mod/github.com/celestiaorg/celestia-core@v1.39.0-tm-v0.34.29/consensus/state.go:391 +0x110\n" --- node/cmd/root.go | 14 ++++++++------ node/utils/apps.go | 12 +++++------- node/utils/apps_test.go | 12 ------------ node/utils/multiplexer.go | 12 ++++++++---- node/utils/start_node_test.go | 7 ++++++- x/blob/keeper/params.go | 4 ++-- 6 files changed, 29 insertions(+), 32 deletions(-) delete mode 100644 node/utils/apps_test.go diff --git a/node/cmd/root.go b/node/cmd/root.go index d7793e9273..eedb98cef8 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -4,11 +4,13 @@ import ( "context" "fmt" "os" + "path/filepath" "time" "github.com/celestiaorg/celestia-app/node/utils" "github.com/spf13/cobra" "github.com/spf13/viper" + tmdb "github.com/tendermint/tm-db" ) var cfgFile string @@ -19,17 +21,17 @@ const rootDir = "rootDir" var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { - multiplexer := utils.NewMultiplexer() + dbPath := filepath.Join(rootDir, "data") + db, err := tmdb.NewGoLevelDB("application", dbPath) + if err != nil { + return err + } + multiplexer := utils.NewMultiplexer(db) config := utils.GetConfig() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - err := os.Mkdir(rootDir, 0755) - if err != nil { - return err - } - defer os.RemoveAll(rootDir) cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, rootDir) defer cleanup() if err != nil { diff --git a/node/utils/apps.go b/node/utils/apps.go index c7c09b8810..f74eda1c43 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -21,9 +21,9 @@ const ( upgradeHeightV3 = int64(10) ) -func GetApplications() map[uint64]AppWithMigrations { - appV2 := NewAppV2() - appV3 := NewAppV3() +func GetApplications(db tmdb.DB) map[uint64]AppWithMigrations { + appV2 := NewAppV2(db) + appV3 := NewAppV3(db) return map[uint64]AppWithMigrations{ v1.Version: appV2, @@ -32,9 +32,8 @@ func GetApplications() map[uint64]AppWithMigrations { } } -func NewAppV2() *appV2.App { +func NewAppV2(db tmdb.DB) *appV2.App { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - db := tmdb.NewMemDB() traceStore := &NoopWriter{} invCheckPeriod := uint(1) encodingConfig := encodingV2.MakeConfig(appV2.ModuleEncodingRegisters...) @@ -42,9 +41,8 @@ func NewAppV2() *appV2.App { return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) } -func NewAppV3() *appV3.App { +func NewAppV3(db tmdb.DB) *appV3.App { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - db := tmdb.NewMemDB() traceStore := &NoopWriter{} invCheckPeriod := uint(1) encodingConfig := encodingV3.MakeConfig(appV3.ModuleEncodingRegisters...) diff --git a/node/utils/apps_test.go b/node/utils/apps_test.go deleted file mode 100644 index 9c82f84e9e..0000000000 --- a/node/utils/apps_test.go +++ /dev/null @@ -1,12 +0,0 @@ -package utils - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestGetApps(t *testing.T) { - got := GetApplications() - assert.Len(t, got, 2) -} diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 8dd2715971..109a9a0036 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -5,6 +5,7 @@ import ( v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" abci "github.com/tendermint/tendermint/abci/types" + tmdb "github.com/tendermint/tm-db" ) const ( @@ -25,15 +26,18 @@ type Multiplexer struct { // to. This value only differs from currentAppVersion if the current height // is an upgrade height. nextAppVersion uint64 -} -func NewMultiplexer() *Multiplexer { - application := NewAppV2() + // db is the database used by the application + db tmdb.DB +} +func NewMultiplexer(db tmdb.DB) *Multiplexer { + application := NewAppV2(db) return &Multiplexer{ application: application, currentAppVersion: initialAppVersion, nextAppVersion: initialAppVersion, + db: db, } } @@ -100,7 +104,7 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { if m.isUpgradePending() { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) if m.nextAppVersion == 3 { - m.application = NewAppV3() + m.application = NewAppV3(m.db) } m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index 150ba1f49b..dc5a980c90 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -9,10 +9,15 @@ import ( "github.com/celestiaorg/celestia-app/node/utils" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + tmdb "github.com/tendermint/tm-db" ) func TestStartNode(t *testing.T) { - multiplexer := utils.NewMultiplexer() + dbPath := t.TempDir() + db, err := tmdb.NewGoLevelDB("application", dbPath) + require.NoError(t, err) + + multiplexer := utils.NewMultiplexer(db) config := utils.GetConfig() tempDir := t.TempDir() diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index 283ddae767..be1bc713fb 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -29,9 +29,9 @@ func (k Keeper) GasPerBlobByte(ctx sdk.Context) (res uint32) { // GovMaxSquareSize returns the GovMaxSquareSize param func (k Keeper) GovMaxSquareSize(ctx sdk.Context) (res uint64) { if k.paramStore.Has(ctx, types.KeyGovMaxSquareSize) { - fmt.Printf("param store has key %v\n", types.KeyGovMaxSquareSize) + fmt.Printf("param store has key %v\n", string(types.KeyGovMaxSquareSize)) } else { - fmt.Printf("param store does not have key %v\n", types.KeyGovMaxSquareSize) + fmt.Printf("param store does not have key %v\n", string(types.KeyGovMaxSquareSize)) } k.paramStore.Get(ctx, types.KeyGovMaxSquareSize, &res) return res From 3f787ce030a3fd20544e865fa2008f84c888daec Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 11:30:08 -0400 Subject: [PATCH 099/140] store does not exist for key: capability --- node/utils/multiplexer.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 109a9a0036..faf399532d 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -4,6 +4,8 @@ import ( "fmt" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" + storetypes "github.com/cosmos/cosmos-sdk/store/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" abci "github.com/tendermint/tendermint/abci/types" tmdb "github.com/tendermint/tm-db" ) @@ -68,6 +70,10 @@ func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci. func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { fmt.Printf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() + capabilityKey := storetypes.NewKVStoreKey(capabilitytypes.StoreKey) + kvStore := app.GetCommitMultiStore().GetKVStore(capabilityKey) + fmt.Printf("kvStore %v\n", kvStore) + return app.BeginBlock(request) } From 3627aff668b6703028cf5a1213d3a388edef4ad8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 13:46:31 -0400 Subject: [PATCH 100/140] refactor: remove rootDir --- node/cmd/root.go | 10 +++------- node/utils/start_node.go | 2 +- node/utils/start_node_test.go | 13 ++++--------- x/blob/genesis.go | 3 --- 4 files changed, 8 insertions(+), 20 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index eedb98cef8..202473bc7f 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -4,7 +4,6 @@ import ( "context" "fmt" "os" - "path/filepath" "time" "github.com/celestiaorg/celestia-app/node/utils" @@ -15,24 +14,21 @@ import ( var cfgFile string -const rootDir = "rootDir" - // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { - dbPath := filepath.Join(rootDir, "data") - db, err := tmdb.NewGoLevelDB("application", dbPath) + config := utils.GetConfig() + db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { return err } multiplexer := utils.NewMultiplexer(db) - config := utils.GetConfig() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, rootDir) + cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer) defer cleanup() if err != nil { fmt.Printf("failed to start node: %v\n", err) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 34ccffb967..b90bac6f57 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -13,7 +13,7 @@ import ( tmdb "github.com/tendermint/tm-db" ) -func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer, rootDir string) (cctx testnode.Context, cleanup func() error, err error) { +func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, cleanup func() error, err error) { basePath, err := genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, nil, err diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index dc5a980c90..cb255ebab7 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -2,7 +2,6 @@ package utils_test import ( "context" - "fmt" "testing" "time" @@ -13,25 +12,21 @@ import ( ) func TestStartNode(t *testing.T) { - dbPath := t.TempDir() - db, err := tmdb.NewGoLevelDB("application", dbPath) + config := utils.GetConfig() + db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) require.NoError(t, err) multiplexer := utils.NewMultiplexer(db) - config := utils.GetConfig() - - tempDir := t.TempDir() ctx, cancel := context.WithCancel(context.Background()) defer cancel() - cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer, tempDir) + cctx, cleanup, err := utils.StartNode(ctx, config, multiplexer) defer cleanup() require.NoError(t, err) - fmt.Printf("chainID %v\n", cctx.ChainID) assert.Eventually(t, func() bool { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) - return latestHeight > 5 + return latestHeight > 10 }, time.Second*10, time.Second) } diff --git a/x/blob/genesis.go b/x/blob/genesis.go index 4b38eaa9a3..8076f9eb9b 100644 --- a/x/blob/genesis.go +++ b/x/blob/genesis.go @@ -1,8 +1,6 @@ package blob import ( - "fmt" - "github.com/celestiaorg/celestia-app/v2/x/blob/keeper" "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -11,7 +9,6 @@ import ( // InitGenesis initializes the capability module's state from a provided genesis // state. func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - fmt.Printf("celestia-app v2 InitGenesis x/blob genState.Params %v\n", genState.Params) k.SetParams(ctx, genState.Params) } From d5495cbaf68d58bc1c9dae04cb17f79e60a51395 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 13:48:24 -0400 Subject: [PATCH 101/140] auth key does not exist either --- node/utils/multiplexer.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index faf399532d..d521ccc6c4 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -5,7 +5,7 @@ import ( v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" storetypes "github.com/cosmos/cosmos-sdk/store/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" abci "github.com/tendermint/tendermint/abci/types" tmdb "github.com/tendermint/tm-db" ) @@ -70,8 +70,8 @@ func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci. func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { fmt.Printf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - capabilityKey := storetypes.NewKVStoreKey(capabilitytypes.StoreKey) - kvStore := app.GetCommitMultiStore().GetKVStore(capabilityKey) + authKey := storetypes.NewKVStoreKey(authtypes.StoreKey) + kvStore := app.GetCommitMultiStore().GetKVStore(authKey) fmt.Printf("kvStore %v\n", kvStore) return app.BeginBlock(request) From cc567043ce70fb4e14eef3b2b855996cf4145312 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 14:22:37 -0400 Subject: [PATCH 102/140] explicitly setting rootDir does not resolve --- node/cmd/root.go | 1 + node/utils/config.go | 1 + node/utils/start_node_test.go | 2 ++ 3 files changed, 4 insertions(+) diff --git a/node/cmd/root.go b/node/cmd/root.go index 202473bc7f..4fe2178805 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -19,6 +19,7 @@ var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { config := utils.GetConfig() + fmt.Printf("config.TMConfig.DBDir(): %v\n", config.TmConfig.DBDir()) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { return err diff --git a/node/utils/config.go b/node/utils/config.go index 7295f71b27..9c7f4fdec7 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -11,6 +11,7 @@ func GetConfig() *testnode.Config { tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" + tmConfig.RootDir = "/Users/rootulp/.celestia-app" consensusParams := testnode.DefaultConsensusParams() consensusParams.Version.AppVersion = v1.Version diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index cb255ebab7..6f34690e55 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -2,6 +2,7 @@ package utils_test import ( "context" + "fmt" "testing" "time" @@ -13,6 +14,7 @@ import ( func TestStartNode(t *testing.T) { config := utils.GetConfig() + fmt.Printf("config.TMConfig.DBDir(): %v\n", config.TmConfig.DBDir()) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) require.NoError(t, err) From 55e74b0e867119926a97110fc5c1891fad2ab58a Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 16:05:05 -0400 Subject: [PATCH 103/140] enable debug logs for CometBFT --- node/go.mod | 9 ++++----- node/go.sum | 2 -- node/utils/config.go | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/node/go.mod b/node/go.mod index f65ccb359f..154e0d0d12 100644 --- a/node/go.mod +++ b/node/go.mod @@ -209,16 +209,15 @@ replace ( cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() github.com/celestiaorg/celestia-app/v2 => ../ + // replace celestia-app v3 with a localy copy so that we can modify it's modules.go github.com/celestiaorg/celestia-app/v3 => ../../celestia-app-v3 - - // -------------------------------------- - // --- Unmodified replace statements --- - // -------------------------------------- github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 + // github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 + // replace celestia-core with a local copy so we can debug why handshake doesn't occur + github.com/tendermint/tendermint => ../../celestia-core ) diff --git a/node/go.sum b/node/go.sum index 5d070d4c76..f2fe70359b 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,8 +311,6 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= -github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= diff --git a/node/utils/config.go b/node/utils/config.go index 9c7f4fdec7..2d6c3e37d9 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -7,7 +7,7 @@ import ( func GetConfig() *testnode.Config { tmConfig := testnode.DefaultTendermintConfig() - tmConfig.LogLevel = "error" + tmConfig.LogLevel = "DEBUG" tmConfig.P2P.ListenAddress = "tcp://127.0.0.1:26656" tmConfig.RPC.ListenAddress = "tcp://127.0.0.1:26657" tmConfig.RPC.GRPCListenAddress = "tcp://127.0.0.1:26658" From df47ab0c0bc77877b3fcf4dc9d3f49e7bf0fa1a9 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 17:04:14 -0400 Subject: [PATCH 104/140] "kv store with key KVStoreKey{0x1400466f4b0, capability} has not been registered in stores" --- node/cmd/root.go | 8 ++++++-- node/utils/multiplexer.go | 12 ++++++++---- node/utils/start_node_test.go | 13 ++++++++++--- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 4fe2178805..9d4e7b496f 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "os" + "path/filepath" "time" "github.com/celestiaorg/celestia-app/node/utils" @@ -19,8 +20,11 @@ var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { config := utils.GetConfig() - fmt.Printf("config.TMConfig.DBDir(): %v\n", config.TmConfig.DBDir()) - db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) + fmt.Printf("config.TmConfig.RootDir: %v\n", config.TmConfig.RootDir) + fmt.Printf("config.TmConfig.DBDir(): %v\n", config.TmConfig.DBDir()) + dbPath := filepath.Join(config.TmConfig.RootDir, "data") + fmt.Printf("dbPath: %v\n", dbPath) + db, err := tmdb.NewGoLevelDB("application", dbPath) if err != nil { return err } diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index d521ccc6c4..87b94f84a8 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -5,7 +5,7 @@ import ( v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" storetypes "github.com/cosmos/cosmos-sdk/store/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" abci "github.com/tendermint/tendermint/abci/types" tmdb "github.com/tendermint/tm-db" ) @@ -70,9 +70,13 @@ func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci. func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { fmt.Printf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - authKey := storetypes.NewKVStoreKey(authtypes.StoreKey) - kvStore := app.GetCommitMultiStore().GetKVStore(authKey) - fmt.Printf("kvStore %v\n", kvStore) + cms := app.GetCommitMultiStore() + key := storetypes.NewKVStoreKey(capabilitytypes.StoreKey) + // store := cms.GetStore(key) + // fmt.Printf("store %v\n", store) + // kvStore := cms.GetKVStore(key) + commitKVStore := cms.GetCommitKVStore(key) + fmt.Printf("kvStore %v\n", commitKVStore) return app.BeginBlock(request) } diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index 6f34690e55..5c3c5d14d1 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -3,6 +3,7 @@ package utils_test import ( "context" "fmt" + "path/filepath" "testing" "time" @@ -13,11 +14,17 @@ import ( ) func TestStartNode(t *testing.T) { + // fmt.Printf("config.TMConfig.DBDir(): %v\n", config.TmConfig.DBDir()) + // db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) + // require.NoError(t, err) + config := utils.GetConfig() - fmt.Printf("config.TMConfig.DBDir(): %v\n", config.TmConfig.DBDir()) - db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) + fmt.Printf("config.TmConfig.RootDir: %v\n", config.TmConfig.RootDir) + fmt.Printf("config.TmConfig.DBDir(): %v\n", config.TmConfig.DBDir()) + dbPath := filepath.Join(config.TmConfig.RootDir, "data") + fmt.Printf("dbPath: %v\n", dbPath) + db, err := tmdb.NewGoLevelDB("application", dbPath) require.NoError(t, err) - multiplexer := utils.NewMultiplexer(db) ctx, cancel := context.WithCancel(context.Background()) From f71d1a2d31c5fd23e3769944610a714983fa3ea8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Wed, 14 Aug 2024 17:08:23 -0400 Subject: [PATCH 105/140] delete root dir --- node/cmd/root.go | 5 +++-- node/utils/start_node_test.go | 11 +++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 9d4e7b496f..edac9b0b45 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -20,8 +20,9 @@ var rootCmd = &cobra.Command{ Use: "node", RunE: func(cmd *cobra.Command, args []string) error { config := utils.GetConfig() - fmt.Printf("config.TmConfig.RootDir: %v\n", config.TmConfig.RootDir) - fmt.Printf("config.TmConfig.DBDir(): %v\n", config.TmConfig.DBDir()) + fmt.Printf("Deleting root dir: %v\n", config.TmConfig.RootDir) + os.RemoveAll(config.TmConfig.RootDir) + dbPath := filepath.Join(config.TmConfig.RootDir, "data") fmt.Printf("dbPath: %v\n", dbPath) db, err := tmdb.NewGoLevelDB("application", dbPath) diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index 5c3c5d14d1..1d90dfeea8 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -3,6 +3,7 @@ package utils_test import ( "context" "fmt" + "os" "path/filepath" "testing" "time" @@ -14,17 +15,15 @@ import ( ) func TestStartNode(t *testing.T) { - // fmt.Printf("config.TMConfig.DBDir(): %v\n", config.TmConfig.DBDir()) - // db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) - // require.NoError(t, err) - config := utils.GetConfig() - fmt.Printf("config.TmConfig.RootDir: %v\n", config.TmConfig.RootDir) - fmt.Printf("config.TmConfig.DBDir(): %v\n", config.TmConfig.DBDir()) + fmt.Printf("Deleting root dir: %v\n", config.TmConfig.RootDir) + os.RemoveAll(config.TmConfig.RootDir) + dbPath := filepath.Join(config.TmConfig.RootDir, "data") fmt.Printf("dbPath: %v\n", dbPath) db, err := tmdb.NewGoLevelDB("application", dbPath) require.NoError(t, err) + multiplexer := utils.NewMultiplexer(db) ctx, cancel := context.WithCancel(context.Background()) From 8bf36bf88ecc3a0f9ec7bedb66a710c9e59bc79c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 12:31:02 -0400 Subject: [PATCH 106/140] working prototype! --- node/utils/apps.go | 2 +- node/utils/multiplexer.go | 2 ++ node/utils/start_node_test.go | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/node/utils/apps.go b/node/utils/apps.go index f74eda1c43..5e90553d6b 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -47,5 +47,5 @@ func NewAppV3(db tmdb.DB) *appV3.App { invCheckPeriod := uint(1) encodingConfig := encodingV3.MakeConfig(appV3.ModuleEncodingRegisters...) appOptions := NoopAppOptions{} - return appV3.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, appOptions) + return appV3.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) } diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 87b94f84a8..b914dc8876 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -115,10 +115,12 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) if m.nextAppVersion == 3 { m.application = NewAppV3(m.db) + m.application.Info(abci.RequestInfo{}) } m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) + // Info is called so that the v3 state machine initializes the stores for v3 // appHash := m.RunMigrations() // got.Data = appHash return got diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index 1d90dfeea8..dac55ef4f6 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -36,5 +36,5 @@ func TestStartNode(t *testing.T) { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) return latestHeight > 10 - }, time.Second*10, time.Second) + }, time.Second*30, time.Second) } From da51aead5d1e3327eaec0e5e8921a4f4615d606a Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 12:32:08 -0400 Subject: [PATCH 107/140] move comment --- node/utils/multiplexer.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index b914dc8876..251fea4f59 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -115,12 +115,13 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) if m.nextAppVersion == 3 { m.application = NewAppV3(m.db) + + // Info is called so that the v3 state machine initializes the stores for v3 m.application.Info(abci.RequestInfo{}) } m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) - // Info is called so that the v3 state machine initializes the stores for v3 // appHash := m.RunMigrations() // got.Data = appHash return got From 8380d0ec4103ff40259c9604911a1c4d904ea040 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 12:49:56 -0400 Subject: [PATCH 108/140] prevent accidental downgrade from v3 -> v2 --- node/utils/config.go | 2 +- node/utils/start_node_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/node/utils/config.go b/node/utils/config.go index 2d6c3e37d9..7e012c765c 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -14,7 +14,7 @@ func GetConfig() *testnode.Config { tmConfig.RootDir = "/Users/rootulp/.celestia-app" consensusParams := testnode.DefaultConsensusParams() - consensusParams.Version.AppVersion = v1.Version + consensusParams.Version.AppVersion = v1.Version // start the prototype on v1 return testnode.DefaultConfig(). WithTendermintConfig(tmConfig). diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index dac55ef4f6..af197ba230 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -35,6 +35,6 @@ func TestStartNode(t *testing.T) { assert.Eventually(t, func() bool { latestHeight, err := cctx.LatestHeight() require.NoError(t, err) - return latestHeight > 10 + return latestHeight > 15 }, time.Second*30, time.Second) } From 88f7fa502ee801f6ed96a3b21a6d150bcb31a421 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 12:51:03 -0400 Subject: [PATCH 109/140] no need to call info b/c v3 does not need to support v1 and v2 --- node/utils/multiplexer.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 251fea4f59..87b94f84a8 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -115,9 +115,6 @@ func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer upgrade is pending from %v to %v\n", m.currentAppVersion, m.nextAppVersion) if m.nextAppVersion == 3 { m.application = NewAppV3(m.db) - - // Info is called so that the v3 state machine initializes the stores for v3 - m.application.Info(abci.RequestInfo{}) } m.currentAppVersion = m.nextAppVersion fmt.Printf("Multiplexer upgrade completed to %v\n", m.currentAppVersion) From c8fb333f6f829602620f34b7d34ba0417e834da7 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:00:25 -0400 Subject: [PATCH 110/140] improve logs --- node/cmd/root.go | 3 +-- node/utils/multiplexer.go | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index edac9b0b45..74b2787561 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -5,7 +5,6 @@ import ( "fmt" "os" "path/filepath" - "time" "github.com/celestiaorg/celestia-app/node/utils" "github.com/spf13/cobra" @@ -44,7 +43,7 @@ var rootCmd = &cobra.Command{ if err != nil { fmt.Printf("waiting for next block failed: %v\n", err) } - time.Sleep(10 * time.Second) + cctx.WaitForHeight(15) return nil }, } diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 87b94f84a8..2f23c1bd58 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -88,7 +88,7 @@ func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeli } func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { - fmt.Printf("Multiplexer EndBlock invoked with current app version %v\n", m.currentAppVersion) + fmt.Printf("Multiplexer EndBlock invoked with current app version %v height %v\n", m.currentAppVersion, request.Height) // Note: the application can't create or delete stores in this method // because it is operating on a branch of state. From 3fe39969ce28c1066166d7ce6d630fbf307ca4c1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:31:41 -0400 Subject: [PATCH 111/140] chore: remove log --- app/square_size.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/square_size.go b/app/square_size.go index 06a0bd0b4c..b09e49688a 100644 --- a/app/square_size.go +++ b/app/square_size.go @@ -1,8 +1,6 @@ package app import ( - "fmt" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -19,8 +17,6 @@ func (app *App) MaxEffectiveSquareSize(ctx sdk.Context) int { return int(appconsts.DefaultGovMaxSquareSize) } - fmt.Printf("MaxEffectiveSquareSize invoked on app version %v\n", app.AppVersion()) - govMax := int(app.BlobKeeper.GovMaxSquareSize(ctx)) hardMax := appconsts.SquareSizeUpperBound(app.AppVersion()) return min(govMax, hardMax) From e30354e84536024caabe64434d23ddbf62c87e87 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:38:21 -0400 Subject: [PATCH 112/140] revert go.mod changes --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4de1b0addc..2e1490fcf0 100644 --- a/go.mod +++ b/go.mod @@ -249,11 +249,11 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 ) diff --git a/go.sum b/go.sum index 5c59dd618e..42ba33e2ce 100644 --- a/go.sum +++ b/go.sum @@ -318,10 +318,10 @@ github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7 h1:nxplQi8w github.com/celestiaorg/bittwister v0.0.0-20231213180407-65cdbaf5b8c7/go.mod h1:1EF5MfOxVf0WC51Gb7pJ6bcZxnXKNAf9pqWtjgPBAYc= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= -github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= -github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= -github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29 h1:HwbA4OegRvXX0aNchBA7Cmu+oIxnH7xRcOhISuDP0ak= +github.com/celestiaorg/celestia-core v1.38.0-tm-v0.34.29/go.mod h1:MyElURdWAOJkOp84WZnfEUJ+OLvTwOOHG2lbK9E8XRI= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16 h1:N2uETI13szEKnGAdKhtTR0EsrpcW0AwRKYER74WLnuw= +github.com/celestiaorg/cosmos-sdk v1.23.0-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= From 2f94921d45eedc504ca134e4bbfca16c49eeedcb Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:39:37 -0400 Subject: [PATCH 113/140] feat: remove things from AppWithMigrations interface --- node/utils/interface.go | 3 --- node/utils/multiplexer.go | 10 ---------- 2 files changed, 13 deletions(-) diff --git a/node/utils/interface.go b/node/utils/interface.go index b08dfcb15d..08ba519e29 100644 --- a/node/utils/interface.go +++ b/node/utils/interface.go @@ -1,7 +1,6 @@ package utils import ( - storetypes "github.com/cosmos/cosmos-sdk/store/types" abci "github.com/tendermint/tendermint/abci/types" ) @@ -9,6 +8,4 @@ type AppWithMigrations interface { abci.Application RunMigrations() []byte - GetCommitMultiStore() storetypes.CommitMultiStore - SetCommitMultiStore(cms storetypes.CommitMultiStore) } diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 2f23c1bd58..d75cce344d 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -4,8 +4,6 @@ import ( "fmt" v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" abci "github.com/tendermint/tendermint/abci/types" tmdb "github.com/tendermint/tm-db" ) @@ -70,14 +68,6 @@ func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci. func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { fmt.Printf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() - cms := app.GetCommitMultiStore() - key := storetypes.NewKVStoreKey(capabilitytypes.StoreKey) - // store := cms.GetStore(key) - // fmt.Printf("store %v\n", store) - // kvStore := cms.GetKVStore(key) - commitKVStore := cms.GetCommitKVStore(key) - fmt.Printf("kvStore %v\n", commitKVStore) - return app.BeginBlock(request) } From 3f81028dd62f24c9349c1d69ed8eee6aece92bf8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:43:26 -0400 Subject: [PATCH 114/140] revert: remove v3 upgrade height --- app/app.go | 13 +++++++------ app/app_test.go | 3 +-- app/test/upgrade_test.go | 4 +--- cmd/celestia-appd/cmd/root.go | 4 +--- node/utils/apps.go | 6 ++---- test/tokenfilter/setup.go | 2 +- test/util/malicious/app.go | 2 +- test/util/test_app.go | 4 +--- test/util/testnode/config.go | 2 -- 9 files changed, 15 insertions(+), 25 deletions(-) diff --git a/app/app.go b/app/app.go index d88399fea6..dd9c58bdc2 100644 --- a/app/app.go +++ b/app/app.go @@ -166,9 +166,6 @@ type App struct { // upgradeHeightV2 is used as a coordination mechanism for the height-based // upgrade from v1 to v2. upgradeHeightV2 int64 - // upgradeHeightv3 is a hard-coded mechanism for the height-based - // upgrade from v2 to v3. - upgradeHeightV3 int64 // MsgGateKeeper is used to define which messages are accepted for a given // app version. MsgGateKeeper *ante.MsgVersioningGateKeeper @@ -187,7 +184,6 @@ func New( invCheckPeriod uint, encodingConfig encoding.Config, upgradeHeightV2 int64, - upgradeHeightV3 int64, appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *App { @@ -214,7 +210,6 @@ func New( tkeys: tkeys, memKeys: memKeys, upgradeHeightV2: upgradeHeightV2, - upgradeHeightV3: upgradeHeightV3, } app.ParamsKeeper = initParamsKeeper(appCodec, encodingConfig.Amino, keys[paramstypes.StoreKey], tkeys[paramstypes.TStoreKey]) @@ -459,6 +454,12 @@ func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.R func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { res := app.manager.EndBlock(ctx, req) currentVersion := app.AppVersion() + + // upgradeHeightV3 is a hard-coded height to upgrade from v2 to v3. We use + // this to test the upgrade in the prototype. On mainnet we'll use the + // signalling mechanism so remove this pre-merge. + upgradeHeightV3 := int64(10) + // For v1 only we upgrade using a agreed upon height known ahead of time if currentVersion == v1 { // check that we are at the height before the upgrade @@ -480,7 +481,7 @@ func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.Respo app.SetAppVersion(ctx, newVersion) app.SignalKeeper.ResetTally(ctx) } - } else if req.Height == app.upgradeHeightV3-1 { + } else if req.Height == upgradeHeightV3-1 { app.SetAppVersion(ctx, 3) } return res diff --git a/app/app_test.go b/app/app_test.go index 473e088ef4..219755eb5f 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -18,10 +18,9 @@ func TestNew(t *testing.T) { invCheckPeriod := uint(1) encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) upgradeHeightV2 := int64(0) - upgradeHeightV3 := int64(0) appOptions := NoopAppOptions{} - got := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) + got := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, appOptions) t.Run("initializes ICAHostKeeper", func(t *testing.T) { assert.NotNil(t, got.ICAHostKeeper) diff --git a/app/test/upgrade_test.go b/app/test/upgrade_test.go index 0ab1b80478..7981f6467a 100644 --- a/app/test/upgrade_test.go +++ b/app/test/upgrade_test.go @@ -124,12 +124,10 @@ func TestBlobstreamRemovedInV2(t *testing.T) { func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeightV2 int64) (*app.App, keyring.Keyring) { t.Helper() - upgradeHeightV3 := int64(0) - db := dbm.NewMemDB() chainID := "test_chain" encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, upgradeHeightV3, util.EmptyAppOptions{}) + testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, util.EmptyAppOptions{}) genesisState, _, kr := util.GenesisStateWithSingleValidator(testApp, "account") stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) diff --git a/cmd/celestia-appd/cmd/root.go b/cmd/celestia-appd/cmd/root.go index fa8811223c..6d4663a4d7 100644 --- a/cmd/celestia-appd/cmd/root.go +++ b/cmd/celestia-appd/cmd/root.go @@ -227,14 +227,12 @@ func NewAppServer(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts se if err != nil { panic(err) } - upgradeHeightV3 := int64(0) return app.New( logger, db, traceStore, cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), encoding.MakeConfig(app.ModuleEncodingRegisters...), // Ideally, we would reuse the one created by NewRootCmd. cast.ToInt64(appOpts.Get(UpgradeHeightFlag)), - upgradeHeightV3, appOpts, baseapp.SetPruning(pruningOpts), baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), @@ -259,7 +257,7 @@ func createAppAndExport( appOpts servertypes.AppOptions, ) (servertypes.ExportedApp, error) { config := encoding.MakeConfig(app.ModuleEncodingRegisters...) - celestiaApp := app.New(logger, db, traceStore, uint(1), config, 0, 0, appOpts) + celestiaApp := app.New(logger, db, traceStore, uint(1), config, 0, appOpts) if height != -1 { if err := celestiaApp.LoadHeight(height); err != nil { return servertypes.ExportedApp{}, err diff --git a/node/utils/apps.go b/node/utils/apps.go index 5e90553d6b..1d258c4676 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -17,8 +17,6 @@ import ( const ( // upgradeHeightV2 is the height at which the app should be upgraded to v2. upgradeHeightV2 = int64(5) - // upgradeHeightV2 is the height at which the app should be upgraded to v3. - upgradeHeightV3 = int64(10) ) func GetApplications(db tmdb.DB) map[uint64]AppWithMigrations { @@ -38,7 +36,7 @@ func NewAppV2(db tmdb.DB) *appV2.App { invCheckPeriod := uint(1) encodingConfig := encodingV2.MakeConfig(appV2.ModuleEncodingRegisters...) appOptions := NoopAppOptions{} - return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) + return appV2.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, appOptions) } func NewAppV3(db tmdb.DB) *appV3.App { @@ -47,5 +45,5 @@ func NewAppV3(db tmdb.DB) *appV3.App { invCheckPeriod := uint(1) encodingConfig := encodingV3.MakeConfig(appV3.ModuleEncodingRegisters...) appOptions := NoopAppOptions{} - return appV3.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, upgradeHeightV3, appOptions) + return appV3.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, appOptions) } diff --git a/test/tokenfilter/setup.go b/test/tokenfilter/setup.go index fd77f45358..4e2764eeb4 100644 --- a/test/tokenfilter/setup.go +++ b/test/tokenfilter/setup.go @@ -147,7 +147,7 @@ func SetupWithGenesisValSet(t testing.TB, valSet *tmtypes.ValidatorSet, genAccs encCdc := encoding.MakeConfig(app.ModuleEncodingRegisters...) genesisState := app.NewDefaultGenesisState(encCdc.Codec) app := app.New( - log.NewNopLogger(), db, nil, 5, encCdc, 0, 0, simapp.EmptyAppOptions{}, + log.NewNopLogger(), db, nil, 5, encCdc, 0, simapp.EmptyAppOptions{}, ) // set genesis accounts diff --git a/test/util/malicious/app.go b/test/util/malicious/app.go index 6048b567d0..9212e966d7 100644 --- a/test/util/malicious/app.go +++ b/test/util/malicious/app.go @@ -56,7 +56,7 @@ func New( appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *App { - goodApp := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, 0, 0, appOpts, baseAppOptions...) + goodApp := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, 0, appOpts, baseAppOptions...) badApp := &App{App: goodApp} // set the malicious prepare proposal handler if it is set in the app options diff --git a/test/util/test_app.go b/test/util/test_app.go index 2ad97130e0..131a6fcfb8 100644 --- a/test/util/test_app.go +++ b/test/util/test_app.go @@ -90,7 +90,6 @@ func NewTestApp() *app.App { cast.ToUint(emptyOpts.Get(server.FlagInvCheckPeriod)), encCfg, 0, - 0, emptyOpts, ) } @@ -430,8 +429,7 @@ func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeightV2 int64) (*app.Ap db := dbm.NewMemDB() chainID := "test_chain" encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - upgradeHeightV3 := int64(0) - testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, upgradeHeightV3, EmptyAppOptions{}) + testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, EmptyAppOptions{}) genesisState, _, kr := GenesisStateWithSingleValidator(testApp, "account") stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index 2e6a9e9c26..00b10b8ca4 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -181,7 +181,6 @@ func DefaultAppCreator() srvtypes.AppCreator { 0, // invCheckPerid encodingConfig, 0, // v2 upgrade height - 0, // v3 upgrade height simapp.EmptyAppOptions{}, baseapp.SetMinGasPrices(fmt.Sprintf("%v%v", appconsts.DefaultMinGasPrice, app.BondDenom)), ) @@ -198,7 +197,6 @@ func CustomAppCreator(minGasPrice string) srvtypes.AppCreator { 0, // invCheckPerid encodingConfig, 0, // v2 upgrade height - 0, // v3 upgrade height simapp.EmptyAppOptions{}, baseapp.SetMinGasPrices(minGasPrice), ) From 31d326a3ebb231780e8346b6cec2b3a239332dd0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:47:04 -0400 Subject: [PATCH 115/140] revert: remove cms --- app/app.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/app/app.go b/app/app.go index dd9c58bdc2..8da3a99538 100644 --- a/app/app.go +++ b/app/app.go @@ -795,11 +795,3 @@ func (app *App) InitializeAppVersion(ctx sdk.Context) { app.SetAppVersion(ctx, appVersion) } } - -func (app *App) SetCommitMultiStore(cms storetypes.CommitMultiStore) { - app.SetCMS(cms) -} - -func (app *App) GetCommitMultiStore() storetypes.CommitMultiStore { - return app.CommitMultiStore() -} From 94e1076469c41204a1df9a35123d0744bb5c48f1 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:47:58 -0400 Subject: [PATCH 116/140] revert: variable rename --- app/app_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/app_test.go b/app/app_test.go index 219755eb5f..a991981d41 100644 --- a/app/app_test.go +++ b/app/app_test.go @@ -17,10 +17,10 @@ func TestNew(t *testing.T) { traceStore := &NoopWriter{} invCheckPeriod := uint(1) encodingConfig := encoding.MakeConfig(app.ModuleEncodingRegisters...) - upgradeHeightV2 := int64(0) + upgradeHeight := int64(0) appOptions := NoopAppOptions{} - got := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeightV2, appOptions) + got := app.New(logger, db, traceStore, invCheckPeriod, encodingConfig, upgradeHeight, appOptions) t.Run("initializes ICAHostKeeper", func(t *testing.T) { assert.NotNil(t, got.ICAHostKeeper) From 09950e4bf9b21cbacfb62ff0c8189d520ff19974 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:50:06 -0400 Subject: [PATCH 117/140] add TODO --- app/modules.go | 1 + 1 file changed, 1 insertion(+) diff --git a/app/modules.go b/app/modules.go index bf2accda41..5f0f2c73d5 100644 --- a/app/modules.go +++ b/app/modules.go @@ -91,6 +91,7 @@ var ( ModuleEncodingRegisters = extractRegisters(ModuleBasics) ) +// TODO: remove this constant. The v2 state machin shouldn't need to support app version 3. const v3 = uint64(3) func (app *App) setupModuleManager(skipGenesisInvariants bool) error { From 310e52208ca43702c792f45dbebe377dd3b0c073 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:50:13 -0400 Subject: [PATCH 118/140] revert: variable rename --- app/test/upgrade_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/test/upgrade_test.go b/app/test/upgrade_test.go index 7981f6467a..46843dcc76 100644 --- a/app/test/upgrade_test.go +++ b/app/test/upgrade_test.go @@ -122,12 +122,12 @@ func TestBlobstreamRemovedInV2(t *testing.T) { require.Error(t, err) } -func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeightV2 int64) (*app.App, keyring.Keyring) { +func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeight int64) (*app.App, keyring.Keyring) { t.Helper() db := dbm.NewMemDB() chainID := "test_chain" encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, util.EmptyAppOptions{}) + testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeight, util.EmptyAppOptions{}) genesisState, _, kr := util.GenesisStateWithSingleValidator(testApp, "account") stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) From 31f2e6fb7bcfb404e3d07c7a938687f4f06f1fe5 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:50:25 -0400 Subject: [PATCH 119/140] refactor: remove unnecessary function --- node/utils/apps.go | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/node/utils/apps.go b/node/utils/apps.go index 1d258c4676..0ed0d7290a 100644 --- a/node/utils/apps.go +++ b/node/utils/apps.go @@ -5,11 +5,8 @@ import ( appV2 "github.com/celestiaorg/celestia-app/v2/app" encodingV2 "github.com/celestiaorg/celestia-app/v2/app/encoding" - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" appV3 "github.com/celestiaorg/celestia-app/v3/app" encodingV3 "github.com/celestiaorg/celestia-app/v3/app/encoding" - v3 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v3" "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) @@ -19,17 +16,6 @@ const ( upgradeHeightV2 = int64(5) ) -func GetApplications(db tmdb.DB) map[uint64]AppWithMigrations { - appV2 := NewAppV2(db) - appV3 := NewAppV3(db) - - return map[uint64]AppWithMigrations{ - v1.Version: appV2, - v2.Version: appV2, - v3.Version: appV3, - } -} - func NewAppV2(db tmdb.DB) *appV2.App { logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) traceStore := &NoopWriter{} From af3eda967600c333e07d966250f339990099858c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:56:39 -0400 Subject: [PATCH 120/140] remove comments for me --- node/utils/multiplexer.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index d75cce344d..6ac3cdd4ad 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -80,8 +80,6 @@ func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeli func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { fmt.Printf("Multiplexer EndBlock invoked with current app version %v height %v\n", m.currentAppVersion, request.Height) - // Note: the application can't create or delete stores in this method - // because it is operating on a branch of state. app := m.getCurrentApp() got := app.EndBlock(request) if got.ConsensusParamUpdates != nil && got.ConsensusParamUpdates.Version != nil { @@ -97,7 +95,6 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo func (m *Multiplexer) Commit() abci.ResponseCommit { fmt.Printf("Multiplexer Commit invoked with current app version %v\n", m.currentAppVersion) - // Note: the application can create or delete stores in this method app := m.getCurrentApp() got := app.Commit() From acfdf666628158df484f30f053c002d8060f557d Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:56:46 -0400 Subject: [PATCH 121/140] refactor: inline func --- node/utils/start_node.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/node/utils/start_node.go b/node/utils/start_node.go index b90bac6f57..7c7698969a 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -56,7 +56,7 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode config.TmConfig, privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), nodeKey, - newProxyClientCreator(multiplexer), + proxy.NewLocalClientCreator(multiplexer), node.DefaultGenesisDocProviderFunc(config.TmConfig), node.DefaultDBProvider, node.DefaultMetricsProvider(config.TmConfig.Instrumentation), @@ -70,7 +70,3 @@ func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode } return cometNode, cleanup, err } - -func newProxyClientCreator(multiplexer *Multiplexer) proxy.ClientCreator { - return proxy.NewLocalClientCreator(multiplexer) -} From 0463d31e80850015b42854be5062cb3643627cc0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:58:27 -0400 Subject: [PATCH 122/140] revert: remove logs --- x/blob/keeper/params.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/x/blob/keeper/params.go b/x/blob/keeper/params.go index be1bc713fb..e4e4eee3c1 100644 --- a/x/blob/keeper/params.go +++ b/x/blob/keeper/params.go @@ -1,8 +1,6 @@ package keeper import ( - "fmt" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -28,11 +26,6 @@ func (k Keeper) GasPerBlobByte(ctx sdk.Context) (res uint32) { // GovMaxSquareSize returns the GovMaxSquareSize param func (k Keeper) GovMaxSquareSize(ctx sdk.Context) (res uint64) { - if k.paramStore.Has(ctx, types.KeyGovMaxSquareSize) { - fmt.Printf("param store has key %v\n", string(types.KeyGovMaxSquareSize)) - } else { - fmt.Printf("param store does not have key %v\n", string(types.KeyGovMaxSquareSize)) - } k.paramStore.Get(ctx, types.KeyGovMaxSquareSize, &res) return res } From 3469eb1916e3f63b755ae299ce6b8fd3f5a953d8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 13:58:37 -0400 Subject: [PATCH 123/140] remove log --- node/utils/start_node_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index af197ba230..ac443a4162 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -20,7 +20,6 @@ func TestStartNode(t *testing.T) { os.RemoveAll(config.TmConfig.RootDir) dbPath := filepath.Join(config.TmConfig.RootDir, "data") - fmt.Printf("dbPath: %v\n", dbPath) db, err := tmdb.NewGoLevelDB("application", dbPath) require.NoError(t, err) From 9224788a633bc353260c11e21ba535386fed466c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 16:35:45 -0400 Subject: [PATCH 124/140] revert: extract testnode refactors to separate PR --- test/util/genesis/files.go | 28 ++--- test/util/test_app.go | 125 ++++++++++--------- test/util/testnode/comet_node.go | 47 ------- test/util/testnode/config.go | 19 +-- test/util/testnode/full_node.go | 58 +++++++++ test/util/testnode/full_node_test.go | 136 +++++++++++++++++++++ test/util/testnode/logger.go | 24 ---- test/util/testnode/network.go | 42 +++++-- test/util/testnode/node_interaction_api.go | 61 +++++---- test/util/testnode/rpc_client.go | 56 +++++++-- test/util/testnode/utils.go | 56 +-------- 11 files changed, 390 insertions(+), 262 deletions(-) delete mode 100644 test/util/testnode/comet_node.go create mode 100644 test/util/testnode/full_node.go create mode 100644 test/util/testnode/full_node_test.go delete mode 100644 test/util/testnode/logger.go diff --git a/test/util/genesis/files.go b/test/util/genesis/files.go index ff702d3c15..c8de7eec03 100644 --- a/test/util/genesis/files.go +++ b/test/util/genesis/files.go @@ -11,50 +11,50 @@ import ( "github.com/tendermint/tendermint/privval" ) -// InitFiles initializes the files for a new Comet node with the provided +// InitFiles initializes the files for a new tendermint node with the provided // genesis. It will use the validatorIndex to save the validator's consensus // key. func InitFiles( - rootDir string, - tmConfig *config.Config, - genesis *Genesis, + dir string, + tmCfg *config.Config, + g *Genesis, validatorIndex int, -) (basePath string, err error) { - val, has := genesis.Validator(validatorIndex) +) (string, error) { + val, has := g.Validator(validatorIndex) if !has { return "", fmt.Errorf("validator %d not found", validatorIndex) } - basePath = filepath.Join(rootDir, ".celestia-app") - tmConfig.SetRoot(basePath) + basePath := filepath.Join(dir, ".celestia-app") + tmCfg.SetRoot(basePath) // save the genesis file configPath := filepath.Join(basePath, "config") - err = os.MkdirAll(configPath, os.ModePerm) + err := os.MkdirAll(configPath, os.ModePerm) if err != nil { return "", err } - genesisDoc, err := genesis.Export() + gDoc, err := g.Export() if err != nil { return "", fmt.Errorf("exporting genesis: %w", err) } - err = genesisDoc.SaveAs(tmConfig.GenesisFile()) + err = gDoc.SaveAs(tmCfg.GenesisFile()) if err != nil { return "", err } - pvStateFile := tmConfig.PrivValidatorStateFile() + pvStateFile := tmCfg.PrivValidatorStateFile() if err := tmos.EnsureDir(filepath.Dir(pvStateFile), 0o777); err != nil { return "", err } - pvKeyFile := tmConfig.PrivValidatorKeyFile() + pvKeyFile := tmCfg.PrivValidatorKeyFile() if err := tmos.EnsureDir(filepath.Dir(pvKeyFile), 0o777); err != nil { return "", err } filePV := privval.NewFilePV(val.ConsensusKey, pvKeyFile, pvStateFile) filePV.Save() - nodeKeyFile := tmConfig.NodeKeyFile() + nodeKeyFile := tmCfg.NodeKeyFile() if err := tmos.EnsureDir(filepath.Dir(nodeKeyFile), 0o777); err != nil { return "", err } diff --git a/test/util/test_app.go b/test/util/test_app.go index 131a6fcfb8..8b4a433e9c 100644 --- a/test/util/test_app.go +++ b/test/util/test_app.go @@ -3,17 +3,18 @@ package util import ( "encoding/json" "fmt" + "os" "testing" "time" - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - v2 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v2" - "github.com/celestiaorg/celestia-app/v2/test/util/genesis" - "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/v3/app" + "github.com/celestiaorg/celestia-app/v3/app/encoding" + "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" + v1 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v1" + v2 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v2" + "github.com/celestiaorg/celestia-app/v3/test/util/genesis" + "github.com/celestiaorg/celestia-app/v3/test/util/testfactory" + "github.com/celestiaorg/celestia-app/v3/test/util/testnode" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" @@ -36,11 +37,14 @@ import ( tmtypes "github.com/tendermint/tendermint/types" dbm "github.com/tendermint/tm-db" + slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) const ChainID = testfactory.ChainID +var GenesisTime = time.Date(2023, 1, 1, 1, 1, 1, 1, time.UTC).UTC() + // Get flags every time the simulator is run func init() { simapp.GetSimulatorFlags() @@ -86,7 +90,7 @@ func NewTestApp() *app.App { encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) return app.New( - log.NewNopLogger(), db, nil, + log.NewTMLogger(os.Stdout), db, nil, cast.ToUint(emptyOpts.Get(server.FlagInvCheckPeriod)), encCfg, 0, @@ -96,13 +100,16 @@ func NewTestApp() *app.App { // SetupDeterministicGenesisState sets genesis on initialized testApp with the provided arguments. func SetupDeterministicGenesisState(testApp *app.App, pubKeys []cryptotypes.PubKey, balance int64, cparams *tmproto.ConsensusParams) (keyring.Keyring, []genesis.Account, error) { - // create genesis + slashingParams := slashingtypes.NewParams(2, sdk.OneDec(), time.Minute, sdk.OneDec(), sdk.OneDec()) + + // Create genesis gen := genesis.NewDefaultGenesis(). WithChainID(ChainID). WithConsensusParams(cparams). - WithGenesisTime(time.Date(2023, 1, 1, 1, 1, 1, 1, time.UTC).UTC()) + WithModifiers(genesis.SetSlashingParams(testApp.AppCodec(), slashingParams)). + WithGenesisTime(GenesisTime) - // add accounts to genesis + // Add accounts to genesis for i, pk := range pubKeys { err := gen.AddAccount(genesis.Account{ PubKey: pk, @@ -114,8 +121,8 @@ func SetupDeterministicGenesisState(testApp *app.App, pubKeys []cryptotypes.PubK } } - // add validator to genesis - err := AddDeterministicValidatorToGenesis(gen) + // Add validators to genesis + err := AddDeterministicValidatorsToGenesis(gen) if err != nil { return nil, nil, fmt.Errorf("failed to add validator: %w", err) } @@ -125,14 +132,14 @@ func SetupDeterministicGenesisState(testApp *app.App, pubKeys []cryptotypes.PubK return nil, nil, fmt.Errorf("failed to export genesis doc: %w", err) } - // initialise test app against genesis + // Initialise test app against genesis testApp.Info(abci.RequestInfo{}) abciParams := &abci.ConsensusParams{ Block: &abci.BlockParams{ - // choose some value large enough to not bottleneck the max square + // Choose some value large enough to not bottleneck the max square // size - MaxBytes: int64(appconsts.DefaultSquareSizeUpperBound*appconsts.DefaultSquareSizeUpperBound) * appconsts.ContinuationSparseShareContentSize, + MaxBytes: int64(appconsts.DefaultUpperBoundMaxBytes), MaxGas: cparams.Block.MaxGas, }, Evidence: &cparams.Evidence, @@ -140,7 +147,7 @@ func SetupDeterministicGenesisState(testApp *app.App, pubKeys []cryptotypes.PubK Version: &cparams.Version, } - // init chain will set the validator set and initialize the genesis accounts + // Init chain will set the validator set and initialize the genesis accounts testApp.InitChain( abci.RequestInitChain{ Time: gen.GenesisTime, @@ -151,7 +158,7 @@ func SetupDeterministicGenesisState(testApp *app.App, pubKeys []cryptotypes.PubK }, ) - // commit genesis changes + // Commit genesis changes testApp.Commit() testApp.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{ ChainID: ChainID, @@ -181,7 +188,7 @@ func NewTestAppWithGenesisSet(cparams *tmproto.ConsensusParams, genAccounts ...s Block: &abci.BlockParams{ // choose some value large enough to not bottleneck the max square // size - MaxBytes: int64(appconsts.DefaultSquareSizeUpperBound*appconsts.DefaultSquareSizeUpperBound) * appconsts.ContinuationSparseShareContentSize, + MaxBytes: int64(appconsts.DefaultUpperBoundMaxBytes), MaxGas: cparams.Block.MaxGas, }, Evidence: &cparams.Evidence, @@ -189,14 +196,12 @@ func NewTestAppWithGenesisSet(cparams *tmproto.ConsensusParams, genAccounts ...s Version: &cparams.Version, } - genesisTime := time.Date(2023, 1, 1, 1, 1, 1, 1, time.UTC).UTC() - testApp.Info(abci.RequestInfo{}) // init chain will set the validator set and initialize the genesis accounts testApp.InitChain( abci.RequestInitChain{ - Time: genesisTime, + Time: GenesisTime, Validators: []abci.ValidatorUpdate{}, ConsensusParams: abciParams, AppStateBytes: stateBytes, @@ -206,47 +211,47 @@ func NewTestAppWithGenesisSet(cparams *tmproto.ConsensusParams, genAccounts ...s return testApp, valSet, kr } -// AddDeterministicValidatorToGenesis adds a single deterministic validator to the genesis. -func AddDeterministicValidatorToGenesis(g *genesis.Genesis) error { - // hardcoded keys for deterministic account creation - mnemo := "body world north giggle crop reduce height copper damp next verify orphan lens loan adjust inform utility theory now ranch motion opinion crowd fun" - consensusKey := ed25519.GenPrivKeyFromSecret([]byte("12345678901234567890123456389012")) - networkKey := ed25519.GenPrivKeyFromSecret([]byte("12345678901234567890123456786012")) - - val := genesis.Validator{ - KeyringAccount: genesis.KeyringAccount{ - Name: "validator1", - InitialTokens: 1_000_000_000, - }, - Stake: 1_000_000, - ConsensusKey: consensusKey, - NetworkKey: networkKey, - } +// AddDeterministicValidatorToGenesis adds a set of five validators to the genesis. +func AddDeterministicValidatorsToGenesis(g *genesis.Genesis) error { + for i := range FixedMnemonics { + val := genesis.Validator{ + KeyringAccount: genesis.KeyringAccount{ + Name: "validator" + fmt.Sprint(i), + InitialTokens: 5_000_000_000, + }, + Stake: 1_000_000_000, + ConsensusKey: FixedConsensusPrivKeys[i], + NetworkKey: FixedNetworkPrivKeys[i], + } - // initialize the validator's genesis account in the keyring - rec, err := g.Keyring().NewAccount(val.Name, mnemo, "", "", hd.Secp256k1) - if err != nil { - return fmt.Errorf("failed to create account: %w", err) - } + // Initialize the validator's genesis account in the keyring + rec, err := g.Keyring().NewAccount(val.Name, FixedMnemonics[i], "", "", hd.Secp256k1) + if err != nil { + return fmt.Errorf("failed to create account: %w", err) + } - validatorPubKey, err := rec.GetPubKey() - if err != nil { - return fmt.Errorf("failed to get pubkey: %w", err) - } + validatorPubKey, err := rec.GetPubKey() + if err != nil { + return fmt.Errorf("failed to get pubkey: %w", err) + } - // make account from keyring account - account := genesis.Account{ - PubKey: validatorPubKey, - Balance: val.KeyringAccount.InitialTokens, - Name: val.Name, - } + // Construct account from keyring account + account := genesis.Account{ + PubKey: validatorPubKey, + Balance: val.KeyringAccount.InitialTokens, + Name: val.Name, + } - // add the validator's account to the genesis - if err := g.AddAccount(account); err != nil { - return fmt.Errorf("failed to add account: %w", err) + // Add the validator's account to the genesis + if err := g.AddAccount(account); err != nil { + return fmt.Errorf("failed to add account: %w", err) + } + if err := g.AddValidator(val); err != nil { + return fmt.Errorf("failed to add validator: %w", err) + } } - return g.AddValidator(val) + return nil } // AddAccount mimics the cli addAccount command, providing an @@ -423,13 +428,13 @@ func NewDefaultGenesisState(cdc codec.JSONCodec) app.GenesisState { return app.ModuleBasics.DefaultGenesis(cdc) } -func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeightV2 int64) (*app.App, keyring.Keyring) { +func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeight int64) (*app.App, keyring.Keyring) { t.Helper() db := dbm.NewMemDB() chainID := "test_chain" encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeightV2, EmptyAppOptions{}) + testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeight, EmptyAppOptions{}) genesisState, _, kr := GenesisStateWithSingleValidator(testApp, "account") stateBytes, err := json.MarshalIndent(genesisState, "", " ") require.NoError(t, err) diff --git a/test/util/testnode/comet_node.go b/test/util/testnode/comet_node.go deleted file mode 100644 index da0e566b37..0000000000 --- a/test/util/testnode/comet_node.go +++ /dev/null @@ -1,47 +0,0 @@ -package testnode - -import ( - "path/filepath" - - "github.com/cosmos/cosmos-sdk/client/flags" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/tendermint/tendermint/node" - "github.com/tendermint/tendermint/p2p" - "github.com/tendermint/tendermint/privval" - "github.com/tendermint/tendermint/proxy" - tmdb "github.com/tendermint/tm-db" -) - -// NewCometNode creates a ready to use comet node that operates a single -// validator celestia-app network. It expects that all configuration files are -// already initialized and saved to the baseDir. -func NewCometNode(baseDir string, config *UniversalTestingConfig) (*node.Node, servertypes.Application, error) { - logger := NewLogger(config) - dbPath := filepath.Join(config.TmConfig.RootDir, "data") - db, err := tmdb.NewGoLevelDB("application", dbPath) - if err != nil { - return nil, nil, err - } - - config.AppOptions.Set(flags.FlagHome, baseDir) - - app := config.AppCreator(logger, db, nil, config.AppOptions) - - nodeKey, err := p2p.LoadOrGenNodeKey(config.TmConfig.NodeKeyFile()) - if err != nil { - return nil, nil, err - } - - cometNode, err := node.NewNode( - config.TmConfig, - privval.LoadOrGenFilePV(config.TmConfig.PrivValidatorKeyFile(), config.TmConfig.PrivValidatorStateFile()), - nodeKey, - proxy.NewLocalClientCreator(app), - node.DefaultGenesisDocProviderFunc(config.TmConfig), - node.DefaultDBProvider, - node.DefaultMetricsProvider(config.TmConfig.Instrumentation), - logger, - ) - - return cometNode, app, err -} diff --git a/test/util/testnode/config.go b/test/util/testnode/config.go index 00b10b8ca4..947df61fa9 100644 --- a/test/util/testnode/config.go +++ b/test/util/testnode/config.go @@ -5,10 +5,10 @@ import ( "io" "time" - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/test/util/genesis" + "github.com/celestiaorg/celestia-app/v3/app" + "github.com/celestiaorg/celestia-app/v3/app/encoding" + "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v3/test/util/genesis" "github.com/cosmos/cosmos-sdk/baseapp" srvconfig "github.com/cosmos/cosmos-sdk/server/config" srvtypes "github.com/cosmos/cosmos-sdk/server/types" @@ -153,7 +153,7 @@ func DefaultTendermintConfig() *tmconfig.Config { // Override the mempool's MaxTxBytes to allow the testnode to accept a // transaction that fills the entire square. Any blob transaction larger // than the square size will still fail no matter what. - maxTxBytes := appconsts.DefaultSquareSizeUpperBound * appconsts.DefaultSquareSizeUpperBound * appconsts.ContinuationSparseShareContentSize + maxTxBytes := appconsts.DefaultUpperBoundMaxBytes tmCfg.Mempool.MaxTxBytes = maxTxBytes // Override the MaxBodyBytes to allow the testnode to accept very large @@ -202,12 +202,3 @@ func CustomAppCreator(minGasPrice string) srvtypes.AppCreator { ) } } - -// DefaultAppConfig wraps the default config described in the server -func DefaultAppConfig() *srvconfig.Config { - appCfg := srvconfig.DefaultConfig() - appCfg.GRPC.Address = fmt.Sprintf("127.0.0.1:%d", mustGetFreePort()) - appCfg.API.Address = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) - appCfg.MinGasPrices = fmt.Sprintf("%v%s", appconsts.DefaultMinGasPrice, appconsts.BondDenom) - return appCfg -} diff --git a/test/util/testnode/full_node.go b/test/util/testnode/full_node.go new file mode 100644 index 0000000000..2a7b6e12c5 --- /dev/null +++ b/test/util/testnode/full_node.go @@ -0,0 +1,58 @@ +package testnode + +import ( + "os" + "path/filepath" + + "github.com/cosmos/cosmos-sdk/client/flags" + srvtypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/tendermint/tendermint/libs/log" + "github.com/tendermint/tendermint/node" + "github.com/tendermint/tendermint/p2p" + "github.com/tendermint/tendermint/privval" + "github.com/tendermint/tendermint/proxy" + dbm "github.com/tendermint/tm-db" +) + +// NewCometNode creates a ready to use comet node that operates a single +// validator celestia-app network. It expects that all configuration files are +// already initialized and saved to the baseDir. +func NewCometNode(baseDir string, cfg *UniversalTestingConfig) (*node.Node, srvtypes.Application, error) { + logger := newLogger(cfg) + dbPath := filepath.Join(cfg.TmConfig.RootDir, "data") + db, err := dbm.NewGoLevelDB("application", dbPath) + if err != nil { + return nil, nil, err + } + + cfg.AppOptions.Set(flags.FlagHome, baseDir) + + app := cfg.AppCreator(logger, db, nil, cfg.AppOptions) + + nodeKey, err := p2p.LoadOrGenNodeKey(cfg.TmConfig.NodeKeyFile()) + if err != nil { + return nil, nil, err + } + + tmNode, err := node.NewNode( + cfg.TmConfig, + privval.LoadOrGenFilePV(cfg.TmConfig.PrivValidatorKeyFile(), cfg.TmConfig.PrivValidatorStateFile()), + nodeKey, + proxy.NewLocalClientCreator(app), + node.DefaultGenesisDocProviderFunc(cfg.TmConfig), + node.DefaultDBProvider, + node.DefaultMetricsProvider(cfg.TmConfig.Instrumentation), + logger, + ) + + return tmNode, app, err +} + +func newLogger(cfg *UniversalTestingConfig) log.Logger { + if cfg.SuppressLogs { + return log.NewNopLogger() + } + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + logger = log.NewFilter(logger, log.AllowError()) + return logger +} diff --git a/test/util/testnode/full_node_test.go b/test/util/testnode/full_node_test.go new file mode 100644 index 0000000000..5a62602b65 --- /dev/null +++ b/test/util/testnode/full_node_test.go @@ -0,0 +1,136 @@ +package testnode + +import ( + "context" + "fmt" + "testing" + "time" + + "github.com/celestiaorg/celestia-app/v3/app" + "github.com/celestiaorg/celestia-app/v3/app/encoding" + "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v3/test/util/genesis" + blobtypes "github.com/celestiaorg/celestia-app/v3/x/blob/types" + appns "github.com/celestiaorg/go-square/v2/share" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" + abci "github.com/tendermint/tendermint/abci/types" + tmrand "github.com/tendermint/tendermint/libs/rand" + coretypes "github.com/tendermint/tendermint/rpc/core/types" +) + +func TestIntegrationTestSuite(t *testing.T) { + if testing.Short() { + t.Skip("skipping full node integration test in short mode.") + } + suite.Run(t, new(IntegrationTestSuite)) +} + +type IntegrationTestSuite struct { + suite.Suite + + accounts []string + cctx Context +} + +func (s *IntegrationTestSuite) SetupSuite() { + t := s.T() + s.accounts = RandomAccounts(10) + + ecfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) + blobGenState := blobtypes.DefaultGenesis() + blobGenState.Params.GovMaxSquareSize = uint64(appconsts.DefaultSquareSizeUpperBound) + + cfg := DefaultConfig(). + WithFundedAccounts(s.accounts...). + WithModifiers(genesis.SetBlobParams(ecfg.Codec, blobGenState.Params)) + + cctx, _, _ := NewNetwork(t, cfg) + s.cctx = cctx +} + +func (s *IntegrationTestSuite) Test_verifyTimeIotaMs() { + require := s.Require() + err := s.cctx.WaitForNextBlock() + require.NoError(err) + + var params *coretypes.ResultConsensusParams + // this query can be flaky with fast block times, so we repeat it multiple + // times in attempt to decrease flakiness + for i := 0; i < 100; i++ { + params, err = s.cctx.Client.ConsensusParams(context.Background(), nil) + if err == nil && params != nil { + break + } + time.Sleep(100 * time.Millisecond) + } + require.NoError(err) + require.NotNil(params) + require.Equal(int64(1), params.ConsensusParams.Block.TimeIotaMs) +} + +func (s *IntegrationTestSuite) TestPostData() { + require := s.Require() + _, err := s.cctx.PostData(s.accounts[0], flags.BroadcastBlock, appns.RandomBlobNamespace(), tmrand.Bytes(kibibyte)) + require.NoError(err) +} + +func (s *IntegrationTestSuite) TestFillBlock() { + require := s.Require() + + for squareSize := 2; squareSize <= appconsts.DefaultGovMaxSquareSize; squareSize *= 2 { + resp, err := s.cctx.FillBlock(squareSize, s.accounts[1], flags.BroadcastSync) + require.NoError(err) + + err = s.cctx.WaitForBlocks(3) + require.NoError(err, squareSize) + + res, err := QueryWithoutProof(s.cctx.Context, resp.TxHash) + require.NoError(err, squareSize) + require.Equal(abci.CodeTypeOK, res.TxResult.Code, squareSize) + + b, err := s.cctx.Client.Block(s.cctx.GoContext(), &res.Height) + require.NoError(err, squareSize) + require.Equal(uint64(squareSize), b.Block.SquareSize, squareSize) + } +} + +func (s *IntegrationTestSuite) TestFillBlock_InvalidSquareSizeError() { + tests := []struct { + name string + squareSize int + expectedErr error + }{ + { + name: "when squareSize less than 2", + squareSize: 0, + expectedErr: fmt.Errorf("unsupported squareSize: 0"), + }, + { + name: "when squareSize is greater than 2 but not a power of 2", + squareSize: 18, + expectedErr: fmt.Errorf("unsupported squareSize: 18"), + }, + { + name: "when squareSize is greater than 2 and a power of 2", + squareSize: 16, + }, + } + + for _, tc := range tests { + s.Run(tc.name, func() { + _, actualErr := s.cctx.FillBlock(tc.squareSize, s.accounts[2], flags.BroadcastAsync) + s.Equal(tc.expectedErr, actualErr) + }) + } +} + +// Test_defaultAppVersion tests that the default app version is set correctly in +// testnode node. +func (s *IntegrationTestSuite) Test_defaultAppVersion() { + t := s.T() + blockRes, err := s.cctx.Client.Block(s.cctx.GoContext(), nil) + require.NoError(t, err) + require.Equal(t, appconsts.LatestVersion, blockRes.Block.Version.App) +} diff --git a/test/util/testnode/logger.go b/test/util/testnode/logger.go deleted file mode 100644 index 36f80e249b..0000000000 --- a/test/util/testnode/logger.go +++ /dev/null @@ -1,24 +0,0 @@ -package testnode - -import ( - "os" - - "github.com/tendermint/tendermint/libs/log" -) - -func NewLogger(config *UniversalTestingConfig) log.Logger { - if config.SuppressLogs { - return log.NewNopLogger() - } - logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) - switch config.TmConfig.LogLevel { - case "error": - return log.NewFilter(logger, log.AllowError()) - case "info": - return log.NewFilter(logger, log.AllowInfo()) - case "debug": - return log.NewFilter(logger, log.AllowDebug()) - default: - return logger - } -} diff --git a/test/util/testnode/network.go b/test/util/testnode/network.go index 4eeb977f7b..34a013a524 100644 --- a/test/util/testnode/network.go +++ b/test/util/testnode/network.go @@ -2,9 +2,10 @@ package testnode import ( "context" + "net" "testing" - "github.com/celestiaorg/celestia-app/v2/test/util/genesis" + "github.com/celestiaorg/celestia-app/v3/test/util/genesis" "github.com/stretchr/testify/require" ) @@ -15,14 +16,14 @@ import ( // accessed via the returned client.Context or via the returned rpc and grpc // addresses. Configured genesis options will be applied after all accounts have // been initialized. -func NewNetwork(t testing.TB, config *Config) (cctx Context, rpcAddr, grpcAddr string) { +func NewNetwork(t testing.TB, cfg *Config) (cctx Context, rpcAddr, grpcAddr string) { t.Helper() // initialize the genesis file and validator files for the first validator. - baseDir, err := genesis.InitFiles(t.TempDir(), config.TmConfig, config.Genesis, 0) + baseDir, err := genesis.InitFiles(t.TempDir(), cfg.TmConfig, cfg.Genesis, 0) require.NoError(t, err) - tmNode, app, err := NewCometNode(baseDir, &config.UniversalTestingConfig) + tmNode, app, err := NewCometNode(baseDir, &cfg.UniversalTestingConfig) require.NoError(t, err) ctx, cancel := context.WithCancel(context.Background()) @@ -30,15 +31,15 @@ func NewNetwork(t testing.TB, config *Config) (cctx Context, rpcAddr, grpcAddr s cancel() }) - cctx = NewContext(ctx, config.Genesis.Keyring(), config.TmConfig, config.Genesis.ChainID, config.AppConfig.API.Address) + cctx = NewContext(ctx, cfg.Genesis.Keyring(), cfg.TmConfig, cfg.Genesis.ChainID, cfg.AppConfig.API.Address) cctx, stopNode, err := StartNode(tmNode, cctx) require.NoError(t, err) - cctx, cleanupGRPC, err := StartGRPCServer(app, config.AppConfig, cctx) + cctx, cleanupGRPC, err := StartGRPCServer(app, cfg.AppConfig, cctx) require.NoError(t, err) - apiServer, err := StartAPIServer(app, *config.AppConfig, cctx) + apiServer, err := StartAPIServer(app, *cfg.AppConfig, cctx) require.NoError(t, err) t.Cleanup(func() { @@ -63,5 +64,30 @@ func NewNetwork(t testing.TB, config *Config) (cctx Context, rpcAddr, grpcAddr s } }) - return cctx, config.TmConfig.RPC.ListenAddress, config.AppConfig.GRPC.Address + return cctx, cfg.TmConfig.RPC.ListenAddress, cfg.AppConfig.GRPC.Address +} + +// getFreePort returns a free port and optionally an error. +func getFreePort() (int, error) { + a, err := net.ResolveTCPAddr("tcp", "localhost:0") + if err != nil { + return 0, err + } + + l, err := net.ListenTCP("tcp", a) + if err != nil { + return 0, err + } + defer l.Close() + return l.Addr().(*net.TCPAddr).Port, nil +} + +// mustGetFreePort returns a free port. Panics if no free ports are available or +// an error is encountered. +func mustGetFreePort() int { + port, err := getFreePort() + if err != nil { + panic(err) + } + return port } diff --git a/test/util/testnode/node_interaction_api.go b/test/util/testnode/node_interaction_api.go index e5494c55d0..3695ee2a99 100644 --- a/test/util/testnode/node_interaction_api.go +++ b/test/util/testnode/node_interaction_api.go @@ -7,15 +7,13 @@ import ( "strings" "time" - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/pkg/user" - "github.com/celestiaorg/celestia-app/v2/test/util/blobfactory" - "github.com/celestiaorg/celestia-app/v2/x/blob/types" - "github.com/celestiaorg/go-square/blob" - appns "github.com/celestiaorg/go-square/namespace" - "github.com/celestiaorg/go-square/shares" + "github.com/celestiaorg/celestia-app/v3/app" + "github.com/celestiaorg/celestia-app/v3/app/encoding" + "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v3/pkg/user" + "github.com/celestiaorg/celestia-app/v3/test/util/blobfactory" + "github.com/celestiaorg/celestia-app/v3/x/blob/types" + "github.com/celestiaorg/go-square/v2/share" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/crypto/keyring" @@ -32,29 +30,28 @@ const ( ) type Context struct { - goContext context.Context - // sdkContext + rootCtx context.Context client.Context apiAddress string } -func NewContext(goContext context.Context, keyring keyring.Keyring, tmConfig *tmconfig.Config, chainID, apiAddress string) Context { - config := encoding.MakeConfig(app.ModuleEncodingRegisters...) - clientContext := client.Context{}. - WithKeyring(keyring). - WithHomeDir(tmConfig.RootDir). +func NewContext(goCtx context.Context, kr keyring.Keyring, tmCfg *tmconfig.Config, chainID, apiAddress string) Context { + ecfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) + cctx := client.Context{}. + WithKeyring(kr). + WithHomeDir(tmCfg.RootDir). WithChainID(chainID). - WithInterfaceRegistry(config.InterfaceRegistry). - WithCodec(config.Codec). - WithLegacyAmino(config.Amino). - WithTxConfig(config.TxConfig). + WithInterfaceRegistry(ecfg.InterfaceRegistry). + WithCodec(ecfg.Codec). + WithLegacyAmino(ecfg.Amino). + WithTxConfig(ecfg.TxConfig). WithAccountRetriever(authtypes.AccountRetriever{}) - return Context{goContext: goContext, Context: clientContext, apiAddress: apiAddress} + return Context{rootCtx: goCtx, Context: cctx, apiAddress: apiAddress} } func (c *Context) GoContext() context.Context { - return c.goContext + return c.rootCtx } // GenesisTime returns the genesis block time. @@ -95,7 +92,7 @@ func (c *Context) WaitForHeightWithTimeout(h int64, t time.Duration) (int64, err ticker := time.NewTicker(time.Second) defer ticker.Stop() - ctx, cancel := context.WithTimeout(c.goContext, t) + ctx, cancel := context.WithTimeout(c.rootCtx, t) defer cancel() var ( @@ -105,8 +102,8 @@ func (c *Context) WaitForHeightWithTimeout(h int64, t time.Duration) (int64, err for { select { case <-ctx.Done(): - if c.goContext.Err() != nil { - return latestHeight, c.goContext.Err() + if c.rootCtx.Err() != nil { + return latestHeight, c.rootCtx.Err() } return latestHeight, fmt.Errorf("timeout (%v) exceeded waiting for network to reach height %d. Got to height %d", t, h, latestHeight) case <-ticker.C: @@ -126,7 +123,7 @@ func (c *Context) WaitForTimestampWithTimeout(t time.Time, d time.Duration) (tim ticker := time.NewTicker(time.Second) defer ticker.Stop() - ctx, cancel := context.WithTimeout(c.goContext, d) + ctx, cancel := context.WithTimeout(c.rootCtx, d) defer cancel() var latestTimestamp time.Time @@ -196,7 +193,7 @@ func (c *Context) WaitForTx(hashHexStr string, blocks int) (*rpctypes.ResultTx, return nil, err } - ctx, cancel := context.WithTimeout(c.goContext, DefaultTimeout) + ctx, cancel := context.WithTimeout(c.rootCtx, DefaultTimeout) defer cancel() for { @@ -223,7 +220,7 @@ func (c *Context) WaitForTx(hashHexStr string, blocks int) (*rpctypes.ResultTx, // PostData will create and submit PFB transaction containing the namespace and // blobData. This function blocks until the PFB has been included in a block and // returns an error if the transaction is invalid or is rejected by the mempool. -func (c *Context) PostData(account, broadcastMode string, ns appns.Namespace, blobData []byte) (*sdk.TxResponse, error) { +func (c *Context) PostData(account, broadcastMode string, ns share.Namespace, blobData []byte) (*sdk.TxResponse, error) { rec, err := c.Keyring.Key(account) if err != nil { return nil, err @@ -245,7 +242,7 @@ func (c *Context) PostData(account, broadcastMode string, ns appns.Namespace, bl return nil, err } - b, err := types.NewBlob(ns, blobData, appconsts.ShareVersionZero) + b, err := types.NewV0Blob(ns, blobData) if err != nil { return nil, err } @@ -253,7 +250,7 @@ func (c *Context) PostData(account, broadcastMode string, ns appns.Namespace, bl gas := types.DefaultEstimateGas([]uint32{uint32(len(blobData))}) opts := blobfactory.FeeTxOpts(gas) - blobTx, _, err := signer.CreatePayForBlobs(account, []*blob.Blob{b}, opts...) + blobTx, _, err := signer.CreatePayForBlobs(account, []*share.Blob{b}, opts...) if err != nil { return nil, err } @@ -298,8 +295,8 @@ func (c *Context) FillBlock(squareSize int, account string, broadcastMode string shareCount := (squareSize - 1) * squareSize // we use a formula to guarantee that the tx is the exact size needed to force a specific square size. - blobSize := shares.AvailableBytesFromSparseShares(shareCount) - return c.PostData(account, broadcastMode, appns.RandomBlobNamespace(), tmrand.Bytes(blobSize)) + blobSize := share.AvailableBytesFromSparseShares(shareCount) + return c.PostData(account, broadcastMode, share.RandomBlobNamespace(), tmrand.Bytes(blobSize)) } // HeightForTimestamp returns the block height for the first block after a diff --git a/test/util/testnode/rpc_client.go b/test/util/testnode/rpc_client.go index c6299af62a..835ced0eb5 100644 --- a/test/util/testnode/rpc_client.go +++ b/test/util/testnode/rpc_client.go @@ -1,10 +1,13 @@ package testnode import ( + "fmt" + "os" "path" "strings" "time" + "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/server/api" srvconfig "github.com/cosmos/cosmos-sdk/server/config" @@ -21,33 +24,35 @@ import ( // performs no operation. var noOpCleanup = func() error { return nil } -// StartNode starts the Comet node along with a local core RPC client. The -// RPC is returned via the client.Context. The function returned should be +// StartNode starts the tendermint node along with a local core rpc client. The +// rpc is returned via the client.Context. The function returned should be // called during cleanup to teardown the node, core client, along with canceling // the internal context.Context in the returned Context. -func StartNode(cometNode *node.Node, cctx Context) (Context, func() error, error) { - if err := cometNode.Start(); err != nil { +func StartNode(tmNode *node.Node, cctx Context) (Context, func() error, error) { + if err := tmNode.Start(); err != nil { return cctx, noOpCleanup, err } - client := local.New(cometNode) - cctx.Context = cctx.WithClient(client) + + coreClient := local.New(tmNode) + + cctx.Context = cctx.WithClient(coreClient) cleanup := func() error { - err := cometNode.Stop() + err := tmNode.Stop() if err != nil { return err } - cometNode.Wait() + tmNode.Wait() if err = removeDir(path.Join([]string{cctx.HomeDir, "config"}...)); err != nil { return err } - return removeDir(path.Join([]string{cctx.HomeDir, cometNode.Config().DBPath}...)) + return removeDir(path.Join([]string{cctx.HomeDir, tmNode.Config().DBPath}...)) } return cctx, cleanup, nil } -// StartGRPCServer starts the GRPC server using the provided application and -// config. A GRPC client connection to that server is also added to the client +// StartGRPCServer starts the grpc server using the provided application and +// config. A grpc client connection to that server is also added to the client // context. The returned function should be used to shutdown the server. func StartGRPCServer(app srvtypes.Application, appCfg *srvconfig.Config, cctx Context) (Context, func() error, error) { emptycleanup := func() error { return nil } @@ -86,6 +91,35 @@ func StartGRPCServer(app srvtypes.Application, appCfg *srvconfig.Config, cctx Co }, nil } +// DefaultAppConfig wraps the default config described in the server +func DefaultAppConfig() *srvconfig.Config { + appCfg := srvconfig.DefaultConfig() + appCfg.GRPC.Address = fmt.Sprintf("127.0.0.1:%d", mustGetFreePort()) + appCfg.API.Address = fmt.Sprintf("tcp://127.0.0.1:%d", mustGetFreePort()) + appCfg.MinGasPrices = fmt.Sprintf("%v%s", appconsts.DefaultMinGasPrice, appconsts.BondDenom) + return appCfg +} + +// removeDir removes the directory `rootDir`. +// The main use of this is to reduce the flakiness of the CI when it's unable to delete +// the config folder of the tendermint node. +// This will manually go over the files contained inside the provided `rootDir` +// and delete them one by one. +func removeDir(rootDir string) error { + dir, err := os.ReadDir(rootDir) + if err != nil { + return err + } + for _, d := range dir { + path := path.Join([]string{rootDir, d.Name()}...) + err := os.RemoveAll(path) + if err != nil { + return err + } + } + return os.RemoveAll(rootDir) +} + func StartAPIServer(app srvtypes.Application, appCfg srvconfig.Config, cctx Context) (*api.Server, error) { apiSrv := api.New(cctx.Context, log.NewNopLogger()) app.RegisterAPIRoutes(apiSrv, appCfg.API) diff --git a/test/util/testnode/utils.go b/test/util/testnode/utils.go index dfcbe3e2fd..bf71aaa951 100644 --- a/test/util/testnode/utils.go +++ b/test/util/testnode/utils.go @@ -3,14 +3,11 @@ package testnode import ( "context" "encoding/hex" - "net" - "os" - "path" - "github.com/celestiaorg/celestia-app/v2/app" - "github.com/celestiaorg/celestia-app/v2/app/encoding" - "github.com/celestiaorg/celestia-app/v2/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v2/test/util/testfactory" + "github.com/celestiaorg/celestia-app/v3/app" + "github.com/celestiaorg/celestia-app/v3/app/encoding" + "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" + "github.com/celestiaorg/celestia-app/v3/test/util/testfactory" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/crypto/hd" "github.com/cosmos/cosmos-sdk/crypto/keyring" @@ -91,48 +88,3 @@ func GenerateAccounts(count int) []string { } return accs } - -// getFreePort returns a free port and optionally an error. -func getFreePort() (int, error) { - a, err := net.ResolveTCPAddr("tcp", "localhost:0") - if err != nil { - return 0, err - } - - l, err := net.ListenTCP("tcp", a) - if err != nil { - return 0, err - } - defer l.Close() - return l.Addr().(*net.TCPAddr).Port, nil -} - -// mustGetFreePort returns a free port. Panics if no free ports are available or -// an error is encountered. -func mustGetFreePort() int { - port, err := getFreePort() - if err != nil { - panic(err) - } - return port -} - -// removeDir removes the directory `rootDir`. -// The main use of this is to reduce the flakiness of the CI when it's unable to delete -// the config folder of the tendermint node. -// This will manually go over the files contained inside the provided `rootDir` -// and delete them one by one. -func removeDir(rootDir string) error { - dir, err := os.ReadDir(rootDir) - if err != nil { - return err - } - for _, d := range dir { - path := path.Join([]string{rootDir, d.Name()}...) - err := os.RemoveAll(path) - if err != nil { - return err - } - } - return os.RemoveAll(rootDir) -} From ea5ae4208453875fd5fc5f2437414069961019a7 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 16:46:34 -0400 Subject: [PATCH 125/140] fix: app --- go.mod | 1 - go.sum | 2 - test/util/testnode/comet_node_test.go | 136 -------------------------- 3 files changed, 139 deletions(-) delete mode 100644 test/util/testnode/comet_node_test.go diff --git a/go.mod b/go.mod index dfa098c43c..5f1fab11a6 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,6 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 - github.com/celestiaorg/go-square v1.1.0 github.com/celestiaorg/go-square/v2 v2.0.0-rc2 github.com/celestiaorg/knuu v0.14.0 github.com/celestiaorg/nmt v0.22.1 diff --git a/go.sum b/go.sum index 4f05848c66..034dabe1c1 100644 --- a/go.sum +++ b/go.sum @@ -322,8 +322,6 @@ github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= -github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= -github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/v2 v2.0.0-rc2 h1:4D+ASgZGYVCsffc2uhPagACrvNiLZu9/CqNYvnlHCgg= github.com/celestiaorg/go-square/v2 v2.0.0-rc2/go.mod h1:eeaU8f8jBpk3ZS/gaDZIlTesJR2F51QAmveNzWH6aEU= github.com/celestiaorg/knuu v0.14.0 h1:96uaDHTzlTfhDLrAiygq9Ewow7UzOzGAbUvMwws1S4A= diff --git a/test/util/testnode/comet_node_test.go b/test/util/testnode/comet_node_test.go deleted file mode 100644 index 68d4328330..0000000000 --- a/test/util/testnode/comet_node_test.go +++ /dev/null @@ -1,136 +0,0 @@ -package testnode - -import ( - "context" - "fmt" - "testing" - "time" - - "github.com/celestiaorg/celestia-app/v3/app" - "github.com/celestiaorg/celestia-app/v3/app/encoding" - "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" - "github.com/celestiaorg/celestia-app/v3/test/util/genesis" - blobtypes "github.com/celestiaorg/celestia-app/v3/x/blob/types" - appns "github.com/celestiaorg/go-square/namespace" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/stretchr/testify/require" - "github.com/stretchr/testify/suite" - abci "github.com/tendermint/tendermint/abci/types" - tmrand "github.com/tendermint/tendermint/libs/rand" - coretypes "github.com/tendermint/tendermint/rpc/core/types" -) - -func TestIntegrationTestSuite(t *testing.T) { - if testing.Short() { - t.Skip("skipping full node integration test in short mode.") - } - suite.Run(t, new(IntegrationTestSuite)) -} - -type IntegrationTestSuite struct { - suite.Suite - - accounts []string - cctx Context -} - -func (s *IntegrationTestSuite) SetupSuite() { - t := s.T() - s.accounts = RandomAccounts(10) - - ecfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) - blobGenState := blobtypes.DefaultGenesis() - blobGenState.Params.GovMaxSquareSize = uint64(appconsts.DefaultSquareSizeUpperBound) - - cfg := DefaultConfig(). - WithFundedAccounts(s.accounts...). - WithModifiers(genesis.SetBlobParams(ecfg.Codec, blobGenState.Params)) - - cctx, _, _ := NewNetwork(t, cfg) - s.cctx = cctx -} - -func (s *IntegrationTestSuite) Test_verifyTimeIotaMs() { - require := s.Require() - err := s.cctx.WaitForNextBlock() - require.NoError(err) - - var params *coretypes.ResultConsensusParams - // this query can be flaky with fast block times, so we repeat it multiple - // times in attempt to decrease flakiness - for i := 0; i < 100; i++ { - params, err = s.cctx.Client.ConsensusParams(context.Background(), nil) - if err == nil && params != nil { - break - } - time.Sleep(100 * time.Millisecond) - } - require.NoError(err) - require.NotNil(params) - require.Equal(int64(1), params.ConsensusParams.Block.TimeIotaMs) -} - -func (s *IntegrationTestSuite) TestPostData() { - require := s.Require() - _, err := s.cctx.PostData(s.accounts[0], flags.BroadcastBlock, appns.RandomBlobNamespace(), tmrand.Bytes(kibibyte)) - require.NoError(err) -} - -func (s *IntegrationTestSuite) TestFillBlock() { - require := s.Require() - - for squareSize := 2; squareSize <= appconsts.DefaultGovMaxSquareSize; squareSize *= 2 { - resp, err := s.cctx.FillBlock(squareSize, s.accounts[1], flags.BroadcastSync) - require.NoError(err) - - err = s.cctx.WaitForBlocks(3) - require.NoError(err, squareSize) - - res, err := QueryWithoutProof(s.cctx.Context, resp.TxHash) - require.NoError(err, squareSize) - require.Equal(abci.CodeTypeOK, res.TxResult.Code, squareSize) - - b, err := s.cctx.Client.Block(s.cctx.GoContext(), &res.Height) - require.NoError(err, squareSize) - require.Equal(uint64(squareSize), b.Block.SquareSize, squareSize) - } -} - -func (s *IntegrationTestSuite) TestFillBlock_InvalidSquareSizeError() { - tests := []struct { - name string - squareSize int - expectedErr error - }{ - { - name: "when squareSize less than 2", - squareSize: 0, - expectedErr: fmt.Errorf("unsupported squareSize: 0"), - }, - { - name: "when squareSize is greater than 2 but not a power of 2", - squareSize: 18, - expectedErr: fmt.Errorf("unsupported squareSize: 18"), - }, - { - name: "when squareSize is greater than 2 and a power of 2", - squareSize: 16, - }, - } - - for _, tc := range tests { - s.Run(tc.name, func() { - _, actualErr := s.cctx.FillBlock(tc.squareSize, s.accounts[2], flags.BroadcastAsync) - s.Equal(tc.expectedErr, actualErr) - }) - } -} - -// Test_defaultAppVersion tests that the default app version is set correctly in -// testnode node. -func (s *IntegrationTestSuite) Test_defaultAppVersion() { - t := s.T() - blockRes, err := s.cctx.Client.Block(s.cctx.GoContext(), nil) - require.NoError(t, err) - require.Equal(t, appconsts.LatestVersion, blockRes.Block.Version.App) -} From 5cd7c246976cffa7dcdc2b88c893f8854d5386b9 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 17:03:59 -0400 Subject: [PATCH 126/140] fix: node --- node/go.mod | 6 +++--- node/utils/config.go | 4 ++-- node/utils/logger.go | 25 +++++++++++++++++++++++++ node/utils/start_node.go | 6 +++--- 4 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 node/utils/logger.go diff --git a/node/go.mod b/node/go.mod index 154e0d0d12..dfebbc7694 100644 --- a/node/go.mod +++ b/node/go.mod @@ -208,9 +208,9 @@ replace ( // replace errors to avoid a panic when registering duplicate errors cosmossdk.io/errors => github.com/rootulp/cosmos-sdk/errors v1.4.0 // replace celestia-app v2 to avoid a panic when Cosmos SDK is modified in init() - github.com/celestiaorg/celestia-app/v2 => ../ - // replace celestia-app v3 with a localy copy so that we can modify it's modules.go - github.com/celestiaorg/celestia-app/v3 => ../../celestia-app-v3 + github.com/celestiaorg/celestia-app/v2 => ../../celestia-app-v2 + // replace celestia-app v3 with a local copy so that we can modify it's modules.go + github.com/celestiaorg/celestia-app/v3 => ../ github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/node/utils/config.go b/node/utils/config.go index 7e012c765c..b19bfd4847 100644 --- a/node/utils/config.go +++ b/node/utils/config.go @@ -1,8 +1,8 @@ package utils import ( - v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + v1 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v1" + "github.com/celestiaorg/celestia-app/v3/test/util/testnode" ) func GetConfig() *testnode.Config { diff --git a/node/utils/logger.go b/node/utils/logger.go new file mode 100644 index 0000000000..826f0ffa2c --- /dev/null +++ b/node/utils/logger.go @@ -0,0 +1,25 @@ +package utils + +import ( + "os" + + "github.com/celestiaorg/celestia-app/v3/test/util/testnode" + "github.com/tendermint/tendermint/libs/log" +) + +func NewLogger(config *testnode.UniversalTestingConfig) log.Logger { + if config.SuppressLogs { + return log.NewNopLogger() + } + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) + switch config.TmConfig.LogLevel { + case "error": + return log.NewFilter(logger, log.AllowError()) + case "info": + return log.NewFilter(logger, log.AllowInfo()) + case "debug": + return log.NewFilter(logger, log.AllowDebug()) + default: + return logger + } +} diff --git a/node/utils/start_node.go b/node/utils/start_node.go index 7c7698969a..cbcc26bc82 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -3,8 +3,8 @@ package utils import ( "context" - "github.com/celestiaorg/celestia-app/v2/test/util/genesis" - "github.com/celestiaorg/celestia-app/v2/test/util/testnode" + "github.com/celestiaorg/celestia-app/v3/test/util/genesis" + "github.com/celestiaorg/celestia-app/v3/test/util/testnode" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/p2p" @@ -42,7 +42,7 @@ func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multip } func newCometNode(config *testnode.Config, multiplexer *Multiplexer) (cometNode *node.Node, cleanupComet func() error, err error) { - logger := testnode.NewLogger(&config.UniversalTestingConfig) + logger := NewLogger(&config.UniversalTestingConfig) db, err := tmdb.NewGoLevelDB("application", config.TmConfig.DBDir()) if err != nil { return nil, nil, err From 374df1ea19554e20b542be2c88e28f85f8237abc Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 17:13:38 -0400 Subject: [PATCH 127/140] feat: make app.go do v3 stuff --- app/app.go | 71 ++++++++++++++---------------------------------------- 1 file changed, 18 insertions(+), 53 deletions(-) diff --git a/app/app.go b/app/app.go index 2452ead0fb..61acad3fe5 100644 --- a/app/app.go +++ b/app/app.go @@ -172,8 +172,7 @@ type App struct { MsgGateKeeper *ante.MsgVersioningGateKeeper } -// New returns a reference to an uninitialized app. Callers must subsequently -// call app.Info or app.InitChain to initialize the baseapp. +// New returns a reference to an initialized app. // // NOTE: upgradeHeightV2 refers specifically to the height that a node will // upgrade from v1 to v2. It will be deprecated in v3 in place for a dynamically @@ -184,7 +183,7 @@ func New( traceStore io.Writer, invCheckPeriod uint, encodingConfig encoding.Config, - upgradeHeightV2 int64, + upgradeHeightV2 int64, // TODO: remove this param appOpts servertypes.AppOptions, baseAppOptions ...func(*baseapp.BaseApp), ) *App { @@ -437,6 +436,14 @@ func New( tmos.Exit(err.Error()) } + height := app.LastBlockHeight() + ctx, err := app.CreateQueryContext(height, false) + if err != nil { + panic(err) + } + app.SetAppVersion(ctx, v3) + app.mountKeysAndInit(3) + return app } @@ -456,34 +463,13 @@ func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.Respo res := app.manager.EndBlock(ctx, req) currentVersion := app.AppVersion() - // upgradeHeightV3 is a hard-coded height to upgrade from v2 to v3. We use - // this to test the upgrade in the prototype. On mainnet we'll use the - // signalling mechanism so remove this pre-merge. - upgradeHeightV3 := int64(10) - - // For v1 only we upgrade using a agreed upon height known ahead of time - if currentVersion == v1 { - // check that we are at the height before the upgrade - if req.Height == app.upgradeHeightV2-1 { - app.BaseApp.Logger().Info(fmt.Sprintf("upgrading from app version %v to 2", currentVersion)) - app.SetInitialAppVersionInConsensusParams(ctx, v2) - app.SetAppVersion(ctx, v2) - - // The blobstream module was disabled in v2 so the following line - // removes the params subspace for blobstream. - if err := app.ParamsKeeper.DeleteSubspace(blobstreamtypes.ModuleName); err != nil { - panic(err) - } - } - // from v2 to v3 and onwards we use a signalling mechanism - } else if shouldUpgrade, newVersion := app.SignalKeeper.ShouldUpgrade(ctx); shouldUpgrade { + // from v3 onwards we use a signalling mechanism + if shouldUpgrade, newVersion := app.SignalKeeper.ShouldUpgrade(ctx); shouldUpgrade { // Version changes must be increasing. Downgrades are not permitted if newVersion > currentVersion { app.SetAppVersion(ctx, newVersion) app.SignalKeeper.ResetTally(ctx) } - } else if req.Height == upgradeHeightV3-1 { - app.SetAppVersion(ctx, 3) } return res } @@ -519,34 +505,8 @@ func (app *App) migrateModules(ctx sdk.Context, fromVersion, toVersion uint64) e // Info implements the ABCI interface. This method is a wrapper around baseapp's // Info command so that it can take the app version and setup the multicommit // store. -// -// Side-effect: calls baseapp.Init() func (app *App) Info(req abci.RequestInfo) abci.ResponseInfo { - if height := app.LastBlockHeight(); height > 0 { - ctx, err := app.CreateQueryContext(height, false) - if err != nil { - panic(err) - } - appVersion := app.GetAppVersionFromParamStore(ctx) - if appVersion > 0 { - app.SetAppVersion(ctx, appVersion) - } else { - app.SetAppVersion(ctx, v1) - } - } - - resp := app.BaseApp.Info(req) - // mount the stores for the provided app version - if resp.AppVersion > 0 && !app.IsSealed() { - app.mountKeysAndInit(resp.AppVersion) - } - return resp -} - -// RunMigrations is a no-op because the v2 state machine already handles -// migrating from v1 -> v2 at the v2 upgrade height. -func (app *App) RunMigrations() []byte { - return []byte{} + return app.BaseApp.Info(req) } // InitChain implements the ABCI interface. This method is a wrapper around @@ -554,6 +514,7 @@ func (app *App) RunMigrations() []byte { // store. // // Side-effect: calls baseapp.Init() +// TODO: refactor this method because it no longer needs to support initializing a chain with an app version that isn't 3. func (app *App) InitChain(req abci.RequestInitChain) (res abci.ResponseInitChain) { // genesis must always contain the consensus params. The validator set however is derived from the // initial genesis state. The genesis must always contain a non zero app version which is the initial @@ -798,3 +759,7 @@ func (app *App) InitializeAppVersion(ctx sdk.Context) { app.SetAppVersion(ctx, appVersion) } } + +func (app *App) RunMigrations() []byte { + return []byte{} +} From 3a0c4989e30d0067af654ac2cc31d6a6bfe1ff6e Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 22:48:53 -0400 Subject: [PATCH 128/140] fix: make signal protos not conflict --- proto/celestia/signal/{v1 => v2}/query.proto | 4 +- proto/celestia/signal/{v1 => v2}/tx.proto | 2 +- .../celestia/signal/{v1 => v2}/upgrade.proto | 2 +- x/signal/types/query.pb.go | 94 +++++++++---------- x/signal/types/query.pb.gw.go | 2 +- x/signal/types/tx.pb.go | 86 ++++++++--------- x/signal/types/tx.pb.gw.go | 2 +- x/signal/types/upgrade.pb.go | 16 ++-- 8 files changed, 104 insertions(+), 104 deletions(-) rename proto/celestia/signal/{v1 => v2}/query.proto (95%) rename proto/celestia/signal/{v1 => v2}/tx.proto (97%) rename proto/celestia/signal/{v1 => v2}/upgrade.proto (93%) diff --git a/proto/celestia/signal/v1/query.proto b/proto/celestia/signal/v2/query.proto similarity index 95% rename from proto/celestia/signal/v1/query.proto rename to proto/celestia/signal/v2/query.proto index 1d1b04f54b..648c38e8b2 100644 --- a/proto/celestia/signal/v1/query.proto +++ b/proto/celestia/signal/v2/query.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package celestia.signal.v1; +package celestia.signal.v2; import "google/api/annotations.proto"; -import "celestia/signal/v1/upgrade.proto"; +import "celestia/signal/v2/upgrade.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/signal/types"; diff --git a/proto/celestia/signal/v1/tx.proto b/proto/celestia/signal/v2/tx.proto similarity index 97% rename from proto/celestia/signal/v1/tx.proto rename to proto/celestia/signal/v2/tx.proto index 42634cea6b..64e9ea21d4 100644 --- a/proto/celestia/signal/v1/tx.proto +++ b/proto/celestia/signal/v2/tx.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.signal.v1; +package celestia.signal.v2; import "google/api/annotations.proto"; diff --git a/proto/celestia/signal/v1/upgrade.proto b/proto/celestia/signal/v2/upgrade.proto similarity index 93% rename from proto/celestia/signal/v1/upgrade.proto rename to proto/celestia/signal/v2/upgrade.proto index 6d5ac4e03e..2863c6cbaf 100644 --- a/proto/celestia/signal/v1/upgrade.proto +++ b/proto/celestia/signal/v2/upgrade.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.signal.v1; +package celestia.signal.v2; option go_package = "github.com/celestiaorg/celestia-app/x/signal/types"; diff --git a/x/signal/types/query.pb.go b/x/signal/types/query.pb.go index ecbaa304db..2c48ce89e4 100644 --- a/x/signal/types/query.pb.go +++ b/x/signal/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/signal/v1/query.proto +// source: celestia/signal/v2/query.proto package types @@ -37,7 +37,7 @@ func (m *QueryVersionTallyRequest) Reset() { *m = QueryVersionTallyReque func (m *QueryVersionTallyRequest) String() string { return proto.CompactTextString(m) } func (*QueryVersionTallyRequest) ProtoMessage() {} func (*QueryVersionTallyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_7af24246367e432c, []int{0} + return fileDescriptor_ac017e15f9a5094a, []int{0} } func (m *QueryVersionTallyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -84,7 +84,7 @@ func (m *QueryVersionTallyResponse) Reset() { *m = QueryVersionTallyResp func (m *QueryVersionTallyResponse) String() string { return proto.CompactTextString(m) } func (*QueryVersionTallyResponse) ProtoMessage() {} func (*QueryVersionTallyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_7af24246367e432c, []int{1} + return fileDescriptor_ac017e15f9a5094a, []int{1} } func (m *QueryVersionTallyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -142,7 +142,7 @@ func (m *QueryGetUpgradeRequest) Reset() { *m = QueryGetUpgradeRequest{} func (m *QueryGetUpgradeRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetUpgradeRequest) ProtoMessage() {} func (*QueryGetUpgradeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_7af24246367e432c, []int{2} + return fileDescriptor_ac017e15f9a5094a, []int{2} } func (m *QueryGetUpgradeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -180,7 +180,7 @@ func (m *QueryGetUpgradeResponse) Reset() { *m = QueryGetUpgradeResponse func (m *QueryGetUpgradeResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetUpgradeResponse) ProtoMessage() {} func (*QueryGetUpgradeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_7af24246367e432c, []int{3} + return fileDescriptor_ac017e15f9a5094a, []int{3} } func (m *QueryGetUpgradeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -217,42 +217,42 @@ func (m *QueryGetUpgradeResponse) GetUpgrade() *Upgrade { } func init() { - proto.RegisterType((*QueryVersionTallyRequest)(nil), "celestia.signal.v1.QueryVersionTallyRequest") - proto.RegisterType((*QueryVersionTallyResponse)(nil), "celestia.signal.v1.QueryVersionTallyResponse") - proto.RegisterType((*QueryGetUpgradeRequest)(nil), "celestia.signal.v1.QueryGetUpgradeRequest") - proto.RegisterType((*QueryGetUpgradeResponse)(nil), "celestia.signal.v1.QueryGetUpgradeResponse") -} - -func init() { proto.RegisterFile("celestia/signal/v1/query.proto", fileDescriptor_7af24246367e432c) } - -var fileDescriptor_7af24246367e432c = []byte{ - // 411 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4f, 0xe2, 0x40, - 0x18, 0xc6, 0x19, 0xf6, 0x0f, 0xc9, 0x40, 0x76, 0x37, 0x93, 0xcd, 0x6e, 0xb7, 0x4b, 0x1a, 0xb6, - 0x97, 0xdd, 0xac, 0xd0, 0x09, 0xa8, 0x5f, 0xc0, 0x8b, 0x17, 0x0f, 0x48, 0x94, 0x83, 0x17, 0x32, - 0xc0, 0xa4, 0x34, 0xa9, 0x9d, 0xa1, 0x33, 0xad, 0x12, 0xe3, 0x41, 0xbf, 0x80, 0x26, 0xc6, 0xa3, - 0xdf, 0xc7, 0x23, 0x89, 0x17, 0x8f, 0x06, 0xfc, 0x20, 0x86, 0x99, 0x16, 0x30, 0x85, 0x84, 0x5b, - 0xfb, 0xbe, 0xbf, 0xf7, 0x99, 0xe7, 0x7d, 0x66, 0xa0, 0xd5, 0xa3, 0x3e, 0x15, 0xd2, 0x23, 0x58, - 0x78, 0x6e, 0x40, 0x7c, 0x1c, 0xd7, 0xf1, 0x30, 0xa2, 0xe1, 0xc8, 0xe1, 0x21, 0x93, 0x0c, 0xa1, - 0xb4, 0xef, 0xe8, 0xbe, 0x13, 0xd7, 0xcd, 0xb2, 0xcb, 0x98, 0xeb, 0x53, 0x4c, 0xb8, 0x87, 0x49, - 0x10, 0x30, 0x49, 0xa4, 0xc7, 0x02, 0xa1, 0x27, 0xcc, 0xca, 0x0a, 0xc5, 0x88, 0xbb, 0x21, 0xe9, - 0x53, 0x4d, 0xd8, 0x3b, 0xd0, 0x38, 0x9c, 0x1d, 0xd1, 0xa6, 0xa1, 0xf0, 0x58, 0x70, 0x44, 0x7c, - 0x7f, 0xd4, 0xa2, 0xc3, 0x88, 0x0a, 0x89, 0x0c, 0x58, 0x88, 0x75, 0xd9, 0x00, 0x15, 0xf0, 0xef, - 0x63, 0x2b, 0xfd, 0xb5, 0xef, 0x01, 0xfc, 0xb5, 0x62, 0x4c, 0x70, 0x16, 0x08, 0x8a, 0xfe, 0xc0, - 0x52, 0xcc, 0xa4, 0x17, 0xb8, 0x1d, 0xce, 0xce, 0x68, 0x98, 0x0c, 0x17, 0x75, 0xad, 0x39, 0x2b, - 0xa1, 0xbf, 0xf0, 0xab, 0x1c, 0x84, 0x54, 0x0c, 0x98, 0xdf, 0x4f, 0xa8, 0xbc, 0xa2, 0xbe, 0xcc, - 0xcb, 0x1a, 0xac, 0x42, 0x24, 0x99, 0x24, 0x7e, 0xe7, 0x9d, 0xe2, 0x07, 0xc5, 0x7e, 0x53, 0x9d, - 0xf6, 0x42, 0xd6, 0x36, 0xe0, 0x0f, 0x65, 0x6b, 0x9f, 0xca, 0x63, 0xbd, 0x66, 0xb2, 0x8b, 0xdd, - 0x84, 0x3f, 0x33, 0x9d, 0xc4, 0xee, 0x2e, 0x2c, 0x24, 0x99, 0x28, 0xa7, 0xc5, 0xc6, 0x6f, 0x27, - 0x1b, 0xb4, 0x93, 0x4e, 0xa5, 0x6c, 0xe3, 0x21, 0x0f, 0x3f, 0x29, 0x49, 0x74, 0x03, 0x60, 0x69, - 0x39, 0x08, 0x54, 0x5d, 0x25, 0xb0, 0x2e, 0x66, 0xb3, 0xb6, 0x21, 0xad, 0xed, 0xda, 0xf6, 0xf5, - 0xd3, 0xeb, 0x5d, 0xbe, 0x8c, 0xcc, 0xa5, 0x3b, 0x95, 0x33, 0x02, 0x5f, 0x24, 0xd7, 0x73, 0x89, - 0xae, 0x00, 0x84, 0x8b, 0x4d, 0xd1, 0xff, 0xb5, 0x27, 0x64, 0x82, 0x32, 0xb7, 0x36, 0x62, 0x13, - 0x2f, 0xa6, 0xf2, 0xf2, 0x1d, 0xa1, 0xec, 0xfb, 0xda, 0x3b, 0x78, 0x9c, 0x58, 0x60, 0x3c, 0xb1, - 0xc0, 0xcb, 0xc4, 0x02, 0xb7, 0x53, 0x2b, 0x37, 0x9e, 0x5a, 0xb9, 0xe7, 0xa9, 0x95, 0x3b, 0x69, - 0xb8, 0x9e, 0x1c, 0x44, 0x5d, 0xa7, 0xc7, 0x4e, 0x71, 0x7a, 0x18, 0x0b, 0xdd, 0xf9, 0x77, 0x8d, - 0x70, 0x8e, 0xcf, 0x53, 0x49, 0x39, 0xe2, 0x54, 0x74, 0x3f, 0xab, 0xe7, 0xba, 0xfd, 0x16, 0x00, - 0x00, 0xff, 0xff, 0x5b, 0x0c, 0x46, 0x0b, 0x24, 0x03, 0x00, 0x00, + proto.RegisterType((*QueryVersionTallyRequest)(nil), "celestia.signal.v2.QueryVersionTallyRequest") + proto.RegisterType((*QueryVersionTallyResponse)(nil), "celestia.signal.v2.QueryVersionTallyResponse") + proto.RegisterType((*QueryGetUpgradeRequest)(nil), "celestia.signal.v2.QueryGetUpgradeRequest") + proto.RegisterType((*QueryGetUpgradeResponse)(nil), "celestia.signal.v2.QueryGetUpgradeResponse") +} + +func init() { proto.RegisterFile("celestia/signal/v2/query.proto", fileDescriptor_ac017e15f9a5094a) } + +var fileDescriptor_ac017e15f9a5094a = []byte{ + // 414 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x6f, 0xda, 0x30, + 0x18, 0xc6, 0x31, 0xfb, 0x83, 0x64, 0xd0, 0x36, 0x59, 0xd3, 0x96, 0x65, 0x28, 0x62, 0xb9, 0x6c, + 0xda, 0x20, 0xd6, 0xb2, 0xed, 0x0b, 0xec, 0xd2, 0x4b, 0x0f, 0x14, 0xb5, 0x1c, 0x7a, 0x41, 0x06, + 0xac, 0x10, 0x29, 0x8d, 0x4d, 0xec, 0xa4, 0x45, 0x55, 0x0f, 0xed, 0x17, 0x68, 0xa5, 0xaa, 0xc7, + 0x7e, 0x9f, 0x1e, 0x91, 0x7a, 0xe9, 0xb1, 0x82, 0x7e, 0x90, 0x0a, 0xdb, 0x01, 0x2a, 0x40, 0xe2, + 0x06, 0xef, 0xfb, 0x7b, 0x9f, 0xf7, 0x79, 0x1f, 0x07, 0x3a, 0x3d, 0x1a, 0x51, 0x21, 0x43, 0x82, + 0x45, 0x18, 0xc4, 0x24, 0xc2, 0x99, 0x8f, 0x87, 0x29, 0x4d, 0x46, 0x1e, 0x4f, 0x98, 0x64, 0x08, + 0xe5, 0x7d, 0x4f, 0xf7, 0xbd, 0xcc, 0xb7, 0xab, 0x01, 0x63, 0x41, 0x44, 0x31, 0xe1, 0x21, 0x26, + 0x71, 0xcc, 0x24, 0x91, 0x21, 0x8b, 0x85, 0x9e, 0xb0, 0x6b, 0x6b, 0x14, 0x53, 0x1e, 0x24, 0xa4, + 0x4f, 0x35, 0xe1, 0xfe, 0x85, 0xd6, 0xde, 0x6c, 0x45, 0x9b, 0x26, 0x22, 0x64, 0xf1, 0x3e, 0x89, + 0xa2, 0x51, 0x8b, 0x0e, 0x53, 0x2a, 0x24, 0xb2, 0x60, 0x29, 0xd3, 0x65, 0x0b, 0xd4, 0xc0, 0x8f, + 0xd7, 0xad, 0xfc, 0xaf, 0x7b, 0x03, 0xe0, 0x97, 0x35, 0x63, 0x82, 0xb3, 0x58, 0x50, 0xf4, 0x0d, + 0x56, 0x32, 0x26, 0xc3, 0x38, 0xe8, 0x70, 0x76, 0x4c, 0x13, 0x33, 0x5c, 0xd6, 0xb5, 0xe6, 0xac, + 0x84, 0xbe, 0xc3, 0xf7, 0x72, 0x90, 0x50, 0x31, 0x60, 0x51, 0xdf, 0x50, 0x45, 0x45, 0xbd, 0x9b, + 0x97, 0x35, 0x58, 0x87, 0x48, 0x32, 0x49, 0xa2, 0xce, 0x0b, 0xc5, 0x57, 0x8a, 0xfd, 0xa0, 0x3a, + 0xed, 0x85, 0xac, 0x6b, 0xc1, 0x4f, 0xca, 0xd6, 0x0e, 0x95, 0x07, 0xfa, 0x4c, 0x73, 0x8b, 0xdb, + 0x84, 0x9f, 0x57, 0x3a, 0xc6, 0xee, 0x3f, 0x58, 0x32, 0x99, 0x28, 0xa7, 0x65, 0xff, 0xab, 0xb7, + 0x1a, 0xb4, 0x97, 0x4f, 0xe5, 0xac, 0x7f, 0x5b, 0x84, 0x6f, 0x94, 0x24, 0xba, 0x04, 0xb0, 0xb2, + 0x1c, 0x04, 0xaa, 0xaf, 0x13, 0xd8, 0x14, 0xb3, 0xdd, 0xd8, 0x92, 0xd6, 0x76, 0x5d, 0xf7, 0xe2, + 0xfe, 0xe9, 0xba, 0x58, 0x45, 0xf6, 0xfc, 0x4d, 0x7f, 0x63, 0x39, 0x23, 0xf0, 0xa9, 0x79, 0x9e, + 0x33, 0x74, 0x0e, 0x20, 0x5c, 0x5c, 0x8a, 0x7e, 0x6e, 0xdc, 0xb0, 0x12, 0x94, 0xfd, 0x6b, 0x2b, + 0xd6, 0x78, 0xb1, 0x95, 0x97, 0x8f, 0x08, 0x2d, 0x79, 0x31, 0xf9, 0xfc, 0xdf, 0xbd, 0x9b, 0x38, + 0x60, 0x3c, 0x71, 0xc0, 0xe3, 0xc4, 0x01, 0x57, 0x53, 0xa7, 0x30, 0x9e, 0x3a, 0x85, 0x87, 0xa9, + 0x53, 0x38, 0xf4, 0x83, 0x50, 0x0e, 0xd2, 0xae, 0xd7, 0x63, 0x47, 0x38, 0x5f, 0xc6, 0x92, 0x60, + 0xfe, 0xbb, 0x41, 0x38, 0xc7, 0x27, 0xb9, 0xa4, 0x1c, 0x71, 0x2a, 0xba, 0x6f, 0xd5, 0xe7, 0xfa, + 0xe7, 0x39, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xc2, 0x4a, 0x39, 0x24, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -285,7 +285,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { func (c *queryClient) VersionTally(ctx context.Context, in *QueryVersionTallyRequest, opts ...grpc.CallOption) (*QueryVersionTallyResponse, error) { out := new(QueryVersionTallyResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v1.Query/VersionTally", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v2.Query/VersionTally", in, out, opts...) if err != nil { return nil, err } @@ -294,7 +294,7 @@ func (c *queryClient) VersionTally(ctx context.Context, in *QueryVersionTallyReq func (c *queryClient) GetUpgrade(ctx context.Context, in *QueryGetUpgradeRequest, opts ...grpc.CallOption) (*QueryGetUpgradeResponse, error) { out := new(QueryGetUpgradeResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v1.Query/GetUpgrade", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v2.Query/GetUpgrade", in, out, opts...) if err != nil { return nil, err } @@ -336,7 +336,7 @@ func _Query_VersionTally_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v1.Query/VersionTally", + FullMethod: "/celestia.signal.v2.Query/VersionTally", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).VersionTally(ctx, req.(*QueryVersionTallyRequest)) @@ -354,7 +354,7 @@ func _Query_GetUpgrade_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v1.Query/GetUpgrade", + FullMethod: "/celestia.signal.v2.Query/GetUpgrade", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).GetUpgrade(ctx, req.(*QueryGetUpgradeRequest)) @@ -363,7 +363,7 @@ func _Query_GetUpgrade_Handler(srv interface{}, ctx context.Context, dec func(in } var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.signal.v1.Query", + ServiceName: "celestia.signal.v2.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { @@ -376,7 +376,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/signal/v1/query.proto", + Metadata: "celestia/signal/v2/query.proto", } func (m *QueryVersionTallyRequest) Marshal() (dAtA []byte, err error) { diff --git a/x/signal/types/query.pb.gw.go b/x/signal/types/query.pb.gw.go index c28aa9a3d4..0a96b3d6cb 100644 --- a/x/signal/types/query.pb.gw.go +++ b/x/signal/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/signal/v1/query.proto +// source: celestia/signal/v2/query.proto /* Package types is a reverse proxy. diff --git a/x/signal/types/tx.pb.go b/x/signal/types/tx.pb.go index 2930cc2202..5295a94edc 100644 --- a/x/signal/types/tx.pb.go +++ b/x/signal/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/signal/v1/tx.proto +// source: celestia/signal/v2/tx.proto package types @@ -38,7 +38,7 @@ func (m *MsgSignalVersion) Reset() { *m = MsgSignalVersion{} } func (m *MsgSignalVersion) String() string { return proto.CompactTextString(m) } func (*MsgSignalVersion) ProtoMessage() {} func (*MsgSignalVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_815f2cc162e6e27e, []int{0} + return fileDescriptor_152fd796bcafe44c, []int{0} } func (m *MsgSignalVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -89,7 +89,7 @@ func (m *MsgSignalVersionResponse) Reset() { *m = MsgSignalVersionRespon func (m *MsgSignalVersionResponse) String() string { return proto.CompactTextString(m) } func (*MsgSignalVersionResponse) ProtoMessage() {} func (*MsgSignalVersionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_815f2cc162e6e27e, []int{1} + return fileDescriptor_152fd796bcafe44c, []int{1} } func (m *MsgSignalVersionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -127,7 +127,7 @@ func (m *MsgTryUpgrade) Reset() { *m = MsgTryUpgrade{} } func (m *MsgTryUpgrade) String() string { return proto.CompactTextString(m) } func (*MsgTryUpgrade) ProtoMessage() {} func (*MsgTryUpgrade) Descriptor() ([]byte, []int) { - return fileDescriptor_815f2cc162e6e27e, []int{2} + return fileDescriptor_152fd796bcafe44c, []int{2} } func (m *MsgTryUpgrade) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -171,7 +171,7 @@ func (m *MsgTryUpgradeResponse) Reset() { *m = MsgTryUpgradeResponse{} } func (m *MsgTryUpgradeResponse) String() string { return proto.CompactTextString(m) } func (*MsgTryUpgradeResponse) ProtoMessage() {} func (*MsgTryUpgradeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_815f2cc162e6e27e, []int{3} + return fileDescriptor_152fd796bcafe44c, []int{3} } func (m *MsgTryUpgradeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -201,38 +201,38 @@ func (m *MsgTryUpgradeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgTryUpgradeResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgSignalVersion)(nil), "celestia.signal.v1.MsgSignalVersion") - proto.RegisterType((*MsgSignalVersionResponse)(nil), "celestia.signal.v1.MsgSignalVersionResponse") - proto.RegisterType((*MsgTryUpgrade)(nil), "celestia.signal.v1.MsgTryUpgrade") - proto.RegisterType((*MsgTryUpgradeResponse)(nil), "celestia.signal.v1.MsgTryUpgradeResponse") -} - -func init() { proto.RegisterFile("celestia/signal/v1/tx.proto", fileDescriptor_815f2cc162e6e27e) } - -var fileDescriptor_815f2cc162e6e27e = []byte{ - // 345 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xcd, 0x4a, 0x3b, 0x31, - 0x14, 0xc5, 0x9b, 0xfe, 0xff, 0x54, 0x0c, 0x14, 0xda, 0xf8, 0x35, 0x8e, 0x32, 0xd4, 0x41, 0xb0, - 0xa2, 0x4e, 0x68, 0x7d, 0x02, 0x5d, 0xdb, 0x4d, 0xfd, 0x00, 0xdd, 0x48, 0xda, 0x09, 0x31, 0x30, - 0x4e, 0x42, 0x92, 0x0e, 0xed, 0xc6, 0x85, 0x4f, 0x20, 0xf8, 0x52, 0x2e, 0x0b, 0x6e, 0x5c, 0x4a, - 0xeb, 0x6b, 0x08, 0x62, 0xd3, 0x19, 0xa7, 0x15, 0xd1, 0xdd, 0xbd, 0x73, 0x7f, 0xf7, 0x9c, 0x33, - 0x97, 0xc0, 0x8d, 0x2e, 0x8d, 0xa8, 0x36, 0x9c, 0x60, 0xcd, 0x59, 0x4c, 0x22, 0x9c, 0x34, 0xb0, - 0xe9, 0x07, 0x52, 0x09, 0x23, 0x10, 0x4a, 0x87, 0x81, 0x1d, 0x06, 0x49, 0xc3, 0xdd, 0x64, 0x42, - 0xb0, 0x88, 0x62, 0x22, 0x39, 0x26, 0x71, 0x2c, 0x0c, 0x31, 0x5c, 0xc4, 0xda, 0x6e, 0xf8, 0x97, - 0xb0, 0xd2, 0xd2, 0xec, 0x74, 0x42, 0x5f, 0x50, 0xa5, 0xb9, 0x88, 0xd1, 0x1e, 0xac, 0x26, 0x24, - 0xe2, 0x21, 0x31, 0x42, 0x5d, 0x93, 0x30, 0x54, 0x54, 0x6b, 0x07, 0xd4, 0x40, 0x7d, 0xb1, 0x5d, - 0xc9, 0x06, 0x47, 0xf6, 0x3b, 0x72, 0xe0, 0x42, 0x62, 0xf7, 0x9c, 0x62, 0x0d, 0xd4, 0xff, 0xb7, - 0xd3, 0xd6, 0x77, 0xa1, 0x33, 0x2f, 0xdd, 0xa6, 0x5a, 0x8a, 0x58, 0x53, 0x7f, 0x07, 0x96, 0x5b, - 0x9a, 0x9d, 0xa9, 0xc1, 0xb9, 0x64, 0x8a, 0x84, 0x14, 0xad, 0xc2, 0xd2, 0x67, 0x64, 0xaa, 0xa6, - 0x46, 0xd3, 0xce, 0x5f, 0x83, 0x2b, 0x33, 0x60, 0xaa, 0xd0, 0x7c, 0x07, 0xf0, 0x5f, 0x4b, 0x33, - 0x74, 0x07, 0xcb, 0xb3, 0xe9, 0xb7, 0x83, 0xef, 0x47, 0x08, 0xe6, 0x83, 0xb8, 0xfb, 0x7f, 0xa1, - 0xb2, 0xb8, 0xeb, 0xf7, 0xcf, 0x6f, 0x8f, 0xc5, 0x25, 0xbf, 0x9a, 0x3b, 0xba, 0xad, 0x50, 0x02, - 0x61, 0xee, 0x37, 0xb6, 0x7e, 0x90, 0xfd, 0x42, 0xdc, 0xdd, 0x5f, 0x91, 0xcc, 0xd6, 0x9d, 0xd8, - 0x2e, 0xfb, 0x28, 0x67, 0xdb, 0xb3, 0xcc, 0xf1, 0xc9, 0xd3, 0xc8, 0x03, 0xc3, 0x91, 0x07, 0x5e, - 0x47, 0x1e, 0x78, 0x18, 0x7b, 0x85, 0xe1, 0xd8, 0x2b, 0xbc, 0x8c, 0xbd, 0xc2, 0x55, 0x93, 0x71, - 0x73, 0xd3, 0xeb, 0x04, 0x5d, 0x71, 0x8b, 0x53, 0x2b, 0xa1, 0x58, 0x56, 0x1f, 0x10, 0x29, 0x71, - 0x3f, 0x95, 0x34, 0x03, 0x49, 0x75, 0xa7, 0x34, 0x79, 0x0d, 0x87, 0x1f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xfd, 0x76, 0xc1, 0x4b, 0x5e, 0x02, 0x00, 0x00, + proto.RegisterType((*MsgSignalVersion)(nil), "celestia.signal.v2.MsgSignalVersion") + proto.RegisterType((*MsgSignalVersionResponse)(nil), "celestia.signal.v2.MsgSignalVersionResponse") + proto.RegisterType((*MsgTryUpgrade)(nil), "celestia.signal.v2.MsgTryUpgrade") + proto.RegisterType((*MsgTryUpgradeResponse)(nil), "celestia.signal.v2.MsgTryUpgradeResponse") +} + +func init() { proto.RegisterFile("celestia/signal/v2/tx.proto", fileDescriptor_152fd796bcafe44c) } + +var fileDescriptor_152fd796bcafe44c = []byte{ + // 344 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xcd, 0x4a, 0x03, 0x31, + 0x14, 0x85, 0x9b, 0x2a, 0x15, 0x03, 0x85, 0x36, 0xfe, 0x8d, 0xa3, 0x0c, 0x75, 0x10, 0xac, 0xa8, + 0x13, 0x1c, 0x9f, 0x40, 0xd7, 0x76, 0x53, 0x7f, 0x40, 0x37, 0x92, 0x76, 0x42, 0x0c, 0x8c, 0x49, + 0x48, 0xd2, 0xa1, 0xdd, 0xb8, 0xf0, 0x09, 0x04, 0x5f, 0xca, 0x65, 0xc1, 0x8d, 0x4b, 0x69, 0x7d, + 0x0d, 0x41, 0xec, 0x74, 0xc6, 0xb6, 0x22, 0xba, 0xbb, 0x77, 0xee, 0x77, 0xcf, 0x39, 0x73, 0x09, + 0xdc, 0x68, 0xd3, 0x98, 0x1a, 0xcb, 0x09, 0x36, 0x9c, 0x09, 0x12, 0xe3, 0x24, 0xc4, 0xb6, 0x1b, + 0x28, 0x2d, 0xad, 0x44, 0x28, 0x1b, 0x06, 0xe9, 0x30, 0x48, 0x42, 0x77, 0x93, 0x49, 0xc9, 0x62, + 0x8a, 0x89, 0xe2, 0x98, 0x08, 0x21, 0x2d, 0xb1, 0x5c, 0x0a, 0x93, 0x6e, 0xf8, 0x57, 0xb0, 0xd2, + 0x30, 0xec, 0x6c, 0x44, 0x5f, 0x52, 0x6d, 0xb8, 0x14, 0x68, 0x0f, 0x56, 0x13, 0x12, 0xf3, 0x88, + 0x58, 0xa9, 0x6f, 0x48, 0x14, 0x69, 0x6a, 0x8c, 0x03, 0x6a, 0xa0, 0xbe, 0xd8, 0xac, 0xe4, 0x83, + 0xe3, 0xf4, 0x3b, 0x72, 0xe0, 0x42, 0x92, 0xee, 0x39, 0xc5, 0x1a, 0xa8, 0xcf, 0x37, 0xb3, 0xd6, + 0x77, 0xa1, 0x33, 0x2b, 0xdd, 0xa4, 0x46, 0x49, 0x61, 0xa8, 0xbf, 0x03, 0xcb, 0x0d, 0xc3, 0xce, + 0x75, 0xef, 0x42, 0x31, 0x4d, 0x22, 0x8a, 0x56, 0x61, 0xe9, 0x2b, 0x32, 0xd5, 0x63, 0xa3, 0x71, + 0xe7, 0xaf, 0xc1, 0x95, 0x29, 0x30, 0x53, 0x08, 0x3f, 0x00, 0x9c, 0x6b, 0x18, 0x86, 0xee, 0x61, + 0x79, 0x3a, 0xfd, 0x76, 0xf0, 0xf3, 0x08, 0xc1, 0x6c, 0x10, 0x77, 0xff, 0x3f, 0x54, 0x1e, 0x77, + 0xfd, 0xe1, 0xe5, 0xfd, 0xa9, 0xb8, 0xe4, 0x57, 0xf3, 0xa3, 0x1f, 0x8e, 0x2b, 0x94, 0x40, 0x38, + 0xf1, 0x1b, 0x5b, 0xbf, 0xc8, 0x7e, 0x23, 0xee, 0xee, 0x9f, 0x48, 0x6e, 0xeb, 0x8e, 0x6c, 0x97, + 0x7d, 0x34, 0x61, 0xdb, 0x49, 0x99, 0x93, 0xd3, 0xe7, 0x81, 0x07, 0xfa, 0x03, 0x0f, 0xbc, 0x0d, + 0x3c, 0xf0, 0x38, 0xf4, 0x0a, 0xfd, 0xa1, 0x57, 0x78, 0x1d, 0x7a, 0x85, 0xeb, 0x90, 0x71, 0x7b, + 0xdb, 0x69, 0x05, 0x6d, 0x79, 0x87, 0x33, 0x2b, 0xa9, 0x59, 0x5e, 0x1f, 0x10, 0xa5, 0x70, 0x37, + 0x93, 0xb4, 0x3d, 0x45, 0x4d, 0xab, 0x34, 0x7a, 0x0d, 0x47, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, + 0xb1, 0xbb, 0x3b, 0x16, 0x5e, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -264,7 +264,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) SignalVersion(ctx context.Context, in *MsgSignalVersion, opts ...grpc.CallOption) (*MsgSignalVersionResponse, error) { out := new(MsgSignalVersionResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v1.Msg/SignalVersion", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v2.Msg/SignalVersion", in, out, opts...) if err != nil { return nil, err } @@ -273,7 +273,7 @@ func (c *msgClient) SignalVersion(ctx context.Context, in *MsgSignalVersion, opt func (c *msgClient) TryUpgrade(ctx context.Context, in *MsgTryUpgrade, opts ...grpc.CallOption) (*MsgTryUpgradeResponse, error) { out := new(MsgTryUpgradeResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v1.Msg/TryUpgrade", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v2.Msg/TryUpgrade", in, out, opts...) if err != nil { return nil, err } @@ -314,7 +314,7 @@ func _Msg_SignalVersion_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v1.Msg/SignalVersion", + FullMethod: "/celestia.signal.v2.Msg/SignalVersion", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).SignalVersion(ctx, req.(*MsgSignalVersion)) @@ -332,7 +332,7 @@ func _Msg_TryUpgrade_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v1.Msg/TryUpgrade", + FullMethod: "/celestia.signal.v2.Msg/TryUpgrade", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).TryUpgrade(ctx, req.(*MsgTryUpgrade)) @@ -341,7 +341,7 @@ func _Msg_TryUpgrade_Handler(srv interface{}, ctx context.Context, dec func(inte } var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.signal.v1.Msg", + ServiceName: "celestia.signal.v2.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { @@ -354,7 +354,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/signal/v1/tx.proto", + Metadata: "celestia/signal/v2/tx.proto", } func (m *MsgSignalVersion) Marshal() (dAtA []byte, err error) { diff --git a/x/signal/types/tx.pb.gw.go b/x/signal/types/tx.pb.gw.go index 9cb53050be..a46551c2bd 100644 --- a/x/signal/types/tx.pb.gw.go +++ b/x/signal/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/signal/v1/tx.proto +// source: celestia/signal/v2/tx.proto /* Package types is a reverse proxy. diff --git a/x/signal/types/upgrade.pb.go b/x/signal/types/upgrade.pb.go index 53a2a9590e..b7789c8140 100644 --- a/x/signal/types/upgrade.pb.go +++ b/x/signal/types/upgrade.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/signal/v1/upgrade.proto +// source: celestia/signal/v2/upgrade.proto package types @@ -36,7 +36,7 @@ func (m *Upgrade) Reset() { *m = Upgrade{} } func (m *Upgrade) String() string { return proto.CompactTextString(m) } func (*Upgrade) ProtoMessage() {} func (*Upgrade) Descriptor() ([]byte, []int) { - return fileDescriptor_7872d1b4aca9f179, []int{0} + return fileDescriptor_59ed80e4c9ca99b6, []int{0} } func (m *Upgrade) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -80,17 +80,17 @@ func (m *Upgrade) GetUpgradeHeight() int64 { } func init() { - proto.RegisterType((*Upgrade)(nil), "celestia.signal.v1.Upgrade") + proto.RegisterType((*Upgrade)(nil), "celestia.signal.v2.Upgrade") } -func init() { proto.RegisterFile("celestia/signal/v1/upgrade.proto", fileDescriptor_7872d1b4aca9f179) } +func init() { proto.RegisterFile("celestia/signal/v2/upgrade.proto", fileDescriptor_59ed80e4c9ca99b6) } -var fileDescriptor_7872d1b4aca9f179 = []byte{ +var fileDescriptor_59ed80e4c9ca99b6 = []byte{ // 196 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0xce, 0x4c, 0xcf, 0x4b, 0xcc, 0xd1, 0x2f, 0x33, 0xd4, 0x2f, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0xce, 0x4c, 0xcf, 0x4b, 0xcc, 0xd1, 0x2f, 0x33, 0xd2, 0x2f, 0x2d, 0x48, 0x2f, 0x4a, 0x4c, 0x49, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0xa9, - 0xd0, 0x83, 0xa8, 0xd0, 0x2b, 0x33, 0x54, 0x0a, 0xe4, 0x62, 0x0f, 0x85, 0x28, 0x12, 0x92, 0xe7, + 0xd0, 0x83, 0xa8, 0xd0, 0x2b, 0x33, 0x52, 0x0a, 0xe4, 0x62, 0x0f, 0x85, 0x28, 0x12, 0x92, 0xe7, 0xe2, 0x4e, 0x2c, 0x28, 0x88, 0x2f, 0x4b, 0x2d, 0x2a, 0xce, 0xcc, 0xcf, 0x93, 0x60, 0x54, 0x60, 0xd4, 0x60, 0x09, 0xe2, 0x4a, 0x2c, 0x28, 0x08, 0x83, 0x88, 0x08, 0xa9, 0x72, 0xf1, 0x41, 0x0d, 0x8c, 0xcf, 0x48, 0xcd, 0x4c, 0xcf, 0x28, 0x91, 0x60, 0x52, 0x60, 0xd4, 0x60, 0x0e, 0xe2, 0x85, @@ -98,7 +98,7 @@ var fileDescriptor_7872d1b4aca9f179 = []byte{ 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x1f, 0xe6, 0x96, 0xfc, 0xa2, 0x74, 0x38, 0x5b, 0x37, 0xb1, 0xa0, 0x40, 0xbf, 0x02, 0xe6, 0xfe, 0x92, 0xca, 0x82, 0xd4, - 0xe2, 0x24, 0x36, 0xb0, 0xdb, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x63, 0x22, 0x2e, 0x9d, + 0xe2, 0x24, 0x36, 0xb0, 0xdb, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x77, 0xcc, 0x8f, 0xe2, 0xdf, 0x00, 0x00, 0x00, } From 6b47f0eec6b69dfcd3daa178066966d0d279d016 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 22:53:03 -0400 Subject: [PATCH 129/140] revert unnecessary replace --- node/go.mod | 4 +--- node/go.sum | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/node/go.mod b/node/go.mod index dfebbc7694..359cb1be7a 100644 --- a/node/go.mod +++ b/node/go.mod @@ -217,7 +217,5 @@ replace ( github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - // github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 - // replace celestia-core with a local copy so we can debug why handshake doesn't occur - github.com/tendermint/tendermint => ../../celestia-core + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 ) diff --git a/node/go.sum b/node/go.sum index f2fe70359b..5d070d4c76 100644 --- a/node/go.sum +++ b/node/go.sum @@ -311,6 +311,8 @@ github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOC github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= From 9e14799b8796923c871f90323acba570d63df382 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Thu, 15 Aug 2024 23:01:17 -0400 Subject: [PATCH 130/140] refactor: multiplexer logger --- node/cmd/root.go | 4 +++- node/utils/multiplexer.go | 32 ++++++++++++++++++-------------- node/utils/start_node_test.go | 5 +++-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/node/cmd/root.go b/node/cmd/root.go index 74b2787561..9f245f05b1 100644 --- a/node/cmd/root.go +++ b/node/cmd/root.go @@ -9,6 +9,7 @@ import ( "github.com/celestiaorg/celestia-app/node/utils" "github.com/spf13/cobra" "github.com/spf13/viper" + "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) @@ -22,13 +23,14 @@ var rootCmd = &cobra.Command{ fmt.Printf("Deleting root dir: %v\n", config.TmConfig.RootDir) os.RemoveAll(config.TmConfig.RootDir) + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) dbPath := filepath.Join(config.TmConfig.RootDir, "data") fmt.Printf("dbPath: %v\n", dbPath) db, err := tmdb.NewGoLevelDB("application", dbPath) if err != nil { return err } - multiplexer := utils.NewMultiplexer(db) + multiplexer := utils.NewMultiplexer(logger, db) ctx, cancel := context.WithCancel(context.Background()) defer cancel() diff --git a/node/utils/multiplexer.go b/node/utils/multiplexer.go index 6ac3cdd4ad..902f2120ae 100644 --- a/node/utils/multiplexer.go +++ b/node/utils/multiplexer.go @@ -5,6 +5,7 @@ import ( v1 "github.com/celestiaorg/celestia-app/v2/pkg/appconsts/v1" abci "github.com/tendermint/tendermint/abci/types" + "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) @@ -17,6 +18,10 @@ var _ abci.Application = (*Multiplexer)(nil) // Multiplexer is used to switch between different versions of the application. type Multiplexer struct { + // logger is the logger used by the multiplexer + logger log.Logger + // db is the database used by the application + db tmdb.DB // application is the current application application AppWithMigrations // currentAppVersion is the version of the application that is currently @@ -26,18 +31,16 @@ type Multiplexer struct { // to. This value only differs from currentAppVersion if the current height // is an upgrade height. nextAppVersion uint64 - - // db is the database used by the application - db tmdb.DB } -func NewMultiplexer(db tmdb.DB) *Multiplexer { +func NewMultiplexer(logger log.Logger, db tmdb.DB) *Multiplexer { application := NewAppV2(db) return &Multiplexer{ + logger: logger, + db: db, application: application, currentAppVersion: initialAppVersion, nextAppVersion: initialAppVersion, - db: db, } } @@ -46,7 +49,7 @@ func NewMultiplexer(db tmdb.DB) *Multiplexer { // func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInitChain { - fmt.Printf("Multiplexer InitChain invoked with current app version %v request app version %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion) + m.logger.Debug(fmt.Sprintf("Multiplexer InitChain invoked with current app version %v request app version %v\n", m.currentAppVersion, request.ConsensusParams.Version.AppVersion)) m.currentAppVersion = request.ConsensusParams.Version.AppVersion m.nextAppVersion = request.ConsensusParams.Version.AppVersion app := m.getCurrentApp() @@ -54,32 +57,31 @@ func (m *Multiplexer) InitChain(request abci.RequestInitChain) abci.ResponseInit } func (m *Multiplexer) PrepareProposal(request abci.RequestPrepareProposal) abci.ResponsePrepareProposal { - fmt.Printf("Multiplexer PrepareProposal invoked with current app version %v\n", m.currentAppVersion) + m.logger.Debug(fmt.Sprintf("Multiplexer PrepareProposal invoked with current app version %v\n", m.currentAppVersion)) app := m.getCurrentApp() return app.PrepareProposal(request) } func (m *Multiplexer) ProcessProposal(request abci.RequestProcessProposal) abci.ResponseProcessProposal { - fmt.Printf("Multiplexer ProcessProposal invoked with current app version %v\n", m.currentAppVersion) + m.logger.Debug(fmt.Sprintf("Multiplexer ProcessProposal invoked with current app version %v\n", m.currentAppVersion)) app := m.getCurrentApp() return app.ProcessProposal(request) } func (m *Multiplexer) BeginBlock(request abci.RequestBeginBlock) abci.ResponseBeginBlock { - fmt.Printf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion) + m.logger.Debug(fmt.Sprintf("Multiplexer BeginBlock invoked with current app version %v\n", m.currentAppVersion)) app := m.getCurrentApp() return app.BeginBlock(request) } func (m *Multiplexer) DeliverTx(request abci.RequestDeliverTx) abci.ResponseDeliverTx { - fmt.Printf("Multiplexer DeliverTx invoked with current app version %v\n", m.currentAppVersion) + m.logger.Debug(fmt.Sprintf("Multiplexer DeliverTx invoked with current app version %v\n", m.currentAppVersion)) app := m.getCurrentApp() return app.DeliverTx(request) } func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlock { - fmt.Printf("Multiplexer EndBlock invoked with current app version %v height %v\n", m.currentAppVersion, request.Height) - + m.logger.Debug(fmt.Sprintf("Multiplexer EndBlock invoked with current app version %v height %v\n", m.currentAppVersion, request.Height)) app := m.getCurrentApp() got := app.EndBlock(request) if got.ConsensusParamUpdates != nil && got.ConsensusParamUpdates.Version != nil { @@ -93,7 +95,7 @@ func (m *Multiplexer) EndBlock(request abci.RequestEndBlock) abci.ResponseEndBlo } func (m *Multiplexer) Commit() abci.ResponseCommit { - fmt.Printf("Multiplexer Commit invoked with current app version %v\n", m.currentAppVersion) + m.logger.Debug(fmt.Sprintf("Multiplexer Commit invoked with current app version %v\n", m.currentAppVersion)) app := m.getCurrentApp() got := app.Commit() @@ -144,14 +146,17 @@ func (m *Multiplexer) ApplySnapshotChunk(request abci.RequestApplySnapshotChunk) app := m.getCurrentApp() return app.ApplySnapshotChunk(request) } + func (m *Multiplexer) ListSnapshots(request abci.RequestListSnapshots) abci.ResponseListSnapshots { app := m.getCurrentApp() return app.ListSnapshots(request) } + func (m *Multiplexer) LoadSnapshotChunk(request abci.RequestLoadSnapshotChunk) abci.ResponseLoadSnapshotChunk { app := m.getCurrentApp() return app.LoadSnapshotChunk(request) } + func (m *Multiplexer) OfferSnapshot(request abci.RequestOfferSnapshot) abci.ResponseOfferSnapshot { app := m.getCurrentApp() return app.OfferSnapshot(request) @@ -167,7 +172,6 @@ func (m *Multiplexer) SetOption(request abci.RequestSetOption) abci.ResponseSetO } func (m *Multiplexer) RunMigrations() []byte { - fmt.Printf("Multiplexer RunMigrations invoked with current app version %v\n", m.currentAppVersion) app := m.getCurrentApp() return app.RunMigrations() } diff --git a/node/utils/start_node_test.go b/node/utils/start_node_test.go index ac443a4162..dabc28be22 100644 --- a/node/utils/start_node_test.go +++ b/node/utils/start_node_test.go @@ -11,6 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/node/utils" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/tendermint/tendermint/libs/log" tmdb "github.com/tendermint/tm-db" ) @@ -19,11 +20,11 @@ func TestStartNode(t *testing.T) { fmt.Printf("Deleting root dir: %v\n", config.TmConfig.RootDir) os.RemoveAll(config.TmConfig.RootDir) + logger := log.NewTMLogger(log.NewSyncWriter(os.Stdout)) dbPath := filepath.Join(config.TmConfig.RootDir, "data") db, err := tmdb.NewGoLevelDB("application", dbPath) require.NoError(t, err) - - multiplexer := utils.NewMultiplexer(db) + multiplexer := utils.NewMultiplexer(logger, db) ctx, cancel := context.WithCancel(context.Background()) defer cancel() From e720578fb0478c176d5c7a9edffe5b3f5991e820 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 16 Aug 2024 12:23:28 -0400 Subject: [PATCH 131/140] resolve: config.Seal() conflict by conditionally sealing --- app/config.go | 7 ------- app/sdk_config.go | 17 +++++++++++++++++ app/sdk_config_test.go | 18 ++++++++++++++++++ go.mod | 3 ++- go.sum | 2 -- node/go.mod | 3 ++- 6 files changed, 39 insertions(+), 11 deletions(-) delete mode 100644 app/config.go create mode 100644 app/sdk_config.go create mode 100644 app/sdk_config_test.go diff --git a/app/config.go b/app/config.go deleted file mode 100644 index 6f0dd237ed..0000000000 --- a/app/config.go +++ /dev/null @@ -1,7 +0,0 @@ -package app - -func init() { - // init() was invoked by celestia-app v1.x so we don't need to perform any - // additional config set up it in celestia-app v2.x. In fact, config can't - // be modified by v2.x because we'll hit a panic: "config is sealed". -} diff --git a/app/sdk_config.go b/app/sdk_config.go new file mode 100644 index 0000000000..8adc6017ae --- /dev/null +++ b/app/sdk_config.go @@ -0,0 +1,17 @@ +package app + +import sdk "github.com/cosmos/cosmos-sdk/types" + +func init() { + maybeSetCosmosSDKConfig() +} + +func maybeSetCosmosSDKConfig() { + config := sdk.GetConfig() + if !config.IsSealed() { + config.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub) + config.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub) + config.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub) + config.Seal() + } +} diff --git a/app/sdk_config_test.go b/app/sdk_config_test.go new file mode 100644 index 0000000000..28d6f43a52 --- /dev/null +++ b/app/sdk_config_test.go @@ -0,0 +1,18 @@ +package app + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/assert" +) + +func Test_maybeSetCosmosSDKConfig(t *testing.T) { + config := sdk.GetConfig() + assert.Equal(t, Bech32PrefixAccAddr, config.GetBech32AccountAddrPrefix()) + assert.Equal(t, Bech32PrefixAccPub, config.GetBech32AccountPubPrefix()) + assert.Equal(t, Bech32PrefixValAddr, config.GetBech32ValidatorAddrPrefix()) + assert.Equal(t, Bech32PrefixValPub, config.GetBech32ValidatorPubPrefix()) + assert.Equal(t, Bech32PrefixConsAddr, config.GetBech32ConsensusAddrPrefix()) + assert.Equal(t, Bech32PrefixConsPub, config.GetBech32ConsensusPubPrefix()) +} diff --git a/go.mod b/go.mod index 5f1fab11a6..85c5d08bca 100644 --- a/go.mod +++ b/go.mod @@ -246,7 +246,8 @@ require ( ) replace ( - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 + // replace cosmos-sdk with a local copy that exposes config.IsSealed(). + github.com/cosmos/cosmos-sdk => ../cosmos-sdk // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 diff --git a/go.sum b/go.sum index 034dabe1c1..bc4565594b 100644 --- a/go.sum +++ b/go.sum @@ -320,8 +320,6 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= -github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= -github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square/v2 v2.0.0-rc2 h1:4D+ASgZGYVCsffc2uhPagACrvNiLZu9/CqNYvnlHCgg= github.com/celestiaorg/go-square/v2 v2.0.0-rc2/go.mod h1:eeaU8f8jBpk3ZS/gaDZIlTesJR2F51QAmveNzWH6aEU= github.com/celestiaorg/knuu v0.14.0 h1:96uaDHTzlTfhDLrAiygq9Ewow7UzOzGAbUvMwws1S4A= diff --git a/node/go.mod b/node/go.mod index 359cb1be7a..0756f704ed 100644 --- a/node/go.mod +++ b/node/go.mod @@ -211,7 +211,8 @@ replace ( github.com/celestiaorg/celestia-app/v2 => ../../celestia-app-v2 // replace celestia-app v3 with a local copy so that we can modify it's modules.go github.com/celestiaorg/celestia-app/v3 => ../ - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 + // replace cosmos-sdk with a local copy that exposes config.IsSealed(). + github.com/cosmos/cosmos-sdk => ../../cosmos-sdk // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 From 28c8edde3592e74a375c8d42550385b44c383b19 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Fri, 16 Aug 2024 14:27:16 -0400 Subject: [PATCH 132/140] avoid duplicate proto registry for signal types --- app/app.go | 4 +- app/module/configurator_test.go | 4 +- app/modules.go | 4 +- app/test/circuit_breaker_test.go | 2 +- app/test/std_sdk_test.go | 2 +- go.mod | 20 +- go.sum | 44 +- node/go.mod | 18 +- node/go.sum | 34 +- proto/celestia/signal/{v2 => v1}/query.proto | 4 +- proto/celestia/signal/{v2 => v1}/tx.proto | 2 +- .../celestia/signal/{v2 => v1}/upgrade.proto | 2 +- x/signal/cli/cli_test.go | 2 +- x/signal/cli/query.go | 2 +- x/signal/cli/tx.go | 2 +- x/signal/go.mod | 208 ++ x/signal/go.sum | 2023 +++++++++++++++++ x/signal/integration_test.go | 4 +- x/signal/keeper.go | 2 +- x/signal/keeper_test.go | 4 +- x/signal/module.go | 4 +- x/signal/types/query.pb.go | 94 +- x/signal/types/query.pb.gw.go | 2 +- x/signal/types/tx.pb.go | 86 +- x/signal/types/tx.pb.gw.go | 2 +- x/signal/types/upgrade.pb.go | 16 +- 26 files changed, 2412 insertions(+), 179 deletions(-) rename proto/celestia/signal/{v2 => v1}/query.proto (95%) rename proto/celestia/signal/{v2 => v1}/tx.proto (97%) rename proto/celestia/signal/{v2 => v1}/upgrade.proto (93%) create mode 100644 x/signal/go.mod create mode 100644 x/signal/go.sum diff --git a/app/app.go b/app/app.go index 61acad3fe5..88c3722ab0 100644 --- a/app/app.go +++ b/app/app.go @@ -21,9 +21,9 @@ import ( mintkeeper "github.com/celestiaorg/celestia-app/v3/x/mint/keeper" minttypes "github.com/celestiaorg/celestia-app/v3/x/mint/types" "github.com/celestiaorg/celestia-app/v3/x/paramfilter" - "github.com/celestiaorg/celestia-app/v3/x/signal" - signaltypes "github.com/celestiaorg/celestia-app/v3/x/signal/types" "github.com/celestiaorg/celestia-app/v3/x/tokenfilter" + "github.com/celestiaorg/celestia-app/x/signal" + signaltypes "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" diff --git a/app/module/configurator_test.go b/app/module/configurator_test.go index a93713938a..b81516dfee 100644 --- a/app/module/configurator_test.go +++ b/app/module/configurator_test.go @@ -6,8 +6,8 @@ import ( "github.com/celestiaorg/celestia-app/v3/app" "github.com/celestiaorg/celestia-app/v3/app/encoding" "github.com/celestiaorg/celestia-app/v3/app/module" - "github.com/celestiaorg/celestia-app/v3/x/signal" - signaltypes "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal" + signaltypes "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/cosmos/cosmos-sdk/store" storetypes "github.com/cosmos/cosmos-sdk/store/types" "github.com/cosmos/cosmos-sdk/tests/mocks" diff --git a/app/modules.go b/app/modules.go index c87c3bd93d..8890054d89 100644 --- a/app/modules.go +++ b/app/modules.go @@ -12,8 +12,8 @@ import ( "github.com/celestiaorg/celestia-app/v3/x/minfee" "github.com/celestiaorg/celestia-app/v3/x/mint" minttypes "github.com/celestiaorg/celestia-app/v3/x/mint/types" - "github.com/celestiaorg/celestia-app/v3/x/signal" - signaltypes "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal" + signaltypes "github.com/celestiaorg/celestia-app/x/signal/types" sdkmodule "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" diff --git a/app/test/circuit_breaker_test.go b/app/test/circuit_breaker_test.go index 078f53bc08..5cb01b554b 100644 --- a/app/test/circuit_breaker_test.go +++ b/app/test/circuit_breaker_test.go @@ -11,7 +11,7 @@ import ( "github.com/celestiaorg/celestia-app/v3/test/util" "github.com/celestiaorg/celestia-app/v3/test/util/blobfactory" "github.com/celestiaorg/celestia-app/v3/test/util/testfactory" - signaltypes "github.com/celestiaorg/celestia-app/v3/x/signal/types" + signaltypes "github.com/celestiaorg/celestia-app/x/signal/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/authz" "github.com/stretchr/testify/assert" diff --git a/app/test/std_sdk_test.go b/app/test/std_sdk_test.go index 1ef3766e8a..810da6001a 100644 --- a/app/test/std_sdk_test.go +++ b/app/test/std_sdk_test.go @@ -14,7 +14,7 @@ import ( "github.com/celestiaorg/celestia-app/v3/test/util/testfactory" "github.com/celestiaorg/celestia-app/v3/test/util/testnode" "github.com/celestiaorg/celestia-app/v3/x/minfee" - signal "github.com/celestiaorg/celestia-app/v3/x/signal/types" + signal "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/celestiaorg/go-square/v2/share" nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node" "github.com/cosmos/cosmos-sdk/crypto/hd" diff --git a/go.mod b/go.mod index 85c5d08bca..6ad1be6deb 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 + github.com/celestiaorg/celestia-app/x/signal v1.0.0 github.com/celestiaorg/go-square/v2 v2.0.0-rc2 github.com/celestiaorg/knuu v0.14.0 github.com/celestiaorg/nmt v0.22.1 @@ -14,7 +15,7 @@ require ( github.com/cosmos/cosmos-sdk v0.46.16 github.com/cosmos/gogoproto v1.5.0 github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 - github.com/cosmos/ibc-go/v6 v6.2.2 + github.com/cosmos/ibc-go/v6 v6.3.1 github.com/ethereum/go-ethereum v1.14.7 github.com/gogo/protobuf v1.3.3 github.com/golang/mock v1.6.0 @@ -24,13 +25,13 @@ require ( github.com/rakyll/statik v0.1.7 github.com/rs/zerolog v1.33.0 github.com/spf13/cast v1.6.0 - github.com/spf13/cobra v1.8.0 + github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 golang.org/x/exp v0.0.0-20240213143201-ec583247a57a - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 gopkg.in/yaml.v2 v2.4.0 @@ -218,17 +219,17 @@ require ( go.opentelemetry.io/proto/otlp v1.1.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.23.0 // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -246,6 +247,7 @@ require ( ) replace ( + github.com/celestiaorg/celestia-app/x/signal => ./x/signal // replace cosmos-sdk with a local copy that exposes config.IsSealed(). github.com/cosmos/cosmos-sdk => ../cosmos-sdk // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 diff --git a/go.sum b/go.sum index bc4565594b..78e333ef19 100644 --- a/go.sum +++ b/go.sum @@ -425,15 +425,15 @@ github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= -github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= -github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= +github.com/cosmos/ibc-go/v6 v6.3.1 h1:/5ur3AsmNW8WuOevfODHlaY5Ze236PBNE3vVo9o3fQA= +github.com/cosmos/ibc-go/v6 v6.3.1/go.mod h1:Dm14j9s094bGyCEE8W4fD+2t8IneHv+cz+80Mvwjr1w= github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.3 h1:qMCsGGgs+MAzDFyp9LpAe1Lqy/fY/qCovCm0qnXZOBM= -github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= @@ -1236,8 +1236,8 @@ github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= -github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -1431,8 +1431,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1540,8 +1540,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1697,14 +1697,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1715,8 +1715,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1789,8 +1789,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1976,10 +1976,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/node/go.mod b/node/go.mod index 0756f704ed..2205117e95 100644 --- a/node/go.mod +++ b/node/go.mod @@ -35,6 +35,7 @@ require ( github.com/bits-and-blooms/bitset v1.10.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/celestia-app/x/signal v1.0.0 // indirect github.com/celestiaorg/go-square v1.1.0 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect github.com/celestiaorg/go-square/v2 v2.0.0-rc2 // indirect @@ -58,7 +59,7 @@ require ( github.com/cosmos/gorocksdb v1.2.0 // indirect github.com/cosmos/iavl v0.19.6 // indirect github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect - github.com/cosmos/ibc-go/v6 v6.2.2 // indirect + github.com/cosmos/ibc-go/v6 v6.3.1 // indirect github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect @@ -181,19 +182,19 @@ require ( go.opentelemetry.io/otel/sdk v1.26.0 // indirect go.opentelemetry.io/otel/trace v1.26.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.23.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect - golang.org/x/net v0.25.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect google.golang.org/grpc v1.65.0 // indirect google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -211,6 +212,7 @@ replace ( github.com/celestiaorg/celestia-app/v2 => ../../celestia-app-v2 // replace celestia-app v3 with a local copy so that we can modify it's modules.go github.com/celestiaorg/celestia-app/v3 => ../ + github.com/celestiaorg/celestia-app/x/signal => ../x/signal // replace cosmos-sdk with a local copy that exposes config.IsSealed(). github.com/cosmos/cosmos-sdk => ../../cosmos-sdk // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 diff --git a/node/go.sum b/node/go.sum index 5d070d4c76..06b7ac2a39 100644 --- a/node/go.sum +++ b/node/go.sum @@ -313,8 +313,6 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= -github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16 h1:SeQ7Y/CyOcUMKo7mQiexaj/pZ/xIgyuZFIwYZwpSkWE= -github.com/celestiaorg/cosmos-sdk v1.24.1-sdk-v0.46.16/go.mod h1:Bpl1LSWiDpQumgOhhMTZBMopqa0j7fRasIhvTZB44P0= github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= @@ -418,8 +416,8 @@ github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= -github.com/cosmos/ibc-go/v6 v6.2.2 h1:xVnlfV+IFPMkAEuWdZpRbky1jfGcob9i+T+xQ2LRf48= -github.com/cosmos/ibc-go/v6 v6.2.2/go.mod h1:XLsARy4Y7+GtAqzMcxNdlQf6lx+ti1e8KcMGv5NIK7A= +github.com/cosmos/ibc-go/v6 v6.3.1 h1:/5ur3AsmNW8WuOevfODHlaY5Ze236PBNE3vVo9o3fQA= +github.com/cosmos/ibc-go/v6 v6.3.1/go.mod h1:Dm14j9s094bGyCEE8W4fD+2t8IneHv+cz+80Mvwjr1w= github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= @@ -1365,8 +1363,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1474,8 +1472,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1629,14 +1627,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1647,8 +1645,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1905,10 +1903,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157 h1:7whR9kGa5LUwFtpLm2ArCEejtnxlGeLbAyjFY8sGNFw= -google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/proto/celestia/signal/v2/query.proto b/proto/celestia/signal/v1/query.proto similarity index 95% rename from proto/celestia/signal/v2/query.proto rename to proto/celestia/signal/v1/query.proto index 648c38e8b2..1d1b04f54b 100644 --- a/proto/celestia/signal/v2/query.proto +++ b/proto/celestia/signal/v1/query.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package celestia.signal.v2; +package celestia.signal.v1; import "google/api/annotations.proto"; -import "celestia/signal/v2/upgrade.proto"; +import "celestia/signal/v1/upgrade.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/signal/types"; diff --git a/proto/celestia/signal/v2/tx.proto b/proto/celestia/signal/v1/tx.proto similarity index 97% rename from proto/celestia/signal/v2/tx.proto rename to proto/celestia/signal/v1/tx.proto index 64e9ea21d4..42634cea6b 100644 --- a/proto/celestia/signal/v2/tx.proto +++ b/proto/celestia/signal/v1/tx.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.signal.v2; +package celestia.signal.v1; import "google/api/annotations.proto"; diff --git a/proto/celestia/signal/v2/upgrade.proto b/proto/celestia/signal/v1/upgrade.proto similarity index 93% rename from proto/celestia/signal/v2/upgrade.proto rename to proto/celestia/signal/v1/upgrade.proto index 2863c6cbaf..6d5ac4e03e 100644 --- a/proto/celestia/signal/v2/upgrade.proto +++ b/proto/celestia/signal/v1/upgrade.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.signal.v2; +package celestia.signal.v1; option go_package = "github.com/celestiaorg/celestia-app/x/signal/types"; diff --git a/x/signal/cli/cli_test.go b/x/signal/cli/cli_test.go index 0fa3399037..a789090591 100644 --- a/x/signal/cli/cli_test.go +++ b/x/signal/cli/cli_test.go @@ -4,7 +4,7 @@ import ( "testing" "github.com/celestiaorg/celestia-app/v3/test/util/testnode" - "github.com/celestiaorg/celestia-app/v3/x/signal/cli" + "github.com/celestiaorg/celestia-app/x/signal/cli" testutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/stretchr/testify/suite" ) diff --git a/x/signal/cli/query.go b/x/signal/cli/query.go index a0548c8376..d93dbe721d 100644 --- a/x/signal/cli/query.go +++ b/x/signal/cli/query.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/spf13/cobra" diff --git a/x/signal/cli/tx.go b/x/signal/cli/tx.go index 0c3e49eeaa..1f4e771d80 100644 --- a/x/signal/cli/tx.go +++ b/x/signal/cli/tx.go @@ -4,7 +4,7 @@ import ( "fmt" "strconv" - "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" "github.com/cosmos/cosmos-sdk/client/tx" diff --git a/x/signal/go.mod b/x/signal/go.mod new file mode 100644 index 0000000000..95d8ca707e --- /dev/null +++ b/x/signal/go.mod @@ -0,0 +1,208 @@ +module github.com/celestiaorg/celestia-app/x/signal + +go 1.22.6 + +replace ( + // replace cosmos-sdk with a local copy that exposes config.IsSealed(). + github.com/cosmos/cosmos-sdk => ../../../cosmos-sdk + // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 + // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 + github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 +) + +require ( + cosmossdk.io/errors v1.0.1 + cosmossdk.io/math v1.3.0 + github.com/celestiaorg/celestia-app/v3 v3.0.0-20240816121537-a28b9e7160cc + github.com/cosmos/cosmos-sdk v0.46.16 + github.com/cosmos/ibc-go/v6 v6.3.1 + github.com/gogo/protobuf v1.3.3 + github.com/golang/protobuf v1.5.4 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.9.0 + github.com/tendermint/tendermint v0.34.29 + github.com/tendermint/tm-db v0.6.7 + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 + google.golang.org/grpc v1.65.0 +) + +require ( + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/iam v1.1.6 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/Workiva/go-datastructures v1.0.53 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/go-square/v2 v2.0.0-rc2 // indirect + github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect + github.com/celestiaorg/nmt v0.22.1 // indirect + github.com/celestiaorg/rsmt2d v0.14.0 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect + github.com/cometbft/cometbft-db v0.7.0 // indirect + github.com/confio/ics23/go v0.9.1 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogoproto v1.5.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.6 // indirect + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/creachadair/taskgroup v0.3.2 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/ethereum/go-ethereum v1.14.7 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/gateway v1.1.0 // indirect + github.com/golang/glog v1.2.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/google/s2a-go v0.1.7 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.2 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/grafana/otel-profiling-go v0.5.1 // indirect + github.com/grafana/pyroscope-go v1.1.1 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/holiman/uint256 v1.3.0 // indirect + github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/reedsolomon v1.12.1 // indirect + github.com/lib/pq v1.10.7 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mmcloughlin/addchain v0.4.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect + github.com/prometheus/client_model v0.6.0 // indirect + github.com/prometheus/common v0.53.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/rakyll/statik v0.1.7 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rs/cors v1.8.3 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/shirou/gopsutil v3.21.6+incompatible // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.6 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect + go.opentelemetry.io/otel v1.26.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect + go.opentelemetry.io/otel/metric v1.26.0 // indirect + go.opentelemetry.io/otel/sdk v1.26.0 // indirect + go.opentelemetry.io/otel/trace v1.26.0 // indirect + golang.org/x/crypto v0.24.0 // indirect + golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/oauth2 v0.20.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + golang.org/x/time v0.5.0 // indirect + google.golang.org/api v0.169.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + nhooyr.io/websocket v1.8.6 // indirect + rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) diff --git a/x/signal/go.sum b/x/signal/go.sum new file mode 100644 index 0000000000..7fa747ef82 --- /dev/null +++ b/x/signal/go.sum @@ -0,0 +1,2023 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= +github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1:eSYp2T6f0apnuW8TzhV3f6Aff2SE8Dwio++U4ha4yEM= +github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= +github.com/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= +github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= +github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= +github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= +github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= +github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= +github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= +github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= +github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= +github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= +github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= +github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= +github.com/celestiaorg/celestia-app/v3 v3.0.0-20240816121537-a28b9e7160cc h1:PKAXYmJNaPD4v7dOy/zj1p19XjI02aMTxQCa2dkiBrY= +github.com/celestiaorg/celestia-app/v3 v3.0.0-20240816121537-a28b9e7160cc/go.mod h1:/GdHBBUhu27XWq4tghYjYqiOi8AqdoqqgI3Hne2lZ08= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= +github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= +github.com/celestiaorg/go-square/v2 v2.0.0-rc2 h1:4D+ASgZGYVCsffc2uhPagACrvNiLZu9/CqNYvnlHCgg= +github.com/celestiaorg/go-square/v2 v2.0.0-rc2/go.mod h1:eeaU8f8jBpk3ZS/gaDZIlTesJR2F51QAmveNzWH6aEU= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= +github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= +github.com/celestiaorg/nmt v0.22.1 h1:t7fqoP5MJ8mBns5DB2XjfcPxQpS3CKMkY+v+BEkDxYc= +github.com/celestiaorg/nmt v0.22.1/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= +github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= +github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= +github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 h1:Hz4nkpStoXIHrC77CIEyu2mRiN2qysGEZPFRf0fpv7w= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2/go.mod h1:Jo934o/sW7fNxuOa/TjCalSalz+1Fd649eLyANaJx8g= +github.com/cosmos/ibc-go/v6 v6.3.1 h1:/5ur3AsmNW8WuOevfODHlaY5Ze236PBNE3vVo9o3fQA= +github.com/cosmos/ibc-go/v6 v6.3.1/go.mod h1:Dm14j9s094bGyCEE8W4fD+2t8IneHv+cz+80Mvwjr1w= +github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= +github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11 h1:IPrmumsT9t5BS7XcPhgsCTlkWbYg80SEXUzDpReaU6Y= +github.com/docker/go-connections v0.4.1-0.20210727194412-58542c764a11/go.mod h1:a6bNUGTbQBsY6VRHTr4h/rkOXjl244DyRD0tx3fgq4Q= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= +github.com/ethereum/go-ethereum v1.14.7 h1:EHpv3dE8evQmpVEQ/Ne2ahB06n2mQptdwqaMNhAT29g= +github.com/ethereum/go-ethereum v1.14.7/go.mod h1:Mq0biU2jbdmKSZoqOj29017ygFrMnB5/Rifwp980W4o= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= +github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= +github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= +github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= +github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= +github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= +github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.3.0 h1:4wdcm/tnd0xXdu7iS3ruNvxkWwrb4aeBQv19ayYn8F4= +github.com/holiman/uint256 v1.3.0/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= +github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= +github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= +github.com/klauspost/reedsolomon v1.12.1/go.mod h1:nEi5Kjb6QqtbofI6s+cbG/j1da11c96IBYBSnVGtuBs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= +github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h1USek5+NqSA0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/onsi/gomega v1.20.0/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= +github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil v3.21.6+incompatible h1:mmZtAlWSd8U2HeRTjswbnDLPxqsEoK01NK+GZ1P+nEM= +github.com/shirou/gopsutil v3.21.6+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= +github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= +github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +gitlab.com/NebulousLabs/errors v0.0.0-20171229012116-7ead97ef90b8/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975 h1:L/ENs/Ar1bFzUeKx6m3XjlmBgIUlykX9dzvp5k9NGxc= +gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ0dpQyWwlENaeZVBiQRjhMEZvk6VTXquzl3FOFP8= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= +gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= +go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= +go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= +go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= +go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= +go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= +go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= +go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= +go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= +go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= +go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200109152110-61a87790db17/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= +golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= +gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/x/signal/integration_test.go b/x/signal/integration_test.go index 434b9cf882..4e391b2037 100644 --- a/x/signal/integration_test.go +++ b/x/signal/integration_test.go @@ -5,8 +5,8 @@ import ( "github.com/celestiaorg/celestia-app/v3/app" testutil "github.com/celestiaorg/celestia-app/v3/test/util" - "github.com/celestiaorg/celestia-app/v3/x/signal" - "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal" + "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/stretchr/testify/require" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/signal/keeper.go b/x/signal/keeper.go index ed280c67f4..774522541d 100644 --- a/x/signal/keeper.go +++ b/x/signal/keeper.go @@ -5,7 +5,7 @@ import ( "encoding/binary" sdkmath "cosmossdk.io/math" - "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/cosmos/cosmos-sdk/codec" storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/signal/keeper_test.go b/x/signal/keeper_test.go index a476562696..88566753ee 100644 --- a/x/signal/keeper_test.go +++ b/x/signal/keeper_test.go @@ -14,8 +14,8 @@ import ( "github.com/celestiaorg/celestia-app/v3/app/encoding" v1 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v1" v2 "github.com/celestiaorg/celestia-app/v3/pkg/appconsts/v2" - "github.com/celestiaorg/celestia-app/v3/x/signal" - "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal" + "github.com/celestiaorg/celestia-app/x/signal/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/x/signal/module.go b/x/signal/module.go index 9423824e28..54174725d1 100644 --- a/x/signal/module.go +++ b/x/signal/module.go @@ -8,8 +8,8 @@ import ( "github.com/spf13/cobra" abci "github.com/tendermint/tendermint/abci/types" - "github.com/celestiaorg/celestia-app/v3/x/signal/cli" - "github.com/celestiaorg/celestia-app/v3/x/signal/types" + "github.com/celestiaorg/celestia-app/x/signal/cli" + "github.com/celestiaorg/celestia-app/x/signal/types" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" diff --git a/x/signal/types/query.pb.go b/x/signal/types/query.pb.go index 2c48ce89e4..ecbaa304db 100644 --- a/x/signal/types/query.pb.go +++ b/x/signal/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/signal/v2/query.proto +// source: celestia/signal/v1/query.proto package types @@ -37,7 +37,7 @@ func (m *QueryVersionTallyRequest) Reset() { *m = QueryVersionTallyReque func (m *QueryVersionTallyRequest) String() string { return proto.CompactTextString(m) } func (*QueryVersionTallyRequest) ProtoMessage() {} func (*QueryVersionTallyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ac017e15f9a5094a, []int{0} + return fileDescriptor_7af24246367e432c, []int{0} } func (m *QueryVersionTallyRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -84,7 +84,7 @@ func (m *QueryVersionTallyResponse) Reset() { *m = QueryVersionTallyResp func (m *QueryVersionTallyResponse) String() string { return proto.CompactTextString(m) } func (*QueryVersionTallyResponse) ProtoMessage() {} func (*QueryVersionTallyResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ac017e15f9a5094a, []int{1} + return fileDescriptor_7af24246367e432c, []int{1} } func (m *QueryVersionTallyResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -142,7 +142,7 @@ func (m *QueryGetUpgradeRequest) Reset() { *m = QueryGetUpgradeRequest{} func (m *QueryGetUpgradeRequest) String() string { return proto.CompactTextString(m) } func (*QueryGetUpgradeRequest) ProtoMessage() {} func (*QueryGetUpgradeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_ac017e15f9a5094a, []int{2} + return fileDescriptor_7af24246367e432c, []int{2} } func (m *QueryGetUpgradeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -180,7 +180,7 @@ func (m *QueryGetUpgradeResponse) Reset() { *m = QueryGetUpgradeResponse func (m *QueryGetUpgradeResponse) String() string { return proto.CompactTextString(m) } func (*QueryGetUpgradeResponse) ProtoMessage() {} func (*QueryGetUpgradeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_ac017e15f9a5094a, []int{3} + return fileDescriptor_7af24246367e432c, []int{3} } func (m *QueryGetUpgradeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -217,42 +217,42 @@ func (m *QueryGetUpgradeResponse) GetUpgrade() *Upgrade { } func init() { - proto.RegisterType((*QueryVersionTallyRequest)(nil), "celestia.signal.v2.QueryVersionTallyRequest") - proto.RegisterType((*QueryVersionTallyResponse)(nil), "celestia.signal.v2.QueryVersionTallyResponse") - proto.RegisterType((*QueryGetUpgradeRequest)(nil), "celestia.signal.v2.QueryGetUpgradeRequest") - proto.RegisterType((*QueryGetUpgradeResponse)(nil), "celestia.signal.v2.QueryGetUpgradeResponse") -} - -func init() { proto.RegisterFile("celestia/signal/v2/query.proto", fileDescriptor_ac017e15f9a5094a) } - -var fileDescriptor_ac017e15f9a5094a = []byte{ - // 414 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x6f, 0xda, 0x30, - 0x18, 0xc6, 0x31, 0xfb, 0x83, 0x64, 0xd0, 0x36, 0x59, 0xd3, 0x96, 0x65, 0x28, 0x62, 0xb9, 0x6c, - 0xda, 0x20, 0xd6, 0xb2, 0xed, 0x0b, 0xec, 0xd2, 0x4b, 0x0f, 0x14, 0xb5, 0x1c, 0x7a, 0x41, 0x06, - 0xac, 0x10, 0x29, 0x8d, 0x4d, 0xec, 0xa4, 0x45, 0x55, 0x0f, 0xed, 0x17, 0x68, 0xa5, 0xaa, 0xc7, - 0x7e, 0x9f, 0x1e, 0x91, 0x7a, 0xe9, 0xb1, 0x82, 0x7e, 0x90, 0x0a, 0xdb, 0x01, 0x2a, 0x40, 0xe2, - 0x06, 0xef, 0xfb, 0x7b, 0x9f, 0xf7, 0x79, 0x1f, 0x07, 0x3a, 0x3d, 0x1a, 0x51, 0x21, 0x43, 0x82, - 0x45, 0x18, 0xc4, 0x24, 0xc2, 0x99, 0x8f, 0x87, 0x29, 0x4d, 0x46, 0x1e, 0x4f, 0x98, 0x64, 0x08, - 0xe5, 0x7d, 0x4f, 0xf7, 0xbd, 0xcc, 0xb7, 0xab, 0x01, 0x63, 0x41, 0x44, 0x31, 0xe1, 0x21, 0x26, - 0x71, 0xcc, 0x24, 0x91, 0x21, 0x8b, 0x85, 0x9e, 0xb0, 0x6b, 0x6b, 0x14, 0x53, 0x1e, 0x24, 0xa4, - 0x4f, 0x35, 0xe1, 0xfe, 0x85, 0xd6, 0xde, 0x6c, 0x45, 0x9b, 0x26, 0x22, 0x64, 0xf1, 0x3e, 0x89, - 0xa2, 0x51, 0x8b, 0x0e, 0x53, 0x2a, 0x24, 0xb2, 0x60, 0x29, 0xd3, 0x65, 0x0b, 0xd4, 0xc0, 0x8f, - 0xd7, 0xad, 0xfc, 0xaf, 0x7b, 0x03, 0xe0, 0x97, 0x35, 0x63, 0x82, 0xb3, 0x58, 0x50, 0xf4, 0x0d, - 0x56, 0x32, 0x26, 0xc3, 0x38, 0xe8, 0x70, 0x76, 0x4c, 0x13, 0x33, 0x5c, 0xd6, 0xb5, 0xe6, 0xac, - 0x84, 0xbe, 0xc3, 0xf7, 0x72, 0x90, 0x50, 0x31, 0x60, 0x51, 0xdf, 0x50, 0x45, 0x45, 0xbd, 0x9b, - 0x97, 0x35, 0x58, 0x87, 0x48, 0x32, 0x49, 0xa2, 0xce, 0x0b, 0xc5, 0x57, 0x8a, 0xfd, 0xa0, 0x3a, - 0xed, 0x85, 0xac, 0x6b, 0xc1, 0x4f, 0xca, 0xd6, 0x0e, 0x95, 0x07, 0xfa, 0x4c, 0x73, 0x8b, 0xdb, - 0x84, 0x9f, 0x57, 0x3a, 0xc6, 0xee, 0x3f, 0x58, 0x32, 0x99, 0x28, 0xa7, 0x65, 0xff, 0xab, 0xb7, - 0x1a, 0xb4, 0x97, 0x4f, 0xe5, 0xac, 0x7f, 0x5b, 0x84, 0x6f, 0x94, 0x24, 0xba, 0x04, 0xb0, 0xb2, - 0x1c, 0x04, 0xaa, 0xaf, 0x13, 0xd8, 0x14, 0xb3, 0xdd, 0xd8, 0x92, 0xd6, 0x76, 0x5d, 0xf7, 0xe2, - 0xfe, 0xe9, 0xba, 0x58, 0x45, 0xf6, 0xfc, 0x4d, 0x7f, 0x63, 0x39, 0x23, 0xf0, 0xa9, 0x79, 0x9e, - 0x33, 0x74, 0x0e, 0x20, 0x5c, 0x5c, 0x8a, 0x7e, 0x6e, 0xdc, 0xb0, 0x12, 0x94, 0xfd, 0x6b, 0x2b, - 0xd6, 0x78, 0xb1, 0x95, 0x97, 0x8f, 0x08, 0x2d, 0x79, 0x31, 0xf9, 0xfc, 0xdf, 0xbd, 0x9b, 0x38, - 0x60, 0x3c, 0x71, 0xc0, 0xe3, 0xc4, 0x01, 0x57, 0x53, 0xa7, 0x30, 0x9e, 0x3a, 0x85, 0x87, 0xa9, - 0x53, 0x38, 0xf4, 0x83, 0x50, 0x0e, 0xd2, 0xae, 0xd7, 0x63, 0x47, 0x38, 0x5f, 0xc6, 0x92, 0x60, - 0xfe, 0xbb, 0x41, 0x38, 0xc7, 0x27, 0xb9, 0xa4, 0x1c, 0x71, 0x2a, 0xba, 0x6f, 0xd5, 0xe7, 0xfa, - 0xe7, 0x39, 0x00, 0x00, 0xff, 0xff, 0xc7, 0xc2, 0x4a, 0x39, 0x24, 0x03, 0x00, 0x00, + proto.RegisterType((*QueryVersionTallyRequest)(nil), "celestia.signal.v1.QueryVersionTallyRequest") + proto.RegisterType((*QueryVersionTallyResponse)(nil), "celestia.signal.v1.QueryVersionTallyResponse") + proto.RegisterType((*QueryGetUpgradeRequest)(nil), "celestia.signal.v1.QueryGetUpgradeRequest") + proto.RegisterType((*QueryGetUpgradeResponse)(nil), "celestia.signal.v1.QueryGetUpgradeResponse") +} + +func init() { proto.RegisterFile("celestia/signal/v1/query.proto", fileDescriptor_7af24246367e432c) } + +var fileDescriptor_7af24246367e432c = []byte{ + // 411 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4f, 0xe2, 0x40, + 0x18, 0xc6, 0x19, 0xf6, 0x0f, 0xc9, 0x40, 0x76, 0x37, 0x93, 0xcd, 0x6e, 0xb7, 0x4b, 0x1a, 0xb6, + 0x97, 0xdd, 0xac, 0xd0, 0x09, 0xa8, 0x5f, 0xc0, 0x8b, 0x17, 0x0f, 0x48, 0x94, 0x83, 0x17, 0x32, + 0xc0, 0xa4, 0x34, 0xa9, 0x9d, 0xa1, 0x33, 0xad, 0x12, 0xe3, 0x41, 0xbf, 0x80, 0x26, 0xc6, 0xa3, + 0xdf, 0xc7, 0x23, 0x89, 0x17, 0x8f, 0x06, 0xfc, 0x20, 0x86, 0x99, 0x16, 0x30, 0x85, 0x84, 0x5b, + 0xfb, 0xbe, 0xbf, 0xf7, 0x99, 0xe7, 0x7d, 0x66, 0xa0, 0xd5, 0xa3, 0x3e, 0x15, 0xd2, 0x23, 0x58, + 0x78, 0x6e, 0x40, 0x7c, 0x1c, 0xd7, 0xf1, 0x30, 0xa2, 0xe1, 0xc8, 0xe1, 0x21, 0x93, 0x0c, 0xa1, + 0xb4, 0xef, 0xe8, 0xbe, 0x13, 0xd7, 0xcd, 0xb2, 0xcb, 0x98, 0xeb, 0x53, 0x4c, 0xb8, 0x87, 0x49, + 0x10, 0x30, 0x49, 0xa4, 0xc7, 0x02, 0xa1, 0x27, 0xcc, 0xca, 0x0a, 0xc5, 0x88, 0xbb, 0x21, 0xe9, + 0x53, 0x4d, 0xd8, 0x3b, 0xd0, 0x38, 0x9c, 0x1d, 0xd1, 0xa6, 0xa1, 0xf0, 0x58, 0x70, 0x44, 0x7c, + 0x7f, 0xd4, 0xa2, 0xc3, 0x88, 0x0a, 0x89, 0x0c, 0x58, 0x88, 0x75, 0xd9, 0x00, 0x15, 0xf0, 0xef, + 0x63, 0x2b, 0xfd, 0xb5, 0xef, 0x01, 0xfc, 0xb5, 0x62, 0x4c, 0x70, 0x16, 0x08, 0x8a, 0xfe, 0xc0, + 0x52, 0xcc, 0xa4, 0x17, 0xb8, 0x1d, 0xce, 0xce, 0x68, 0x98, 0x0c, 0x17, 0x75, 0xad, 0x39, 0x2b, + 0xa1, 0xbf, 0xf0, 0xab, 0x1c, 0x84, 0x54, 0x0c, 0x98, 0xdf, 0x4f, 0xa8, 0xbc, 0xa2, 0xbe, 0xcc, + 0xcb, 0x1a, 0xac, 0x42, 0x24, 0x99, 0x24, 0x7e, 0xe7, 0x9d, 0xe2, 0x07, 0xc5, 0x7e, 0x53, 0x9d, + 0xf6, 0x42, 0xd6, 0x36, 0xe0, 0x0f, 0x65, 0x6b, 0x9f, 0xca, 0x63, 0xbd, 0x66, 0xb2, 0x8b, 0xdd, + 0x84, 0x3f, 0x33, 0x9d, 0xc4, 0xee, 0x2e, 0x2c, 0x24, 0x99, 0x28, 0xa7, 0xc5, 0xc6, 0x6f, 0x27, + 0x1b, 0xb4, 0x93, 0x4e, 0xa5, 0x6c, 0xe3, 0x21, 0x0f, 0x3f, 0x29, 0x49, 0x74, 0x03, 0x60, 0x69, + 0x39, 0x08, 0x54, 0x5d, 0x25, 0xb0, 0x2e, 0x66, 0xb3, 0xb6, 0x21, 0xad, 0xed, 0xda, 0xf6, 0xf5, + 0xd3, 0xeb, 0x5d, 0xbe, 0x8c, 0xcc, 0xa5, 0x3b, 0x95, 0x33, 0x02, 0x5f, 0x24, 0xd7, 0x73, 0x89, + 0xae, 0x00, 0x84, 0x8b, 0x4d, 0xd1, 0xff, 0xb5, 0x27, 0x64, 0x82, 0x32, 0xb7, 0x36, 0x62, 0x13, + 0x2f, 0xa6, 0xf2, 0xf2, 0x1d, 0xa1, 0xec, 0xfb, 0xda, 0x3b, 0x78, 0x9c, 0x58, 0x60, 0x3c, 0xb1, + 0xc0, 0xcb, 0xc4, 0x02, 0xb7, 0x53, 0x2b, 0x37, 0x9e, 0x5a, 0xb9, 0xe7, 0xa9, 0x95, 0x3b, 0x69, + 0xb8, 0x9e, 0x1c, 0x44, 0x5d, 0xa7, 0xc7, 0x4e, 0x71, 0x7a, 0x18, 0x0b, 0xdd, 0xf9, 0x77, 0x8d, + 0x70, 0x8e, 0xcf, 0x53, 0x49, 0x39, 0xe2, 0x54, 0x74, 0x3f, 0xab, 0xe7, 0xba, 0xfd, 0x16, 0x00, + 0x00, 0xff, 0xff, 0x5b, 0x0c, 0x46, 0x0b, 0x24, 0x03, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -285,7 +285,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { func (c *queryClient) VersionTally(ctx context.Context, in *QueryVersionTallyRequest, opts ...grpc.CallOption) (*QueryVersionTallyResponse, error) { out := new(QueryVersionTallyResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v2.Query/VersionTally", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v1.Query/VersionTally", in, out, opts...) if err != nil { return nil, err } @@ -294,7 +294,7 @@ func (c *queryClient) VersionTally(ctx context.Context, in *QueryVersionTallyReq func (c *queryClient) GetUpgrade(ctx context.Context, in *QueryGetUpgradeRequest, opts ...grpc.CallOption) (*QueryGetUpgradeResponse, error) { out := new(QueryGetUpgradeResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v2.Query/GetUpgrade", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v1.Query/GetUpgrade", in, out, opts...) if err != nil { return nil, err } @@ -336,7 +336,7 @@ func _Query_VersionTally_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v2.Query/VersionTally", + FullMethod: "/celestia.signal.v1.Query/VersionTally", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).VersionTally(ctx, req.(*QueryVersionTallyRequest)) @@ -354,7 +354,7 @@ func _Query_GetUpgrade_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v2.Query/GetUpgrade", + FullMethod: "/celestia.signal.v1.Query/GetUpgrade", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).GetUpgrade(ctx, req.(*QueryGetUpgradeRequest)) @@ -363,7 +363,7 @@ func _Query_GetUpgrade_Handler(srv interface{}, ctx context.Context, dec func(in } var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.signal.v2.Query", + ServiceName: "celestia.signal.v1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { @@ -376,7 +376,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/signal/v2/query.proto", + Metadata: "celestia/signal/v1/query.proto", } func (m *QueryVersionTallyRequest) Marshal() (dAtA []byte, err error) { diff --git a/x/signal/types/query.pb.gw.go b/x/signal/types/query.pb.gw.go index 0a96b3d6cb..c28aa9a3d4 100644 --- a/x/signal/types/query.pb.gw.go +++ b/x/signal/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/signal/v2/query.proto +// source: celestia/signal/v1/query.proto /* Package types is a reverse proxy. diff --git a/x/signal/types/tx.pb.go b/x/signal/types/tx.pb.go index 5295a94edc..2930cc2202 100644 --- a/x/signal/types/tx.pb.go +++ b/x/signal/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/signal/v2/tx.proto +// source: celestia/signal/v1/tx.proto package types @@ -38,7 +38,7 @@ func (m *MsgSignalVersion) Reset() { *m = MsgSignalVersion{} } func (m *MsgSignalVersion) String() string { return proto.CompactTextString(m) } func (*MsgSignalVersion) ProtoMessage() {} func (*MsgSignalVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_152fd796bcafe44c, []int{0} + return fileDescriptor_815f2cc162e6e27e, []int{0} } func (m *MsgSignalVersion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -89,7 +89,7 @@ func (m *MsgSignalVersionResponse) Reset() { *m = MsgSignalVersionRespon func (m *MsgSignalVersionResponse) String() string { return proto.CompactTextString(m) } func (*MsgSignalVersionResponse) ProtoMessage() {} func (*MsgSignalVersionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_152fd796bcafe44c, []int{1} + return fileDescriptor_815f2cc162e6e27e, []int{1} } func (m *MsgSignalVersionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -127,7 +127,7 @@ func (m *MsgTryUpgrade) Reset() { *m = MsgTryUpgrade{} } func (m *MsgTryUpgrade) String() string { return proto.CompactTextString(m) } func (*MsgTryUpgrade) ProtoMessage() {} func (*MsgTryUpgrade) Descriptor() ([]byte, []int) { - return fileDescriptor_152fd796bcafe44c, []int{2} + return fileDescriptor_815f2cc162e6e27e, []int{2} } func (m *MsgTryUpgrade) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -171,7 +171,7 @@ func (m *MsgTryUpgradeResponse) Reset() { *m = MsgTryUpgradeResponse{} } func (m *MsgTryUpgradeResponse) String() string { return proto.CompactTextString(m) } func (*MsgTryUpgradeResponse) ProtoMessage() {} func (*MsgTryUpgradeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_152fd796bcafe44c, []int{3} + return fileDescriptor_815f2cc162e6e27e, []int{3} } func (m *MsgTryUpgradeResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -201,38 +201,38 @@ func (m *MsgTryUpgradeResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgTryUpgradeResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgSignalVersion)(nil), "celestia.signal.v2.MsgSignalVersion") - proto.RegisterType((*MsgSignalVersionResponse)(nil), "celestia.signal.v2.MsgSignalVersionResponse") - proto.RegisterType((*MsgTryUpgrade)(nil), "celestia.signal.v2.MsgTryUpgrade") - proto.RegisterType((*MsgTryUpgradeResponse)(nil), "celestia.signal.v2.MsgTryUpgradeResponse") -} - -func init() { proto.RegisterFile("celestia/signal/v2/tx.proto", fileDescriptor_152fd796bcafe44c) } - -var fileDescriptor_152fd796bcafe44c = []byte{ - // 344 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xcd, 0x4a, 0x03, 0x31, - 0x14, 0x85, 0x9b, 0x2a, 0x15, 0x03, 0x85, 0x36, 0xfe, 0x8d, 0xa3, 0x0c, 0x75, 0x10, 0xac, 0xa8, - 0x13, 0x1c, 0x9f, 0x40, 0xd7, 0x76, 0x53, 0x7f, 0x40, 0x37, 0x92, 0x76, 0x42, 0x0c, 0x8c, 0x49, - 0x48, 0xd2, 0xa1, 0xdd, 0xb8, 0xf0, 0x09, 0x04, 0x5f, 0xca, 0x65, 0xc1, 0x8d, 0x4b, 0x69, 0x7d, - 0x0d, 0x41, 0xec, 0x74, 0xc6, 0xb6, 0x22, 0xba, 0xbb, 0x77, 0xee, 0x77, 0xcf, 0x39, 0x73, 0x09, - 0xdc, 0x68, 0xd3, 0x98, 0x1a, 0xcb, 0x09, 0x36, 0x9c, 0x09, 0x12, 0xe3, 0x24, 0xc4, 0xb6, 0x1b, - 0x28, 0x2d, 0xad, 0x44, 0x28, 0x1b, 0x06, 0xe9, 0x30, 0x48, 0x42, 0x77, 0x93, 0x49, 0xc9, 0x62, - 0x8a, 0x89, 0xe2, 0x98, 0x08, 0x21, 0x2d, 0xb1, 0x5c, 0x0a, 0x93, 0x6e, 0xf8, 0x57, 0xb0, 0xd2, - 0x30, 0xec, 0x6c, 0x44, 0x5f, 0x52, 0x6d, 0xb8, 0x14, 0x68, 0x0f, 0x56, 0x13, 0x12, 0xf3, 0x88, - 0x58, 0xa9, 0x6f, 0x48, 0x14, 0x69, 0x6a, 0x8c, 0x03, 0x6a, 0xa0, 0xbe, 0xd8, 0xac, 0xe4, 0x83, - 0xe3, 0xf4, 0x3b, 0x72, 0xe0, 0x42, 0x92, 0xee, 0x39, 0xc5, 0x1a, 0xa8, 0xcf, 0x37, 0xb3, 0xd6, - 0x77, 0xa1, 0x33, 0x2b, 0xdd, 0xa4, 0x46, 0x49, 0x61, 0xa8, 0xbf, 0x03, 0xcb, 0x0d, 0xc3, 0xce, - 0x75, 0xef, 0x42, 0x31, 0x4d, 0x22, 0x8a, 0x56, 0x61, 0xe9, 0x2b, 0x32, 0xd5, 0x63, 0xa3, 0x71, - 0xe7, 0xaf, 0xc1, 0x95, 0x29, 0x30, 0x53, 0x08, 0x3f, 0x00, 0x9c, 0x6b, 0x18, 0x86, 0xee, 0x61, - 0x79, 0x3a, 0xfd, 0x76, 0xf0, 0xf3, 0x08, 0xc1, 0x6c, 0x10, 0x77, 0xff, 0x3f, 0x54, 0x1e, 0x77, - 0xfd, 0xe1, 0xe5, 0xfd, 0xa9, 0xb8, 0xe4, 0x57, 0xf3, 0xa3, 0x1f, 0x8e, 0x2b, 0x94, 0x40, 0x38, - 0xf1, 0x1b, 0x5b, 0xbf, 0xc8, 0x7e, 0x23, 0xee, 0xee, 0x9f, 0x48, 0x6e, 0xeb, 0x8e, 0x6c, 0x97, - 0x7d, 0x34, 0x61, 0xdb, 0x49, 0x99, 0x93, 0xd3, 0xe7, 0x81, 0x07, 0xfa, 0x03, 0x0f, 0xbc, 0x0d, - 0x3c, 0xf0, 0x38, 0xf4, 0x0a, 0xfd, 0xa1, 0x57, 0x78, 0x1d, 0x7a, 0x85, 0xeb, 0x90, 0x71, 0x7b, - 0xdb, 0x69, 0x05, 0x6d, 0x79, 0x87, 0x33, 0x2b, 0xa9, 0x59, 0x5e, 0x1f, 0x10, 0xa5, 0x70, 0x37, - 0x93, 0xb4, 0x3d, 0x45, 0x4d, 0xab, 0x34, 0x7a, 0x0d, 0x47, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, - 0xb1, 0xbb, 0x3b, 0x16, 0x5e, 0x02, 0x00, 0x00, + proto.RegisterType((*MsgSignalVersion)(nil), "celestia.signal.v1.MsgSignalVersion") + proto.RegisterType((*MsgSignalVersionResponse)(nil), "celestia.signal.v1.MsgSignalVersionResponse") + proto.RegisterType((*MsgTryUpgrade)(nil), "celestia.signal.v1.MsgTryUpgrade") + proto.RegisterType((*MsgTryUpgradeResponse)(nil), "celestia.signal.v1.MsgTryUpgradeResponse") +} + +func init() { proto.RegisterFile("celestia/signal/v1/tx.proto", fileDescriptor_815f2cc162e6e27e) } + +var fileDescriptor_815f2cc162e6e27e = []byte{ + // 345 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xcd, 0x4a, 0x3b, 0x31, + 0x14, 0xc5, 0x9b, 0xfe, 0xff, 0x54, 0x0c, 0x14, 0xda, 0xf8, 0x35, 0x8e, 0x32, 0xd4, 0x41, 0xb0, + 0xa2, 0x4e, 0x68, 0x7d, 0x02, 0x5d, 0xdb, 0x4d, 0xfd, 0x00, 0xdd, 0x48, 0xda, 0x09, 0x31, 0x30, + 0x4e, 0x42, 0x92, 0x0e, 0xed, 0xc6, 0x85, 0x4f, 0x20, 0xf8, 0x52, 0x2e, 0x0b, 0x6e, 0x5c, 0x4a, + 0xeb, 0x6b, 0x08, 0x62, 0xd3, 0x19, 0xa7, 0x15, 0xd1, 0xdd, 0xbd, 0x73, 0x7f, 0xf7, 0x9c, 0x33, + 0x97, 0xc0, 0x8d, 0x2e, 0x8d, 0xa8, 0x36, 0x9c, 0x60, 0xcd, 0x59, 0x4c, 0x22, 0x9c, 0x34, 0xb0, + 0xe9, 0x07, 0x52, 0x09, 0x23, 0x10, 0x4a, 0x87, 0x81, 0x1d, 0x06, 0x49, 0xc3, 0xdd, 0x64, 0x42, + 0xb0, 0x88, 0x62, 0x22, 0x39, 0x26, 0x71, 0x2c, 0x0c, 0x31, 0x5c, 0xc4, 0xda, 0x6e, 0xf8, 0x97, + 0xb0, 0xd2, 0xd2, 0xec, 0x74, 0x42, 0x5f, 0x50, 0xa5, 0xb9, 0x88, 0xd1, 0x1e, 0xac, 0x26, 0x24, + 0xe2, 0x21, 0x31, 0x42, 0x5d, 0x93, 0x30, 0x54, 0x54, 0x6b, 0x07, 0xd4, 0x40, 0x7d, 0xb1, 0x5d, + 0xc9, 0x06, 0x47, 0xf6, 0x3b, 0x72, 0xe0, 0x42, 0x62, 0xf7, 0x9c, 0x62, 0x0d, 0xd4, 0xff, 0xb7, + 0xd3, 0xd6, 0x77, 0xa1, 0x33, 0x2f, 0xdd, 0xa6, 0x5a, 0x8a, 0x58, 0x53, 0x7f, 0x07, 0x96, 0x5b, + 0x9a, 0x9d, 0xa9, 0xc1, 0xb9, 0x64, 0x8a, 0x84, 0x14, 0xad, 0xc2, 0xd2, 0x67, 0x64, 0xaa, 0xa6, + 0x46, 0xd3, 0xce, 0x5f, 0x83, 0x2b, 0x33, 0x60, 0xaa, 0xd0, 0x7c, 0x07, 0xf0, 0x5f, 0x4b, 0x33, + 0x74, 0x07, 0xcb, 0xb3, 0xe9, 0xb7, 0x83, 0xef, 0x47, 0x08, 0xe6, 0x83, 0xb8, 0xfb, 0x7f, 0xa1, + 0xb2, 0xb8, 0xeb, 0xf7, 0xcf, 0x6f, 0x8f, 0xc5, 0x25, 0xbf, 0x9a, 0x3b, 0xba, 0xad, 0x50, 0x02, + 0x61, 0xee, 0x37, 0xb6, 0x7e, 0x90, 0xfd, 0x42, 0xdc, 0xdd, 0x5f, 0x91, 0xcc, 0xd6, 0x9d, 0xd8, + 0x2e, 0xfb, 0x28, 0x67, 0xdb, 0xb3, 0xcc, 0xf1, 0xc9, 0xd3, 0xc8, 0x03, 0xc3, 0x91, 0x07, 0x5e, + 0x47, 0x1e, 0x78, 0x18, 0x7b, 0x85, 0xe1, 0xd8, 0x2b, 0xbc, 0x8c, 0xbd, 0xc2, 0x55, 0x93, 0x71, + 0x73, 0xd3, 0xeb, 0x04, 0x5d, 0x71, 0x8b, 0x53, 0x2b, 0xa1, 0x58, 0x56, 0x1f, 0x10, 0x29, 0x71, + 0x3f, 0x95, 0x34, 0x03, 0x49, 0x75, 0xa7, 0x34, 0x79, 0x0d, 0x87, 0x1f, 0x01, 0x00, 0x00, 0xff, + 0xff, 0xfd, 0x76, 0xc1, 0x4b, 0x5e, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -264,7 +264,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) SignalVersion(ctx context.Context, in *MsgSignalVersion, opts ...grpc.CallOption) (*MsgSignalVersionResponse, error) { out := new(MsgSignalVersionResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v2.Msg/SignalVersion", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v1.Msg/SignalVersion", in, out, opts...) if err != nil { return nil, err } @@ -273,7 +273,7 @@ func (c *msgClient) SignalVersion(ctx context.Context, in *MsgSignalVersion, opt func (c *msgClient) TryUpgrade(ctx context.Context, in *MsgTryUpgrade, opts ...grpc.CallOption) (*MsgTryUpgradeResponse, error) { out := new(MsgTryUpgradeResponse) - err := c.cc.Invoke(ctx, "/celestia.signal.v2.Msg/TryUpgrade", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.signal.v1.Msg/TryUpgrade", in, out, opts...) if err != nil { return nil, err } @@ -314,7 +314,7 @@ func _Msg_SignalVersion_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v2.Msg/SignalVersion", + FullMethod: "/celestia.signal.v1.Msg/SignalVersion", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).SignalVersion(ctx, req.(*MsgSignalVersion)) @@ -332,7 +332,7 @@ func _Msg_TryUpgrade_Handler(srv interface{}, ctx context.Context, dec func(inte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.signal.v2.Msg/TryUpgrade", + FullMethod: "/celestia.signal.v1.Msg/TryUpgrade", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).TryUpgrade(ctx, req.(*MsgTryUpgrade)) @@ -341,7 +341,7 @@ func _Msg_TryUpgrade_Handler(srv interface{}, ctx context.Context, dec func(inte } var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.signal.v2.Msg", + ServiceName: "celestia.signal.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { @@ -354,7 +354,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/signal/v2/tx.proto", + Metadata: "celestia/signal/v1/tx.proto", } func (m *MsgSignalVersion) Marshal() (dAtA []byte, err error) { diff --git a/x/signal/types/tx.pb.gw.go b/x/signal/types/tx.pb.gw.go index a46551c2bd..9cb53050be 100644 --- a/x/signal/types/tx.pb.gw.go +++ b/x/signal/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/signal/v2/tx.proto +// source: celestia/signal/v1/tx.proto /* Package types is a reverse proxy. diff --git a/x/signal/types/upgrade.pb.go b/x/signal/types/upgrade.pb.go index b7789c8140..53a2a9590e 100644 --- a/x/signal/types/upgrade.pb.go +++ b/x/signal/types/upgrade.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/signal/v2/upgrade.proto +// source: celestia/signal/v1/upgrade.proto package types @@ -36,7 +36,7 @@ func (m *Upgrade) Reset() { *m = Upgrade{} } func (m *Upgrade) String() string { return proto.CompactTextString(m) } func (*Upgrade) ProtoMessage() {} func (*Upgrade) Descriptor() ([]byte, []int) { - return fileDescriptor_59ed80e4c9ca99b6, []int{0} + return fileDescriptor_7872d1b4aca9f179, []int{0} } func (m *Upgrade) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -80,17 +80,17 @@ func (m *Upgrade) GetUpgradeHeight() int64 { } func init() { - proto.RegisterType((*Upgrade)(nil), "celestia.signal.v2.Upgrade") + proto.RegisterType((*Upgrade)(nil), "celestia.signal.v1.Upgrade") } -func init() { proto.RegisterFile("celestia/signal/v2/upgrade.proto", fileDescriptor_59ed80e4c9ca99b6) } +func init() { proto.RegisterFile("celestia/signal/v1/upgrade.proto", fileDescriptor_7872d1b4aca9f179) } -var fileDescriptor_59ed80e4c9ca99b6 = []byte{ +var fileDescriptor_7872d1b4aca9f179 = []byte{ // 196 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0xce, 0x4c, 0xcf, 0x4b, 0xcc, 0xd1, 0x2f, 0x33, 0xd2, 0x2f, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0xce, 0x4c, 0xcf, 0x4b, 0xcc, 0xd1, 0x2f, 0x33, 0xd4, 0x2f, 0x2d, 0x48, 0x2f, 0x4a, 0x4c, 0x49, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0xa9, - 0xd0, 0x83, 0xa8, 0xd0, 0x2b, 0x33, 0x52, 0x0a, 0xe4, 0x62, 0x0f, 0x85, 0x28, 0x12, 0x92, 0xe7, + 0xd0, 0x83, 0xa8, 0xd0, 0x2b, 0x33, 0x54, 0x0a, 0xe4, 0x62, 0x0f, 0x85, 0x28, 0x12, 0x92, 0xe7, 0xe2, 0x4e, 0x2c, 0x28, 0x88, 0x2f, 0x4b, 0x2d, 0x2a, 0xce, 0xcc, 0xcf, 0x93, 0x60, 0x54, 0x60, 0xd4, 0x60, 0x09, 0xe2, 0x4a, 0x2c, 0x28, 0x08, 0x83, 0x88, 0x08, 0xa9, 0x72, 0xf1, 0x41, 0x0d, 0x8c, 0xcf, 0x48, 0xcd, 0x4c, 0xcf, 0x28, 0x91, 0x60, 0x52, 0x60, 0xd4, 0x60, 0x0e, 0xe2, 0x85, @@ -98,7 +98,7 @@ var fileDescriptor_59ed80e4c9ca99b6 = []byte{ 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x28, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x1f, 0xe6, 0x96, 0xfc, 0xa2, 0x74, 0x38, 0x5b, 0x37, 0xb1, 0xa0, 0x40, 0xbf, 0x02, 0xe6, 0xfe, 0x92, 0xca, 0x82, 0xd4, - 0xe2, 0x24, 0x36, 0xb0, 0xdb, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x77, 0xcc, 0x8f, 0xe2, + 0xe2, 0x24, 0x36, 0xb0, 0xdb, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x63, 0x22, 0x2e, 0x9d, 0xdf, 0x00, 0x00, 0x00, } From e6287741bca47430a6344baeca31b2f5385da887 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 21 Oct 2024 14:31:01 -0400 Subject: [PATCH 133/140] revert: unnecessary changes --- app/app.go | 14 +- app/test/upgrade_test.go | 1 + proto/celestia/blob/{v2 => v1}/event.proto | 2 +- proto/celestia/blob/{v2 => v1}/genesis.proto | 4 +- proto/celestia/blob/{v2 => v1}/params.proto | 2 +- proto/celestia/blob/{v2 => v1}/query.proto | 4 +- proto/celestia/blob/{v2 => v1}/tx.proto | 2 +- proto/celestia/qgb/{v2 => v1}/tx.proto | 2 +- proto/celestia/qgb/{v2 => v1}/types.proto | 2 +- proto/celestia/qgb/v2/genesis.proto | 18 --- proto/celestia/qgb/v2/query.proto | 139 ------------------- x/blob/types/event.pb.go | 18 +-- x/blob/types/genesis.pb.go | 18 +-- x/blob/types/params.pb.go | 16 +-- x/blob/types/query.pb.go | 40 +++--- x/blob/types/query.pb.gw.go | 2 +- x/blob/types/tx.pb.go | 75 +++++----- x/blob/types/tx.pb.gw.go | 2 +- x/blobstream/types/tx.pb.go | 42 +++--- x/blobstream/types/tx.pb.gw.go | 2 +- x/blobstream/types/types.pb.go | 64 ++++----- 21 files changed, 159 insertions(+), 310 deletions(-) rename proto/celestia/blob/{v2 => v1}/event.proto (95%) rename proto/celestia/blob/{v2 => v1}/genesis.proto (80%) rename proto/celestia/blob/{v2 => v1}/params.proto (94%) rename proto/celestia/blob/{v2 => v1}/query.proto (90%) rename proto/celestia/blob/{v2 => v1}/tx.proto (98%) rename proto/celestia/qgb/{v2 => v1}/tx.proto (97%) rename proto/celestia/qgb/{v2 => v1}/types.proto (98%) delete mode 100644 proto/celestia/qgb/v2/genesis.proto delete mode 100644 proto/celestia/qgb/v2/query.proto diff --git a/app/app.go b/app/app.go index 9a2996fc3b..b98aaf3283 100644 --- a/app/app.go +++ b/app/app.go @@ -461,25 +461,31 @@ func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.R return app.manager.BeginBlock(ctx, req) } -// EndBlocker executes application updates at the end of every block. func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { res := app.manager.EndBlock(ctx, req) currentVersion := app.AppVersion() - + // For v1 only we upgrade using an agreed upon height known ahead of time if currentVersion == v1 { + // check that we are at the height before the upgrade if req.Height == app.upgradeHeightV2-1 { app.BaseApp.Logger().Info(fmt.Sprintf("upgrading from app version %v to 2", currentVersion)) app.SetInitialAppVersionInConsensusParams(ctx, v2) app.SetAppVersion(ctx, v2) + + // The blobstream module was disabled in v2 so the following line + // removes the params subspace for blobstream. + if err := app.ParamsKeeper.DeleteSubspace(blobstreamtypes.ModuleName); err != nil { + panic(err) + } } + // from v2 to v3 and onwards we use a signalling mechanism } else if shouldUpgrade, newVersion := app.SignalKeeper.ShouldUpgrade(ctx); shouldUpgrade { - // Version changes must be increasing. Downgrades are not permitted. + // Version changes must be increasing. Downgrades are not permitted if newVersion > currentVersion { app.SetAppVersion(ctx, newVersion) app.SignalKeeper.ResetTally(ctx) } } - // Question why do we do this every block instead of just during the v2 to v3 upgrade? res.Timeouts.TimeoutCommit = appconsts.GetTimeoutCommit(currentVersion) res.Timeouts.TimeoutPropose = appconsts.GetTimeoutPropose(currentVersion) diff --git a/app/test/upgrade_test.go b/app/test/upgrade_test.go index b188a6cb47..4c2677c8e0 100644 --- a/app/test/upgrade_test.go +++ b/app/test/upgrade_test.go @@ -254,6 +254,7 @@ func TestBlobstreamRemovedInV2(t *testing.T) { func SetupTestAppWithUpgradeHeight(t *testing.T, upgradeHeight int64) (*app.App, *genesis.Genesis) { t.Helper() + db := dbm.NewMemDB() encCfg := encoding.MakeConfig(app.ModuleEncodingRegisters...) testApp := app.New(log.NewNopLogger(), db, nil, 0, encCfg, upgradeHeight, util.EmptyAppOptions{}) diff --git a/proto/celestia/blob/v2/event.proto b/proto/celestia/blob/v1/event.proto similarity index 95% rename from proto/celestia/blob/v2/event.proto rename to proto/celestia/blob/v1/event.proto index d24b2d1e82..c2dd049dff 100644 --- a/proto/celestia/blob/v2/event.proto +++ b/proto/celestia/blob/v1/event.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.blob.v2; +package celestia.blob.v1; option go_package = "github.com/celestiaorg/celestia-app/x/blob/types"; diff --git a/proto/celestia/blob/v2/genesis.proto b/proto/celestia/blob/v1/genesis.proto similarity index 80% rename from proto/celestia/blob/v2/genesis.proto rename to proto/celestia/blob/v1/genesis.proto index cdd18bfba2..d72bcb19dd 100644 --- a/proto/celestia/blob/v2/genesis.proto +++ b/proto/celestia/blob/v1/genesis.proto @@ -1,8 +1,8 @@ syntax = "proto3"; -package celestia.blob.v2; +package celestia.blob.v1; import "gogoproto/gogo.proto"; -import "celestia/blob/v2/params.proto"; +import "celestia/blob/v1/params.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/blob/types"; diff --git a/proto/celestia/blob/v2/params.proto b/proto/celestia/blob/v1/params.proto similarity index 94% rename from proto/celestia/blob/v2/params.proto rename to proto/celestia/blob/v1/params.proto index 62fa833d60..20007e259c 100644 --- a/proto/celestia/blob/v2/params.proto +++ b/proto/celestia/blob/v1/params.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.blob.v2; +package celestia.blob.v1; import "gogoproto/gogo.proto"; diff --git a/proto/celestia/blob/v2/query.proto b/proto/celestia/blob/v1/query.proto similarity index 90% rename from proto/celestia/blob/v2/query.proto rename to proto/celestia/blob/v1/query.proto index cb5ab32c97..47d484b3c6 100644 --- a/proto/celestia/blob/v2/query.proto +++ b/proto/celestia/blob/v1/query.proto @@ -1,9 +1,9 @@ syntax = "proto3"; -package celestia.blob.v2; +package celestia.blob.v1; import "gogoproto/gogo.proto"; import "google/api/annotations.proto"; -import "celestia/blob/v2/params.proto"; +import "celestia/blob/v1/params.proto"; option go_package = "github.com/celestiaorg/celestia-app/x/blob/types"; diff --git a/proto/celestia/blob/v2/tx.proto b/proto/celestia/blob/v1/tx.proto similarity index 98% rename from proto/celestia/blob/v2/tx.proto rename to proto/celestia/blob/v1/tx.proto index 3ffbb55832..552424c3df 100644 --- a/proto/celestia/blob/v2/tx.proto +++ b/proto/celestia/blob/v1/tx.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.blob.v2; +package celestia.blob.v1; import "google/api/annotations.proto"; diff --git a/proto/celestia/qgb/v2/tx.proto b/proto/celestia/qgb/v1/tx.proto similarity index 97% rename from proto/celestia/qgb/v2/tx.proto rename to proto/celestia/qgb/v1/tx.proto index 91d7bbf8cc..b9c4fe1e58 100644 --- a/proto/celestia/qgb/v2/tx.proto +++ b/proto/celestia/qgb/v1/tx.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.qgb.v2; +package celestia.qgb.v1; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/celestia/qgb/v2/types.proto b/proto/celestia/qgb/v1/types.proto similarity index 98% rename from proto/celestia/qgb/v2/types.proto rename to proto/celestia/qgb/v1/types.proto index 667a86cdb3..266788e2ab 100644 --- a/proto/celestia/qgb/v2/types.proto +++ b/proto/celestia/qgb/v1/types.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package celestia.qgb.v2; +package celestia.qgb.v1; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; diff --git a/proto/celestia/qgb/v2/genesis.proto b/proto/celestia/qgb/v2/genesis.proto deleted file mode 100644 index 72cb0cc1df..0000000000 --- a/proto/celestia/qgb/v2/genesis.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; -package celestia.qgb.v2; - -import "gogoproto/gogo.proto"; -import "celestia/qgb/v2/types.proto"; - -option go_package = "github.com/celestiaorg/celestia-app/x/blobstream/types"; - -// Params represent Blobstream genesis and store parameters. -message Params { - option (gogoproto.stringer) = false; - - uint64 data_commitment_window = 1; -} - -// GenesisState struct, containing all persistent data required by Blobstream -// module -message GenesisState { Params params = 1; } diff --git a/proto/celestia/qgb/v2/query.proto b/proto/celestia/qgb/v2/query.proto deleted file mode 100644 index 222eaf9950..0000000000 --- a/proto/celestia/qgb/v2/query.proto +++ /dev/null @@ -1,139 +0,0 @@ -syntax = "proto3"; -package celestia.qgb.v2; - -import "celestia/qgb/v2/genesis.proto"; -import "celestia/qgb/v2/types.proto"; -import "google/api/annotations.proto"; -import "gogoproto/gogo.proto"; -import "cosmos_proto/cosmos.proto"; -import "google/protobuf/any.proto"; - -option go_package = "github.com/celestiaorg/celestia-app/x/blobstream/types"; - -// Query defines the gRPC querier service. -service Query { - // Params queries the current parameters for the blobstream module - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/qgb/v1/params"; - } - - // queries for attestations requests waiting to be signed by an orchestrator - - // AttestationRequestByNonce queries attestation request by nonce. - // Returns nil if not found. - rpc AttestationRequestByNonce(QueryAttestationRequestByNonceRequest) - returns (QueryAttestationRequestByNonceResponse) { - option (google.api.http).get = "/qgb/v1/attestations/requests/{nonce}"; - } - // LatestAttestationNonce queries latest attestation nonce. - rpc LatestAttestationNonce(QueryLatestAttestationNonceRequest) - returns (QueryLatestAttestationNonceResponse) { - option (google.api.http).get = "/qgb/v1/attestations/nonce/latest"; - } - // EarliestAttestationNonce queries the earliest attestation nonce. - rpc EarliestAttestationNonce(QueryEarliestAttestationNonceRequest) - returns (QueryEarliestAttestationNonceResponse) { - option (google.api.http).get = "/qgb/v1/attestations/nonce/earliest"; - } - // LatestValsetRequestBeforeNonce Queries latest Valset request before nonce. - // And, even if the current nonce is a valset, it will return the previous - // one. - // If the provided nonce is 1, it will return an error, because, there is - // no valset before nonce 1. - rpc LatestValsetRequestBeforeNonce(QueryLatestValsetRequestBeforeNonceRequest) - returns (QueryLatestValsetRequestBeforeNonceResponse) { - option (google.api.http).get = "/qgb/v1/valset/request/before/{nonce}"; - } - - // misc - - // LatestUnbondingHeight returns the latest unbonding height - rpc LatestUnbondingHeight(QueryLatestUnbondingHeightRequest) - returns (QueryLatestUnbondingHeightResponse) { - option (google.api.http).get = "/qgb/v1/unbonding"; - } - - // DataCommitmentRangeForHeight returns the data commitment window - // that includes the provided height - rpc DataCommitmentRangeForHeight(QueryDataCommitmentRangeForHeightRequest) - returns (QueryDataCommitmentRangeForHeightResponse) { - option (google.api.http).get = "/qgb/v1/data_commitment/range/height"; - } - - // LatestDataCommitment returns the latest data commitment in store - rpc LatestDataCommitment(QueryLatestDataCommitmentRequest) - returns (QueryLatestDataCommitmentResponse) { - option (google.api.http).get = "/qgb/v1/data_commitment/latest"; - } - - // EVMAddress returns the evm address associated with a supplied - // validator address - rpc EVMAddress(QueryEVMAddressRequest) returns (QueryEVMAddressResponse) { - option (google.api.http).get = "/qgb/v1/evm_address"; - } -} - -// QueryParamsRequest -message QueryParamsRequest {} -// QueryParamsResponse -message QueryParamsResponse { - Params params = 1 [ (gogoproto.nullable) = false ]; -} - -// QueryAttestationRequestByNonceRequest -message QueryAttestationRequestByNonceRequest { uint64 nonce = 1; } - -// QueryAttestationRequestByNonceResponse -message QueryAttestationRequestByNonceResponse { - // AttestationRequestI is either a Data Commitment or a Valset. - // This was decided as part of the universal nonce approach under: - // https://github.com/celestiaorg/celestia-app/issues/468#issuecomment-1156887715 - google.protobuf.Any attestation = 1 - [ (cosmos_proto.accepts_interface) = "AttestationRequestI" ]; -} - -// QueryLatestAttestationNonceRequest latest attestation nonce request -message QueryLatestAttestationNonceRequest {} -// QueryLatestAttestationNonceResponse latest attestation nonce response -message QueryLatestAttestationNonceResponse { uint64 nonce = 1; } - -// QueryEarliestAttestationNonceRequest earliest attestation nonce request -message QueryEarliestAttestationNonceRequest {} -// QueryEarliestAttestationNonceResponse earliest attestation nonce response -message QueryEarliestAttestationNonceResponse { uint64 nonce = 1; } - -// QueryLatestValsetRequestBeforeNonceRequest latest Valset request before -// universal nonce request -message QueryLatestValsetRequestBeforeNonceRequest { uint64 nonce = 1; } - -// QueryLatestValsetRequestBeforeNonceResponse latest Valset request before -// height response -message QueryLatestValsetRequestBeforeNonceResponse { Valset valset = 1; } - -// QueryLatestUnbondingHeightRequest -message QueryLatestUnbondingHeightRequest {} - -// QueryLatestUnbondingHeightResponse -message QueryLatestUnbondingHeightResponse { uint64 height = 1; } - -// QueryLatestDataCommitmentRequest -message QueryLatestDataCommitmentRequest {} - -// QueryLatestDataCommitmentResponse -message QueryLatestDataCommitmentResponse { - DataCommitment data_commitment = 1; -} - -// QueryDataCommitmentRangeForHeightRequest -message QueryDataCommitmentRangeForHeightRequest { uint64 height = 1; } - -// QueryDataCommitmentRangeForHeightResponse -message QueryDataCommitmentRangeForHeightResponse { - DataCommitment data_commitment = 1; -} - -// QueryEVMAddressRequest -message QueryEVMAddressRequest { string validator_address = 1; } - -// QueryEVMAddressResponse -message QueryEVMAddressResponse { string evm_address = 1; } diff --git a/x/blob/types/event.pb.go b/x/blob/types/event.pb.go index 38db3d4299..3f6b1f2019 100644 --- a/x/blob/types/event.pb.go +++ b/x/blob/types/event.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v2/event.proto +// source: celestia/blob/v1/event.proto package types @@ -37,7 +37,7 @@ func (m *EventPayForBlobs) Reset() { *m = EventPayForBlobs{} } func (m *EventPayForBlobs) String() string { return proto.CompactTextString(m) } func (*EventPayForBlobs) ProtoMessage() {} func (*EventPayForBlobs) Descriptor() ([]byte, []int) { - return fileDescriptor_c1bd87afcccbad73, []int{0} + return fileDescriptor_9d90f0a63835a06e, []int{0} } func (m *EventPayForBlobs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -88,17 +88,17 @@ func (m *EventPayForBlobs) GetNamespaces() [][]byte { } func init() { - proto.RegisterType((*EventPayForBlobs)(nil), "celestia.blob.v2.EventPayForBlobs") + proto.RegisterType((*EventPayForBlobs)(nil), "celestia.blob.v1.EventPayForBlobs") } -func init() { proto.RegisterFile("celestia/blob/v2/event.proto", fileDescriptor_c1bd87afcccbad73) } +func init() { proto.RegisterFile("celestia/blob/v1/event.proto", fileDescriptor_9d90f0a63835a06e) } -var fileDescriptor_c1bd87afcccbad73 = []byte{ +var fileDescriptor_9d90f0a63835a06e = []byte{ // 214 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x4f, 0x2d, 0x4b, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x2d, 0x4b, 0xcd, 0x2b, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, - 0xca, 0x8c, 0x94, 0x32, 0xb9, 0x04, 0x5c, 0x41, 0x0a, 0x02, 0x12, 0x2b, 0xdd, 0xf2, 0x8b, 0x9c, + 0xca, 0x0c, 0x95, 0x32, 0xb9, 0x04, 0x5c, 0x41, 0x0a, 0x02, 0x12, 0x2b, 0xdd, 0xf2, 0x8b, 0x9c, 0x72, 0xf2, 0x93, 0x8a, 0x85, 0xc4, 0xb8, 0xd8, 0x8a, 0x33, 0xd3, 0xf3, 0x52, 0x8b, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0xa0, 0x3c, 0x21, 0x59, 0x2e, 0x2e, 0x90, 0xb6, 0xf8, 0xe2, 0xcc, 0xaa, 0xd4, 0x62, 0x09, 0x26, 0x05, 0x66, 0x0d, 0xde, 0x20, 0x4e, 0x90, 0x48, 0x30, 0x48, 0x40, @@ -107,8 +107,8 @@ var fileDescriptor_c1bd87afcccbad73 = []byte{ 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x0c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, 0x73, 0xf5, 0x61, 0x2e, 0xcc, 0x2f, 0x4a, 0x87, 0xb3, 0x75, 0x13, 0x0b, 0x0a, 0xf4, 0x2b, 0x20, 0x3e, 0x2a, 0xa9, - 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xfb, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0xa5, 0xa7, - 0xd4, 0x05, 0xef, 0x00, 0x00, 0x00, + 0x2c, 0x48, 0x2d, 0x4e, 0x62, 0x03, 0xfb, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x7b, + 0x9e, 0x60, 0xef, 0x00, 0x00, 0x00, } func (m *EventPayForBlobs) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/genesis.pb.go b/x/blob/types/genesis.pb.go index d17244b724..1811495e62 100644 --- a/x/blob/types/genesis.pb.go +++ b/x/blob/types/genesis.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v2/genesis.proto +// source: celestia/blob/v1/genesis.proto package types @@ -32,7 +32,7 @@ func (m *GenesisState) Reset() { *m = GenesisState{} } func (m *GenesisState) String() string { return proto.CompactTextString(m) } func (*GenesisState) ProtoMessage() {} func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_c7c3e40b121bd302, []int{0} + return fileDescriptor_c0b3a6e29bb6777c, []int{0} } func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -69,17 +69,17 @@ func (m *GenesisState) GetParams() Params { } func init() { - proto.RegisterType((*GenesisState)(nil), "celestia.blob.v2.GenesisState") + proto.RegisterType((*GenesisState)(nil), "celestia.blob.v1.GenesisState") } -func init() { proto.RegisterFile("celestia/blob/v2/genesis.proto", fileDescriptor_c7c3e40b121bd302) } +func init() { proto.RegisterFile("celestia/blob/v1/genesis.proto", fileDescriptor_c0b3a6e29bb6777c) } -var fileDescriptor_c7c3e40b121bd302 = []byte{ +var fileDescriptor_c0b3a6e29bb6777c = []byte{ // 198 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x4f, 0x4f, 0xcd, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xeb, 0x81, - 0xe4, 0xf5, 0xca, 0x8c, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, + 0xe4, 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, 0x2c, 0x86, 0x39, 0x05, 0x89, 0x45, 0x89, 0xb9, 0x50, 0x63, 0x94, 0xdc, 0xb8, 0x78, 0xdc, 0x21, 0xe6, 0x06, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x99, 0x71, 0xb1, 0x41, 0xe4, 0x25, 0x18, 0x15, 0x18, 0x35, 0xb8, 0x8d, 0x24, 0xf4, 0xd0, 0xed, 0xd1, 0x0b, 0x00, 0xcb, 0x3b, 0xb1, 0x9c, @@ -87,8 +87,8 @@ var fileDescriptor_c7c3e40b121bd302 = []byte{ 0x8c, 0x0f, 0x1e, 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, 0x06, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0x30, 0xb3, 0xf2, 0x8b, 0xd2, 0xe1, 0x6c, 0xdd, 0xc4, 0x82, 0x02, 0xfd, 0x0a, 0x88, 0xeb, 0x4a, 0x2a, - 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x4e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x85, 0xbc, - 0xef, 0xa9, 0x03, 0x01, 0x00, 0x00, + 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x4e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x63, + 0x14, 0xe2, 0x03, 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/params.pb.go b/x/blob/types/params.pb.go index e80fc2395c..ba0f2b2ff3 100644 --- a/x/blob/types/params.pb.go +++ b/x/blob/types/params.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v2/params.proto +// source: celestia/blob/v1/params.proto package types @@ -32,7 +32,7 @@ type Params struct { func (m *Params) Reset() { *m = Params{} } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_f824c8766cbe9195, []int{0} + return fileDescriptor_2145b82d3e5371c6, []int{0} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -76,17 +76,17 @@ func (m *Params) GetGovMaxSquareSize() uint64 { } func init() { - proto.RegisterType((*Params)(nil), "celestia.blob.v2.Params") + proto.RegisterType((*Params)(nil), "celestia.blob.v1.Params") } -func init() { proto.RegisterFile("celestia/blob/v2/params.proto", fileDescriptor_f824c8766cbe9195) } +func init() { proto.RegisterFile("celestia/blob/v1/params.proto", fileDescriptor_2145b82d3e5371c6) } -var fileDescriptor_f824c8766cbe9195 = []byte{ +var fileDescriptor_2145b82d3e5371c6 = []byte{ // 270 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x2f, 0x48, 0x2c, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0x49, 0xeb, 0x81, 0xa4, - 0xf5, 0xca, 0x8c, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, + 0xf5, 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0xd2, 0x32, 0x46, 0x2e, 0xb6, 0x00, 0xb0, 0x46, 0x21, 0x77, 0x2e, 0xc1, 0xf4, 0xc4, 0xe2, 0xf8, 0x82, 0xd4, 0xa2, 0x78, 0x90, 0x9e, 0xf8, 0xa4, 0xca, 0x92, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x5e, 0x27, 0x99, 0x4f, 0xf7, 0xe4, 0x25, 0x2a, 0x13, 0x73, 0x73, 0xac, 0x94, 0x30, 0x94, 0x28, @@ -99,7 +99,7 @@ var fileDescriptor_f824c8766cbe9195 = []byte{ 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, 0x63, 0x88, 0x32, 0x48, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0xf9, 0x3a, 0xbf, 0x28, 0x1d, 0xce, 0xd6, 0x4d, 0x2c, 0x28, 0xd0, 0xaf, 0x80, 0x04, 0x53, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0xef, 0xc6, - 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x3b, 0xfc, 0x14, 0x00, 0x44, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x2d, 0x7d, 0x23, 0x44, 0x01, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/query.pb.go b/x/blob/types/query.pb.go index 2b2c9978fa..c28b5b01ed 100644 --- a/x/blob/types/query.pb.go +++ b/x/blob/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v2/query.proto +// source: celestia/blob/v1/query.proto package types @@ -37,7 +37,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } func (*QueryParamsRequest) ProtoMessage() {} func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_10abf68d6b3a2909, []int{0} + return fileDescriptor_29ba8a4248383b64, []int{0} } func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -75,7 +75,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_10abf68d6b3a2909, []int{1} + return fileDescriptor_29ba8a4248383b64, []int{1} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -112,18 +112,18 @@ func (m *QueryParamsResponse) GetParams() Params { } func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "celestia.blob.v2.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "celestia.blob.v2.QueryParamsResponse") + proto.RegisterType((*QueryParamsRequest)(nil), "celestia.blob.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "celestia.blob.v1.QueryParamsResponse") } -func init() { proto.RegisterFile("celestia/blob/v2/query.proto", fileDescriptor_10abf68d6b3a2909) } +func init() { proto.RegisterFile("celestia/blob/v1/query.proto", fileDescriptor_29ba8a4248383b64) } -var fileDescriptor_10abf68d6b3a2909 = []byte{ - // 278 bytes of a gzipped FileDescriptorProto +var fileDescriptor_29ba8a4248383b64 = []byte{ + // 275 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x49, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x2f, 0x2c, 0x4d, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x4f, 0xca, 0xc9, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x80, 0xc9, 0xea, 0x81, 0x64, 0xf5, - 0xca, 0x8c, 0xa4, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, + 0xca, 0x0c, 0xa5, 0x44, 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x92, 0xfa, 0x20, 0x16, 0x44, 0x9d, 0x94, 0x4c, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x7e, 0x62, 0x41, 0xa6, 0x7e, 0x62, 0x5e, 0x5e, 0x7e, 0x49, 0x62, 0x49, 0x66, 0x7e, 0x5e, 0x31, 0x54, 0x56, 0x16, 0xc3, 0x8e, 0x82, 0xc4, 0xa2, 0xc4, 0x5c, 0xa8, 0xb4, 0x92, 0x08, 0x97, 0x50, 0x20, 0xc8, 0xce, 0x00, 0xb0, 0x60, 0x50, 0x6a, 0x61, @@ -132,12 +132,12 @@ var fileDescriptor_10abf68d6b3a2909 = []byte{ 0x13, 0xf5, 0x20, 0x3a, 0x9c, 0x58, 0x4e, 0xdc, 0x93, 0x67, 0x08, 0x82, 0xaa, 0x36, 0x2a, 0xe7, 0x62, 0x05, 0x1b, 0x27, 0x94, 0xc7, 0xc5, 0x06, 0x51, 0x20, 0xa4, 0x82, 0xa9, 0x15, 0xd3, 0x1d, 0x52, 0xaa, 0x04, 0x54, 0x41, 0xdc, 0xa5, 0x24, 0xde, 0x74, 0xf9, 0xc9, 0x64, 0x26, 0x41, 0x21, - 0x7e, 0xa8, 0x1f, 0x0d, 0xa1, 0x7e, 0x74, 0xf2, 0x3a, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, - 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, - 0x39, 0x86, 0x28, 0x83, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0x98, - 0x1d, 0xf9, 0x45, 0xe9, 0x70, 0xb6, 0x6e, 0x62, 0x41, 0x81, 0x7e, 0x05, 0xc4, 0xbc, 0x92, 0xca, - 0x82, 0xd4, 0xe2, 0x24, 0x36, 0x70, 0x80, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbf, 0xaa, - 0xfb, 0x19, 0xb5, 0x01, 0x00, 0x00, + 0x7e, 0x34, 0x3f, 0x3a, 0x79, 0x9d, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, + 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, + 0x41, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xcc, 0x8e, 0xfc, 0xa2, + 0x74, 0x38, 0x5b, 0x37, 0xb1, 0xa0, 0x40, 0xbf, 0x02, 0x62, 0x5e, 0x49, 0x65, 0x41, 0x6a, 0x71, + 0x12, 0x1b, 0x38, 0xc0, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb0, 0x7e, 0x20, 0x5f, 0xb5, + 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -166,7 +166,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/celestia.blob.v2.Query/Params", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.blob.v1.Query/Params", in, out, opts...) if err != nil { return nil, err } @@ -201,7 +201,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.blob.v2.Query/Params", + FullMethod: "/celestia.blob.v1.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) @@ -210,7 +210,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.blob.v2.Query", + ServiceName: "celestia.blob.v1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { @@ -219,7 +219,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/blob/v2/query.proto", + Metadata: "celestia/blob/v1/query.proto", } func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/query.pb.gw.go b/x/blob/types/query.pb.gw.go index d9d5ded3c6..5ee1f38d19 100644 --- a/x/blob/types/query.pb.gw.go +++ b/x/blob/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/blob/v2/query.proto +// source: celestia/blob/v1/query.proto /* Package types is a reverse proxy. diff --git a/x/blob/types/tx.pb.go b/x/blob/types/tx.pb.go index ee426c87da..35860ed8a0 100644 --- a/x/blob/types/tx.pb.go +++ b/x/blob/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/blob/v2/tx.proto +// source: celestia/blob/v1/tx.proto package types @@ -52,7 +52,7 @@ func (m *MsgPayForBlobs) Reset() { *m = MsgPayForBlobs{} } func (m *MsgPayForBlobs) String() string { return proto.CompactTextString(m) } func (*MsgPayForBlobs) ProtoMessage() {} func (*MsgPayForBlobs) Descriptor() ([]byte, []int) { - return fileDescriptor_82f557c0bb46a753, []int{0} + return fileDescriptor_9157fbf3d3cd004d, []int{0} } func (m *MsgPayForBlobs) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -125,7 +125,7 @@ func (m *MsgPayForBlobsResponse) Reset() { *m = MsgPayForBlobsResponse{} func (m *MsgPayForBlobsResponse) String() string { return proto.CompactTextString(m) } func (*MsgPayForBlobsResponse) ProtoMessage() {} func (*MsgPayForBlobsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_82f557c0bb46a753, []int{1} + return fileDescriptor_9157fbf3d3cd004d, []int{1} } func (m *MsgPayForBlobsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -155,37 +155,36 @@ func (m *MsgPayForBlobsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgPayForBlobsResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgPayForBlobs)(nil), "celestia.blob.v2.MsgPayForBlobs") - proto.RegisterType((*MsgPayForBlobsResponse)(nil), "celestia.blob.v2.MsgPayForBlobsResponse") -} - -func init() { proto.RegisterFile("celestia/blob/v2/tx.proto", fileDescriptor_82f557c0bb46a753) } - -var fileDescriptor_82f557c0bb46a753 = []byte{ - // 356 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xc1, 0x4a, 0xeb, 0x40, - 0x14, 0x86, 0x3b, 0xcd, 0xa5, 0xdc, 0xce, 0xbd, 0x2d, 0xbd, 0xe1, 0x52, 0xd2, 0xa2, 0x31, 0x04, - 0x84, 0xa0, 0x98, 0xd1, 0xba, 0x73, 0x59, 0xc1, 0x85, 0x50, 0x90, 0x08, 0x2e, 0xdc, 0x94, 0x49, - 0x18, 0xd3, 0x40, 0x92, 0x33, 0xe4, 0x8c, 0xa5, 0xed, 0x4e, 0x9f, 0x40, 0xf0, 0x71, 0x7c, 0x01, - 0x97, 0x05, 0x37, 0x2e, 0xa5, 0xf5, 0x41, 0x24, 0x69, 0xab, 0xad, 0x1b, 0x77, 0x39, 0xdf, 0xff, - 0xf3, 0xff, 0x27, 0x73, 0x68, 0x2b, 0x10, 0xb1, 0x40, 0x15, 0x71, 0xe6, 0xc7, 0xe0, 0xb3, 0x61, - 0x87, 0xa9, 0x91, 0x2b, 0x33, 0x50, 0xa0, 0x37, 0x56, 0x92, 0x9b, 0x4b, 0xee, 0xb0, 0xd3, 0xde, - 0x0a, 0x01, 0xc2, 0x58, 0x30, 0x2e, 0x23, 0xc6, 0xd3, 0x14, 0x14, 0x57, 0x11, 0xa4, 0xb8, 0xf0, - 0xdb, 0x4f, 0x84, 0xd6, 0x7b, 0x18, 0x5e, 0xf0, 0xf1, 0x19, 0x64, 0xdd, 0x18, 0x7c, 0xd4, 0x9b, - 0xb4, 0x82, 0x51, 0x98, 0x8a, 0xcc, 0x20, 0x16, 0x71, 0xaa, 0xde, 0x72, 0xd2, 0x4d, 0x4a, 0x53, - 0x9e, 0x08, 0x94, 0x3c, 0x10, 0x68, 0x94, 0x2d, 0xcd, 0xf9, 0xeb, 0xad, 0x11, 0x7d, 0x9b, 0xd2, - 0xbc, 0xb3, 0x8f, 0xd1, 0x44, 0xa0, 0xa1, 0x59, 0x9a, 0x53, 0xf3, 0xaa, 0x39, 0xb9, 0xcc, 0x81, - 0xbe, 0x4f, 0xff, 0xe1, 0x80, 0x67, 0xa2, 0x1f, 0x40, 0x92, 0x44, 0x2a, 0x11, 0xa9, 0x42, 0xe3, - 0x57, 0x91, 0xd2, 0x28, 0x84, 0xd3, 0x2f, 0xae, 0xef, 0xd2, 0xfa, 0xc2, 0x3c, 0x14, 0x19, 0xe6, - 0xeb, 0x1a, 0xbf, 0x8b, 0xbc, 0x5a, 0x41, 0xaf, 0x96, 0xd0, 0x36, 0x68, 0x73, 0x73, 0x79, 0x4f, - 0xa0, 0x84, 0x14, 0x45, 0xe7, 0x8e, 0x50, 0xad, 0x87, 0xa1, 0x3e, 0xa1, 0x7f, 0xd6, 0xff, 0xcd, - 0x72, 0xbf, 0xbf, 0x8f, 0xbb, 0x19, 0xd0, 0x76, 0x7e, 0x72, 0xac, 0x2a, 0xec, 0x9d, 0xfb, 0x97, - 0xf7, 0xc7, 0x72, 0xcb, 0xfe, 0xbf, 0xbc, 0xc2, 0x11, 0x93, 0x7c, 0x7c, 0x03, 0x59, 0x3e, 0xe1, - 0x09, 0xd9, 0xeb, 0x9e, 0x3f, 0xcf, 0x4c, 0x32, 0x9d, 0x99, 0xe4, 0x6d, 0x66, 0x92, 0x87, 0xb9, - 0x59, 0x9a, 0xce, 0xcd, 0xd2, 0xeb, 0xdc, 0x2c, 0x5d, 0x1f, 0x86, 0x91, 0x1a, 0xdc, 0xfa, 0x6e, - 0x00, 0x09, 0x5b, 0xd5, 0x41, 0x16, 0x7e, 0x7e, 0x1f, 0x70, 0x29, 0xd9, 0x68, 0x91, 0xab, 0xc6, - 0x52, 0xa0, 0x5f, 0x29, 0xce, 0x75, 0xfc, 0x11, 0x00, 0x00, 0xff, 0xff, 0x12, 0x01, 0x66, 0x37, - 0xfb, 0x01, 0x00, 0x00, + proto.RegisterType((*MsgPayForBlobs)(nil), "celestia.blob.v1.MsgPayForBlobs") + proto.RegisterType((*MsgPayForBlobsResponse)(nil), "celestia.blob.v1.MsgPayForBlobsResponse") +} + +func init() { proto.RegisterFile("celestia/blob/v1/tx.proto", fileDescriptor_9157fbf3d3cd004d) } + +var fileDescriptor_9157fbf3d3cd004d = []byte{ + // 352 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x91, 0xcd, 0x4a, 0xc3, 0x40, + 0x14, 0x85, 0x3b, 0x8d, 0x14, 0x3b, 0xda, 0x52, 0x83, 0x94, 0xb4, 0x68, 0x0c, 0x01, 0x21, 0x28, + 0x26, 0x56, 0x77, 0x2e, 0x2b, 0xb8, 0x10, 0x0a, 0x12, 0xc1, 0x85, 0x9b, 0x32, 0x09, 0x63, 0x1a, + 0x48, 0x72, 0x87, 0xdc, 0xb1, 0xb4, 0xdd, 0xe9, 0x13, 0x08, 0x3e, 0x8e, 0x2f, 0xe0, 0xb2, 0xe0, + 0xc6, 0xa5, 0xb4, 0x3e, 0x88, 0x24, 0xfd, 0xb1, 0x75, 0xe3, 0x2e, 0xf7, 0x3b, 0x87, 0x73, 0x6e, + 0xe6, 0xd2, 0x86, 0xcf, 0x23, 0x8e, 0x32, 0x64, 0x8e, 0x17, 0x81, 0xe7, 0xf4, 0x5b, 0x8e, 0x1c, + 0xd8, 0x22, 0x05, 0x09, 0x6a, 0x6d, 0x21, 0xd9, 0x99, 0x64, 0xf7, 0x5b, 0xcd, 0xbd, 0x00, 0x20, + 0x88, 0xb8, 0xc3, 0x44, 0xe8, 0xb0, 0x24, 0x01, 0xc9, 0x64, 0x08, 0x09, 0xce, 0xfc, 0xe6, 0x1b, + 0xa1, 0xd5, 0x0e, 0x06, 0x37, 0x6c, 0x78, 0x05, 0x69, 0x3b, 0x02, 0x0f, 0xd5, 0x3a, 0x2d, 0x61, + 0x18, 0x24, 0x3c, 0xd5, 0x88, 0x41, 0xac, 0xb2, 0x3b, 0x9f, 0x54, 0x9d, 0xd2, 0x84, 0xc5, 0x1c, + 0x05, 0xf3, 0x39, 0x6a, 0x45, 0x43, 0xb1, 0xb6, 0xdd, 0x15, 0xa2, 0xee, 0x53, 0x9a, 0x75, 0x76, + 0x31, 0x1c, 0x71, 0xd4, 0x14, 0x43, 0xb1, 0x2a, 0x6e, 0x39, 0x23, 0xb7, 0x19, 0x50, 0x8f, 0xe9, + 0x0e, 0xf6, 0x58, 0xca, 0xbb, 0x3e, 0xc4, 0x71, 0x28, 0x63, 0x9e, 0x48, 0xd4, 0x36, 0xf2, 0x94, + 0x5a, 0x2e, 0x5c, 0xfe, 0x72, 0xf5, 0x90, 0x56, 0x67, 0xe6, 0x3e, 0x4f, 0x31, 0x5b, 0x57, 0xdb, + 0xcc, 0xf3, 0x2a, 0x39, 0xbd, 0x9b, 0x43, 0x53, 0xa3, 0xf5, 0xf5, 0xe5, 0x5d, 0x8e, 0x02, 0x12, + 0xe4, 0x67, 0x4f, 0x84, 0x2a, 0x1d, 0x0c, 0xd4, 0x11, 0xdd, 0x5a, 0xfd, 0x37, 0xc3, 0xfe, 0xfb, + 0x3e, 0xf6, 0x7a, 0x40, 0xd3, 0xfa, 0xcf, 0xb1, 0xa8, 0x30, 0x0f, 0x9e, 0x3f, 0xbe, 0x5f, 0x8b, + 0x0d, 0x73, 0x77, 0x79, 0x05, 0xc1, 0x86, 0x0f, 0x90, 0x66, 0x13, 0x5e, 0x90, 0xa3, 0xf6, 0xf5, + 0xfb, 0x44, 0x27, 0xe3, 0x89, 0x4e, 0xbe, 0x26, 0x3a, 0x79, 0x99, 0xea, 0x85, 0xf1, 0x54, 0x2f, + 0x7c, 0x4e, 0xf5, 0xc2, 0xfd, 0x69, 0x10, 0xca, 0xde, 0xa3, 0x67, 0xfb, 0x10, 0x3b, 0x8b, 0x3a, + 0x48, 0x83, 0xe5, 0xf7, 0x09, 0x13, 0xc2, 0x19, 0xcc, 0x72, 0xe5, 0x50, 0x70, 0xf4, 0x4a, 0xf9, + 0xb9, 0xce, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x82, 0x67, 0x80, 0x6a, 0xfb, 0x01, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -214,7 +213,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) PayForBlobs(ctx context.Context, in *MsgPayForBlobs, opts ...grpc.CallOption) (*MsgPayForBlobsResponse, error) { out := new(MsgPayForBlobsResponse) - err := c.cc.Invoke(ctx, "/celestia.blob.v2.Msg/PayForBlobs", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.blob.v1.Msg/PayForBlobs", in, out, opts...) if err != nil { return nil, err } @@ -249,7 +248,7 @@ func _Msg_PayForBlobs_Handler(srv interface{}, ctx context.Context, dec func(int } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.blob.v2.Msg/PayForBlobs", + FullMethod: "/celestia.blob.v1.Msg/PayForBlobs", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).PayForBlobs(ctx, req.(*MsgPayForBlobs)) @@ -258,7 +257,7 @@ func _Msg_PayForBlobs_Handler(srv interface{}, ctx context.Context, dec func(int } var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.blob.v2.Msg", + ServiceName: "celestia.blob.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { @@ -267,7 +266,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/blob/v2/tx.proto", + Metadata: "celestia/blob/v1/tx.proto", } func (m *MsgPayForBlobs) Marshal() (dAtA []byte, err error) { diff --git a/x/blob/types/tx.pb.gw.go b/x/blob/types/tx.pb.gw.go index e9391e8efc..f74689d3aa 100644 --- a/x/blob/types/tx.pb.gw.go +++ b/x/blob/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/blob/v2/tx.proto +// source: celestia/blob/v1/tx.proto /* Package types is a reverse proxy. diff --git a/x/blobstream/types/tx.pb.go b/x/blobstream/types/tx.pb.go index 3a25b22461..0c6482f9e1 100644 --- a/x/blobstream/types/tx.pb.go +++ b/x/blobstream/types/tx.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v2/tx.proto +// source: celestia/qgb/v1/tx.proto package types @@ -42,7 +42,7 @@ func (m *MsgRegisterEVMAddress) Reset() { *m = MsgRegisterEVMAddress{} } func (m *MsgRegisterEVMAddress) String() string { return proto.CompactTextString(m) } func (*MsgRegisterEVMAddress) ProtoMessage() {} func (*MsgRegisterEVMAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_d02473b648247317, []int{0} + return fileDescriptor_85ed1095628e2204, []int{0} } func (m *MsgRegisterEVMAddress) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -93,7 +93,7 @@ func (m *MsgRegisterEVMAddressResponse) Reset() { *m = MsgRegisterEVMAdd func (m *MsgRegisterEVMAddressResponse) String() string { return proto.CompactTextString(m) } func (*MsgRegisterEVMAddressResponse) ProtoMessage() {} func (*MsgRegisterEVMAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d02473b648247317, []int{1} + return fileDescriptor_85ed1095628e2204, []int{1} } func (m *MsgRegisterEVMAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -123,17 +123,17 @@ func (m *MsgRegisterEVMAddressResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgRegisterEVMAddressResponse proto.InternalMessageInfo func init() { - proto.RegisterType((*MsgRegisterEVMAddress)(nil), "celestia.qgb.v2.MsgRegisterEVMAddress") - proto.RegisterType((*MsgRegisterEVMAddressResponse)(nil), "celestia.qgb.v2.MsgRegisterEVMAddressResponse") + proto.RegisterType((*MsgRegisterEVMAddress)(nil), "celestia.qgb.v1.MsgRegisterEVMAddress") + proto.RegisterType((*MsgRegisterEVMAddressResponse)(nil), "celestia.qgb.v1.MsgRegisterEVMAddressResponse") } -func init() { proto.RegisterFile("celestia/qgb/v2/tx.proto", fileDescriptor_d02473b648247317) } +func init() { proto.RegisterFile("celestia/qgb/v1/tx.proto", fileDescriptor_85ed1095628e2204) } -var fileDescriptor_d02473b648247317 = []byte{ - // 336 bytes of a gzipped FileDescriptorProto +var fileDescriptor_85ed1095628e2204 = []byte{ + // 335 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x91, 0xc1, 0x4a, 0x03, 0x31, 0x10, 0x86, 0x9b, 0x0a, 0x82, 0xf1, 0xa0, 0x2e, 0x15, 0x6a, 0xa9, 0xa9, 0x14, 0x11, 0x2f, 0x4d, - 0xb0, 0x82, 0x77, 0x0b, 0x3d, 0x16, 0x64, 0x05, 0x0f, 0x5e, 0x4a, 0xb6, 0x0d, 0x31, 0xb0, 0xbb, + 0xa8, 0x82, 0x77, 0x0b, 0x3d, 0x16, 0x64, 0x05, 0x0f, 0x5e, 0x4a, 0xb6, 0x0d, 0x31, 0xb0, 0xbb, 0xb3, 0xcd, 0xc4, 0xa5, 0x9e, 0x04, 0x9f, 0x40, 0xf4, 0xe6, 0x73, 0xf8, 0x10, 0x1e, 0x8b, 0x5e, 0x3c, 0x4a, 0xeb, 0x83, 0x48, 0xbb, 0xbb, 0x45, 0xa4, 0x07, 0x6f, 0x93, 0xfc, 0x5f, 0xfe, 0x7f, 0x32, 0x43, 0xab, 0x03, 0x15, 0x2a, 0x74, 0x46, 0x8a, 0x91, 0x0e, 0x44, 0xda, 0x16, 0x6e, 0xcc, @@ -144,14 +144,14 @@ var fileDescriptor_d02473b648247317 = []byte{ 0x15, 0xa2, 0xd7, 0xa5, 0x3b, 0xa9, 0x0c, 0xcd, 0x50, 0x3a, 0xb0, 0x7d, 0x99, 0x5d, 0x56, 0xc9, 0x01, 0x39, 0xde, 0xe8, 0x54, 0xdf, 0x5f, 0x5b, 0x95, 0x3c, 0x23, 0xc7, 0x2f, 0x9d, 0x35, 0xb1, 0xf6, 0xb7, 0x97, 0x4f, 0x0a, 0x9b, 0x06, 0xdd, 0x54, 0x69, 0xb4, 0x34, 0x28, 0xcf, 0x0d, 0x7c, - 0xaa, 0xd2, 0x28, 0x07, 0x9a, 0x0d, 0xba, 0xbf, 0xb2, 0x01, 0x5f, 0x61, 0x02, 0x31, 0xaa, 0xf6, - 0x0b, 0xa1, 0x6b, 0x3d, 0xd4, 0xde, 0x13, 0xa1, 0xde, 0x8a, 0x3e, 0x8f, 0xf8, 0x9f, 0x09, 0xf1, - 0x95, 0x76, 0x35, 0xfe, 0x3f, 0xae, 0x88, 0x6d, 0x1e, 0x3e, 0x7c, 0x7c, 0x3f, 0x97, 0x99, 0x57, - 0xcf, 0x56, 0x72, 0x22, 0x6c, 0xce, 0xf6, 0x7f, 0xfd, 0xa7, 0x73, 0xf1, 0x36, 0x65, 0x64, 0x32, - 0x65, 0xe4, 0x6b, 0xca, 0xc8, 0xe3, 0x8c, 0x95, 0x26, 0x33, 0x56, 0xfa, 0x9c, 0xb1, 0xd2, 0xf5, - 0x99, 0x36, 0xee, 0xe6, 0x36, 0xe0, 0x03, 0x88, 0x44, 0x91, 0x0c, 0x56, 0x2f, 0xeb, 0x96, 0x4c, - 0x12, 0x31, 0x16, 0x41, 0x08, 0x01, 0x3a, 0xab, 0x64, 0x24, 0xdc, 0x5d, 0xa2, 0x30, 0x58, 0x5f, - 0xec, 0xe5, 0xf4, 0x27, 0x00, 0x00, 0xff, 0xff, 0x8f, 0xf2, 0x8f, 0x3b, 0x13, 0x02, 0x00, 0x00, + 0xaa, 0xd2, 0x28, 0x07, 0x9a, 0x0d, 0xba, 0xbf, 0xb2, 0x01, 0x5f, 0x61, 0x02, 0x31, 0xaa, 0x93, + 0x17, 0x42, 0xd7, 0x7a, 0xa8, 0xbd, 0x27, 0x42, 0xbd, 0x15, 0x7d, 0x1e, 0xf1, 0x3f, 0x13, 0xe2, + 0x2b, 0xed, 0x6a, 0xfc, 0x7f, 0x5c, 0x11, 0xdb, 0x3c, 0x7c, 0xf8, 0xf8, 0x7e, 0x2e, 0x33, 0xaf, + 0x5e, 0xac, 0xc4, 0xe6, 0x6c, 0xff, 0xd7, 0x7f, 0x3a, 0x17, 0x6f, 0x53, 0x46, 0x26, 0x53, 0x46, + 0xbe, 0xa6, 0x8c, 0x3c, 0xce, 0x58, 0x69, 0x32, 0x63, 0xa5, 0xcf, 0x19, 0x2b, 0x5d, 0x9f, 0x69, + 0xe3, 0x6e, 0x6e, 0x03, 0x3e, 0x80, 0x48, 0x14, 0xc9, 0x60, 0xf5, 0xb2, 0x6e, 0xc9, 0x24, 0x11, + 0x63, 0x11, 0x84, 0x10, 0xa0, 0xb3, 0x4a, 0x46, 0xc2, 0xdd, 0x25, 0x0a, 0x83, 0xf5, 0xc5, 0x5e, + 0x4e, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x18, 0x1a, 0xed, 0x13, 0x02, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -184,7 +184,7 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { func (c *msgClient) RegisterEVMAddress(ctx context.Context, in *MsgRegisterEVMAddress, opts ...grpc.CallOption) (*MsgRegisterEVMAddressResponse, error) { out := new(MsgRegisterEVMAddressResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Msg/RegisterEVMAddress", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Msg/RegisterEVMAddress", in, out, opts...) if err != nil { return nil, err } @@ -223,7 +223,7 @@ func _Msg_RegisterEVMAddress_Handler(srv interface{}, ctx context.Context, dec f } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Msg/RegisterEVMAddress", + FullMethod: "/celestia.qgb.v1.Msg/RegisterEVMAddress", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MsgServer).RegisterEVMAddress(ctx, req.(*MsgRegisterEVMAddress)) @@ -232,7 +232,7 @@ func _Msg_RegisterEVMAddress_Handler(srv interface{}, ctx context.Context, dec f } var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.qgb.v2.Msg", + ServiceName: "celestia.qgb.v1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ { @@ -241,7 +241,7 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/qgb/v2/tx.proto", + Metadata: "celestia/qgb/v1/tx.proto", } func (m *MsgRegisterEVMAddress) Marshal() (dAtA []byte, err error) { diff --git a/x/blobstream/types/tx.pb.gw.go b/x/blobstream/types/tx.pb.gw.go index ee090ca78f..18769d55c4 100644 --- a/x/blobstream/types/tx.pb.gw.go +++ b/x/blobstream/types/tx.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/qgb/v2/tx.proto +// source: celestia/qgb/v1/tx.proto /* Package types is a reverse proxy. diff --git a/x/blobstream/types/types.pb.go b/x/blobstream/types/types.pb.go index c7f83de37c..34078b961b 100644 --- a/x/blobstream/types/types.pb.go +++ b/x/blobstream/types/types.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v2/types.proto +// source: celestia/qgb/v1/types.proto package types @@ -40,7 +40,7 @@ func (m *BridgeValidator) Reset() { *m = BridgeValidator{} } func (m *BridgeValidator) String() string { return proto.CompactTextString(m) } func (*BridgeValidator) ProtoMessage() {} func (*BridgeValidator) Descriptor() ([]byte, []int) { - return fileDescriptor_493cad58199880be, []int{0} + return fileDescriptor_5db0e6d49b998544, []int{0} } func (m *BridgeValidator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -102,7 +102,7 @@ func (m *Valset) Reset() { *m = Valset{} } func (m *Valset) String() string { return proto.CompactTextString(m) } func (*Valset) ProtoMessage() {} func (*Valset) Descriptor() ([]byte, []int) { - return fileDescriptor_493cad58199880be, []int{1} + return fileDescriptor_5db0e6d49b998544, []int{1} } func (m *Valset) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -183,7 +183,7 @@ func (m *DataCommitment) Reset() { *m = DataCommitment{} } func (m *DataCommitment) String() string { return proto.CompactTextString(m) } func (*DataCommitment) ProtoMessage() {} func (*DataCommitment) Descriptor() ([]byte, []int) { - return fileDescriptor_493cad58199880be, []int{2} + return fileDescriptor_5db0e6d49b998544, []int{2} } func (m *DataCommitment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -241,42 +241,42 @@ func (m *DataCommitment) GetTime() time.Time { } func init() { - proto.RegisterType((*BridgeValidator)(nil), "celestia.qgb.v2.BridgeValidator") - proto.RegisterType((*Valset)(nil), "celestia.qgb.v2.Valset") - proto.RegisterType((*DataCommitment)(nil), "celestia.qgb.v2.DataCommitment") + proto.RegisterType((*BridgeValidator)(nil), "celestia.qgb.v1.BridgeValidator") + proto.RegisterType((*Valset)(nil), "celestia.qgb.v1.Valset") + proto.RegisterType((*DataCommitment)(nil), "celestia.qgb.v1.DataCommitment") } -func init() { proto.RegisterFile("celestia/qgb/v2/types.proto", fileDescriptor_493cad58199880be) } +func init() { proto.RegisterFile("celestia/qgb/v1/types.proto", fileDescriptor_5db0e6d49b998544) } -var fileDescriptor_493cad58199880be = []byte{ +var fileDescriptor_5db0e6d49b998544 = []byte{ // 424 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x92, 0x41, 0x6f, 0xd3, 0x30, 0x18, 0x86, 0x6b, 0x16, 0xca, 0xe6, 0x4a, 0x4c, 0x0a, 0x13, 0x94, 0x4e, 0x4a, 0xaa, 0x9e, 0x7a, - 0x99, 0x2d, 0x15, 0x09, 0x21, 0x4e, 0x2c, 0x70, 0x80, 0x1b, 0x8a, 0xd0, 0x0e, 0x5c, 0x2a, 0x3b, + 0x99, 0xad, 0x0d, 0x09, 0x21, 0x4e, 0x2c, 0x70, 0x80, 0x1b, 0x8a, 0xd0, 0x0e, 0x5c, 0x2a, 0x3b, 0xf9, 0x70, 0x2d, 0xe2, 0x7c, 0x69, 0xec, 0x06, 0xf8, 0x17, 0xfb, 0x31, 0x48, 0xfc, 0x85, 0x09, 0x2e, 0x3b, 0x72, 0x02, 0xd4, 0xfe, 0x11, 0x94, 0xb8, 0xe1, 0x30, 0x89, 0xdb, 0x6e, 0x7e, 0xbf, - 0xc7, 0xdf, 0xab, 0xf7, 0xb5, 0x4c, 0x4f, 0x33, 0x28, 0xc0, 0x3a, 0x2d, 0xf8, 0x5a, 0x49, 0xde, - 0x2c, 0xb8, 0xfb, 0x52, 0x81, 0x65, 0x55, 0x8d, 0x0e, 0xc3, 0xe3, 0x1e, 0xb2, 0xb5, 0x92, 0xac, - 0x59, 0x4c, 0x4e, 0x14, 0x2a, 0xec, 0x18, 0x6f, 0x4f, 0xfe, 0xda, 0xe4, 0x71, 0x86, 0xd6, 0xa0, - 0x5d, 0x7a, 0xe0, 0xc5, 0x1e, 0xc5, 0x0a, 0x51, 0x15, 0xc0, 0x3b, 0x25, 0x37, 0x1f, 0xb8, 0xd3, - 0x06, 0xac, 0x13, 0xa6, 0xf2, 0x17, 0x66, 0xaf, 0xe9, 0x71, 0x52, 0xeb, 0x5c, 0xc1, 0x85, 0x28, - 0x74, 0x2e, 0x1c, 0xd6, 0xe1, 0x09, 0xbd, 0x5b, 0xe1, 0x27, 0xa8, 0xc7, 0x64, 0x4a, 0xe6, 0x41, - 0xea, 0x45, 0x18, 0xd3, 0x11, 0x34, 0x66, 0x29, 0xf2, 0xbc, 0x06, 0x6b, 0xc7, 0x77, 0xa6, 0x64, - 0x7e, 0x94, 0x52, 0x68, 0xcc, 0xb9, 0x9f, 0xcc, 0x7e, 0x10, 0x3a, 0xbc, 0x10, 0x85, 0x05, 0xd7, - 0x3a, 0x94, 0x58, 0x66, 0xd0, 0x3b, 0x74, 0x22, 0x7c, 0x41, 0xef, 0x19, 0x30, 0x12, 0xea, 0x76, - 0xfb, 0x60, 0x3e, 0x5a, 0x4c, 0xd9, 0x8d, 0x7e, 0xec, 0x46, 0x94, 0x24, 0xb8, 0xfa, 0x15, 0x0f, - 0xd2, 0x7e, 0x2d, 0x7c, 0x48, 0x87, 0x2b, 0xd0, 0x6a, 0xe5, 0xc6, 0x07, 0x9d, 0xf1, 0x5e, 0x85, - 0xcf, 0x68, 0xd0, 0xf6, 0x1a, 0x07, 0x53, 0x32, 0x1f, 0x2d, 0x26, 0xcc, 0x97, 0x66, 0x7d, 0x69, - 0xf6, 0xae, 0x2f, 0x9d, 0x1c, 0xb6, 0x86, 0x97, 0xbf, 0x63, 0x92, 0x76, 0x1b, 0xcf, 0x1f, 0x7d, - 0xff, 0x7a, 0xf6, 0xe0, 0xdc, 0xb9, 0x16, 0x3b, 0x8d, 0x65, 0x0a, 0xeb, 0x0d, 0x58, 0xf7, 0x66, - 0xf6, 0x8d, 0xd0, 0xfb, 0xaf, 0x84, 0x13, 0x2f, 0xd1, 0x18, 0xed, 0x0c, 0x94, 0xff, 0x6b, 0x15, - 0xd3, 0x91, 0x04, 0xa5, 0xcb, 0xa5, 0x2c, 0x30, 0xfb, 0xd8, 0xbd, 0x4b, 0x90, 0xd2, 0x6e, 0x94, - 0xb4, 0x93, 0xf0, 0x94, 0x1e, 0x41, 0x99, 0xef, 0xb1, 0xcf, 0x7d, 0x08, 0x65, 0xee, 0xe1, 0xed, - 0x27, 0x4f, 0xde, 0x5e, 0x6d, 0x23, 0x72, 0xbd, 0x8d, 0xc8, 0x9f, 0x6d, 0x44, 0x2e, 0x77, 0xd1, - 0xe0, 0x7a, 0x17, 0x0d, 0x7e, 0xee, 0xa2, 0xc1, 0xfb, 0xa7, 0x4a, 0xbb, 0xd5, 0x46, 0xb2, 0x0c, - 0x0d, 0xef, 0x5f, 0x1e, 0x6b, 0xf5, 0xef, 0x7c, 0x26, 0xaa, 0x8a, 0x7f, 0xe6, 0xb2, 0x40, 0x69, - 0x5d, 0x0d, 0xc2, 0xf8, 0xcf, 0x28, 0x87, 0x5d, 0x9c, 0x27, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, - 0x97, 0xb1, 0xb1, 0xa8, 0xac, 0x02, 0x00, 0x00, + 0xc7, 0xdf, 0xab, 0xf7, 0xb5, 0x4c, 0x8f, 0x33, 0x28, 0xc0, 0x3a, 0x2d, 0xf8, 0x4a, 0x49, 0xde, + 0x9c, 0x72, 0xf7, 0xa5, 0x02, 0xcb, 0xaa, 0x1a, 0x1d, 0x86, 0x87, 0x3d, 0x64, 0x2b, 0x25, 0x59, + 0x73, 0x3a, 0x39, 0x52, 0xa8, 0xb0, 0x63, 0xbc, 0x3d, 0xf9, 0x6b, 0x93, 0xc7, 0x19, 0x5a, 0x83, + 0x76, 0xe1, 0x81, 0x17, 0x3b, 0x14, 0x2b, 0x44, 0x55, 0x00, 0xef, 0x94, 0x5c, 0x7f, 0xe0, 0x4e, + 0x1b, 0xb0, 0x4e, 0x98, 0xca, 0x5f, 0x98, 0xbd, 0xa6, 0x87, 0x49, 0xad, 0x73, 0x05, 0x17, 0xa2, + 0xd0, 0xb9, 0x70, 0x58, 0x87, 0x47, 0xf4, 0x6e, 0x85, 0x9f, 0xa0, 0x1e, 0x93, 0x29, 0x99, 0x07, + 0xa9, 0x17, 0x61, 0x4c, 0x47, 0xd0, 0x98, 0x85, 0xc8, 0xf3, 0x1a, 0xac, 0x1d, 0xdf, 0x99, 0x92, + 0xf9, 0x41, 0x4a, 0xa1, 0x31, 0xe7, 0x7e, 0x32, 0xfb, 0x41, 0xe8, 0xf0, 0x42, 0x14, 0x16, 0x5c, + 0xeb, 0x50, 0x62, 0x99, 0x41, 0xef, 0xd0, 0x89, 0xf0, 0x05, 0xbd, 0x67, 0xc0, 0x48, 0xa8, 0xdb, + 0xed, 0xbd, 0xf9, 0xe8, 0x6c, 0xca, 0x6e, 0xf4, 0x63, 0x37, 0xa2, 0x24, 0xc1, 0xd5, 0xaf, 0x78, + 0x90, 0xf6, 0x6b, 0xe1, 0x43, 0x3a, 0x5c, 0x82, 0x56, 0x4b, 0x37, 0xde, 0xeb, 0x8c, 0x77, 0x2a, + 0x7c, 0x46, 0x83, 0xb6, 0xd7, 0x38, 0x98, 0x92, 0xf9, 0xe8, 0x6c, 0xc2, 0x7c, 0x69, 0xd6, 0x97, + 0x66, 0xef, 0xfa, 0xd2, 0xc9, 0x7e, 0x6b, 0x78, 0xf9, 0x3b, 0x26, 0x69, 0xb7, 0xf1, 0xfc, 0xd1, + 0xf7, 0xaf, 0x27, 0x0f, 0xce, 0x9d, 0x6b, 0xb1, 0xd3, 0x58, 0xa6, 0xb0, 0x5a, 0x83, 0x75, 0x6f, + 0x66, 0xdf, 0x08, 0xbd, 0xff, 0x4a, 0x38, 0xf1, 0x12, 0x8d, 0xd1, 0xce, 0x40, 0xf9, 0xbf, 0x56, + 0x31, 0x1d, 0x49, 0x50, 0xba, 0x5c, 0xc8, 0x02, 0xb3, 0x8f, 0xdd, 0xbb, 0x04, 0x29, 0xed, 0x46, + 0x49, 0x3b, 0x09, 0x8f, 0xe9, 0x01, 0x94, 0xf9, 0x0e, 0xfb, 0xdc, 0xfb, 0x50, 0xe6, 0x1e, 0xde, + 0x7e, 0xf2, 0xe4, 0xed, 0xd5, 0x26, 0x22, 0xd7, 0x9b, 0x88, 0xfc, 0xd9, 0x44, 0xe4, 0x72, 0x1b, + 0x0d, 0xae, 0xb7, 0xd1, 0xe0, 0xe7, 0x36, 0x1a, 0xbc, 0x7f, 0xaa, 0xb4, 0x5b, 0xae, 0x25, 0xcb, + 0xd0, 0xf0, 0xfe, 0xe5, 0xb1, 0x56, 0xff, 0xce, 0x27, 0xa2, 0xaa, 0xf8, 0x67, 0x2e, 0x0b, 0x94, + 0xd6, 0xd5, 0x20, 0x8c, 0xff, 0x8c, 0x72, 0xd8, 0xc5, 0x79, 0xf2, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x43, 0xb6, 0x7e, 0xfe, 0xac, 0x02, 0x00, 0x00, } func (m *BridgeValidator) Marshal() (dAtA []byte, err error) { From 19e8d9cabb5da802198e886c14119123171d046c Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 21 Oct 2024 14:35:10 -0400 Subject: [PATCH 134/140] fix: able to run scripts/single-node.sh --- app/app.go | 16 ++++++++-------- node/go.mod | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/app.go b/app/app.go index b98aaf3283..1b6040aeba 100644 --- a/app/app.go +++ b/app/app.go @@ -439,13 +439,13 @@ func New( tmos.Exit(err.Error()) } - height := app.LastBlockHeight() - ctx, err := app.CreateQueryContext(height, false) - if err != nil { - panic(err) - } - app.SetAppVersion(ctx, v3) - app.mountKeysAndInit(3) + // height := app.LastBlockHeight() + // ctx, err := app.CreateQueryContext(height, false) + // if err != nil { + // panic(err) + // } + // app.SetAppVersion(ctx, v3) + // app.mountKeysAndInit(3) return app } @@ -461,6 +461,7 @@ func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.R return app.manager.BeginBlock(ctx, req) } +// EndBlocker executes application updates at the end of every block. func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { res := app.manager.EndBlock(ctx, req) currentVersion := app.AppVersion() @@ -486,7 +487,6 @@ func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.Respo app.SignalKeeper.ResetTally(ctx) } } - // Question why do we do this every block instead of just during the v2 to v3 upgrade? res.Timeouts.TimeoutCommit = appconsts.GetTimeoutCommit(currentVersion) res.Timeouts.TimeoutPropose = appconsts.GetTimeoutPropose(currentVersion) return res diff --git a/node/go.mod b/node/go.mod index f52a80ab15..2a42c5961a 100644 --- a/node/go.mod +++ b/node/go.mod @@ -1,6 +1,6 @@ module github.com/celestiaorg/celestia-app/node -go 1.22.6 +go 1.23.1 require ( github.com/celestiaorg/celestia-app/v2 v2.0.0 From 168689907ab490b284bc7f3df67572d34e18f5e0 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Mon, 21 Oct 2024 15:51:21 -0400 Subject: [PATCH 135/140] address merge conflicts --- node/go.mod | 114 +++++++++-------- node/go.sum | 257 +++++++++++++++++++-------------------- node/utils/start_node.go | 4 +- 3 files changed, 188 insertions(+), 187 deletions(-) diff --git a/node/go.mod b/node/go.mod index 2a42c5961a..846a086a27 100644 --- a/node/go.mod +++ b/node/go.mod @@ -15,7 +15,7 @@ require ( require ( cloud.google.com/go v0.112.1 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.6 // indirect cloud.google.com/go/storage v1.38.0 // indirect cosmossdk.io/errors v1.0.1 // indirect @@ -24,6 +24,7 @@ require ( github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/DataDog/zstd v1.5.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/StackExchange/wmi v1.2.1 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect @@ -32,35 +33,41 @@ require ( github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/bits-and-blooms/bitset v1.10.0 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect + github.com/bits-and-blooms/bitset v1.13.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect - github.com/celestiaorg/celestia-app/v3/x/signal v1.0.0 // indirect - github.com/celestiaorg/go-square v1.1.0 // indirect + github.com/celestiaorg/go-square v1.1.1 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect - github.com/celestiaorg/go-square/v2 v2.0.0-rc2 // indirect + github.com/celestiaorg/go-square/v2 v2.0.0 // indirect github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 // indirect - github.com/celestiaorg/nmt v0.22.1 // indirect + github.com/celestiaorg/nmt v0.22.2 // indirect github.com/celestiaorg/rsmt2d v0.14.0 // indirect - github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chzyer/readline v1.5.1 // indirect github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.2 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect - github.com/cometbft/cometbft-db v0.7.0 // indirect + github.com/cometbft/cometbft-db v1.0.1 // indirect github.com/confio/ics23/go v0.9.1 // indirect github.com/consensys/bavard v0.1.13 // indirect github.com/consensys/gnark-crypto v0.12.1 // indirect github.com/cosmos/btcutil v1.0.5 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gogoproto v1.5.0 // indirect + github.com/cosmos/gogoproto v1.7.0 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect github.com/cosmos/iavl v0.19.6 // indirect github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6 v6.1.2 // indirect github.com/cosmos/ibc-go/v6 v6.3.1 // indirect github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect + github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c // indirect github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect @@ -69,28 +76,31 @@ require ( github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect github.com/dgraph-io/badger/v2 v2.2007.4 // indirect - github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dgraph-io/badger/v4 v4.3.0 // indirect + github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/ethereum/c-kzg-4844 v1.0.0 // indirect - github.com/ethereum/go-ethereum v1.14.7 // indirect + github.com/ethereum/go-ethereum v1.14.11 // indirect + github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect github.com/go-logfmt/logfmt v0.6.0 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/gateway v1.1.0 // indirect github.com/gogo/protobuf v1.3.3 // indirect - github.com/golang/glog v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v1.12.1 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect @@ -99,10 +109,10 @@ require ( github.com/googleapis/gax-go/v2 v2.12.3 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/gorilla/websocket v1.5.0 // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/grafana/otel-profiling-go v0.5.1 // indirect - github.com/grafana/pyroscope-go v1.1.1 // indirect - github.com/grafana/pyroscope-go/godeltaprof v0.1.6 // indirect + github.com/grafana/pyroscope-go v1.1.2 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect @@ -116,41 +126,45 @@ require ( github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect - github.com/holiman/uint256 v1.3.0 // indirect + github.com/holiman/uint256 v1.3.1 // indirect github.com/iancoleman/orderedmap v0.2.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.17.6 // indirect - github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/klauspost/reedsolomon v1.12.1 // indirect - github.com/lib/pq v1.10.7 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.10.9 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/linxGnu/grocksdb v1.9.3 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect - github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/highwayhash v1.0.3 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nxadm/tail v1.4.8 // indirect - github.com/onsi/gomega v1.27.4 // indirect - github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.19.1 // indirect - github.com/prometheus/client_model v0.6.0 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/client_golang v1.20.3 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rakyll/statik v0.1.7 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/rs/cors v1.8.3 // indirect github.com/rs/zerolog v1.33.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect @@ -162,9 +176,8 @@ require ( github.com/spf13/cast v1.6.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/supranational/blst v0.3.11 // indirect + github.com/supranational/blst v0.3.13 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/tidwall/btree v1.5.0 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect @@ -172,35 +185,35 @@ require ( github.com/ulikunitz/xz v0.5.10 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.6 // indirect + go.etcd.io/bbolt v1.3.11 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect - go.opentelemetry.io/otel v1.26.0 // indirect + go.opentelemetry.io/otel v1.30.0 // indirect go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 // indirect - go.opentelemetry.io/otel/metric v1.26.0 // indirect - go.opentelemetry.io/otel/sdk v1.26.0 // indirect - go.opentelemetry.io/otel/trace v1.26.0 // indirect + go.opentelemetry.io/otel/metric v1.30.0 // indirect + go.opentelemetry.io/otel/sdk v1.30.0 // indirect + go.opentelemetry.io/otel/trace v1.30.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/exp v0.0.0-20240213143201-ec583247a57a // indirect - golang.org/x/net v0.26.0 // indirect - golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.21.0 // indirect - golang.org/x/term v0.21.0 // indirect - golang.org/x/text v0.16.0 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect - google.golang.org/grpc v1.65.0 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.6 // indirect + nhooyr.io/websocket v1.8.17 // indirect rsc.io/tmplfunc v0.0.3 // indirect sigs.k8s.io/yaml v1.4.0 // indirect ) @@ -212,13 +225,12 @@ replace ( github.com/celestiaorg/celestia-app/v2 => ../../celestia-app-v2 // replace celestia-app v3 with a local copy so that we can modify it's modules.go github.com/celestiaorg/celestia-app/v3 => ../ - github.com/celestiaorg/celestia-app/v3/x/signal => ../x/signal // replace cosmos-sdk with a local copy that exposes config.IsSealed(). - github.com/cosmos/cosmos-sdk => ../../cosmos-sdk + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35 ) diff --git a/node/go.sum b/node/go.sum index 06b7ac2a39..b5d25f5ef3 100644 --- a/node/go.sum +++ b/node/go.sum @@ -71,8 +71,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -275,8 +275,8 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1U github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= -github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= +github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= @@ -285,8 +285,8 @@ github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= -github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= @@ -304,32 +304,34 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bufbuild/protocompile v0.5.1 h1:mixz5lJX4Hiz4FpqFREJHIXLfaLBntfaJv1h+/jS+Qg= -github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw= github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= -github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29 h1:9Co/2peu4+9S6KMVNPFS0NTI/RYIRirNpM4N7dmi9ak= -github.com/celestiaorg/celestia-core v1.39.0-tm-v0.34.29/go.mod h1:5jJ5magtH7gQOwSYfS/m5fliIS7irKunLV7kLNaD8o0= -github.com/celestiaorg/go-square v1.1.0 h1:K4tBL5PCJwDtpBfyDxxZ3N962aC9VYb5/bw3LjagEtY= -github.com/celestiaorg/go-square v1.1.0/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= +github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35 h1:L4GTm+JUXhB0a/nGPMq6jEqqe6THuYSQ8m2kUCtZYqw= +github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35/go.mod h1:bFr0lAGwaJ0mOHSBmib5/ca5pbBf1yKWGPs93Td0HPw= +github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 h1:f+fTe7GGk0/qgdzyqB8kk8EcDf9d6MC22khBTQiDXsU= +github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16/go.mod h1:07Z8HJqS8Rw4XlZ+ok3D3NM/X/in8mvcGLvl0Zb5wrA= +github.com/celestiaorg/go-square v1.1.1 h1:Cy3p8WVspVcyOqHM8BWFuuYPwMitO1pYGe+ImILFZRA= +github.com/celestiaorg/go-square v1.1.1/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076/go.mod h1:hlidgivKyvv7m4Yl2Fdf2mSTmazZYxX8+bnr5IQrI98= -github.com/celestiaorg/go-square/v2 v2.0.0-rc2 h1:4D+ASgZGYVCsffc2uhPagACrvNiLZu9/CqNYvnlHCgg= -github.com/celestiaorg/go-square/v2 v2.0.0-rc2/go.mod h1:eeaU8f8jBpk3ZS/gaDZIlTesJR2F51QAmveNzWH6aEU= +github.com/celestiaorg/go-square/v2 v2.0.0 h1:U5QV8/de5lc7glosfgyHhcxbFwNuwU4+6aYZ2RgjM04= +github.com/celestiaorg/go-square/v2 v2.0.0/go.mod h1:y0BolG0tRM7UN1sAQyDDUkT+aMJPwFIjviVvnCB62C0= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4 h1:CJdIpo8n5MFP2MwK0gSRcOVlDlFdQJO1p+FqdxYzmvc= github.com/celestiaorg/merkletree v0.0.0-20210714075610-a84dc3ddbbe4/go.mod h1:fzuHnhzj1pUygGz+1ZkB3uQbEUL4htqCGJ4Qs2LwMZA= -github.com/celestiaorg/nmt v0.22.1 h1:t7fqoP5MJ8mBns5DB2XjfcPxQpS3CKMkY+v+BEkDxYc= -github.com/celestiaorg/nmt v0.22.1/go.mod h1:ia/EpCk0enD5yO5frcxoNoFToz2Ghtk2i+blmCRjIY8= +github.com/celestiaorg/nmt v0.22.2 h1:JmOMtZL9zWAed1hiwb9DDs+ELcKp/ZQZ3rPverge/V8= +github.com/celestiaorg/nmt v0.22.2/go.mod h1:/7huDiSRL/d2EGhoiKctgSzmLOJoWG8yEfbFtY1+Mow= github.com/celestiaorg/rsmt2d v0.14.0 h1:L7XJ3tRJDY8sQcvCjzHq0L7JmsmaSD+VItymIYFLqYc= github.com/celestiaorg/rsmt2d v0.14.0/go.mod h1:4kxqiTdFev49sGiKXTDjohbWYOG5GlcIfftTgaBJnpc= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -365,14 +367,16 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= -github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= @@ -381,8 +385,8 @@ github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= -github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= -github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE= +github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= @@ -393,8 +397,8 @@ github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1 github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= +github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -408,8 +412,8 @@ github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRAp github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/gogoproto v1.5.0 h1:SDVwzEqZDDBoslaeZg+dGE55hdzHfgUA40pEanMh52o= -github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= @@ -457,10 +461,12 @@ github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/badger/v4 v4.3.0 h1:lcsCE1/1qrRhqP+zYx6xDZb8n7U+QlwNicpc676Ub40= +github.com/dgraph-io/badger/v4 v4.3.0/go.mod h1:Sc0T595g8zqAQRDf44n+z3wG4BOqLwceaFntt8KPxUM= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= -github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 h1:Pux6+xANi0I7RRo5E1gflI4EZ2yx3BGZ75JkAIvGEOA= +github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91/go.mod h1:swkazRqnUf1N62d0Nutz7KIj2UKqsm/H8tD0nBJAXqM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= @@ -502,10 +508,10 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= -github.com/ethereum/go-ethereum v1.14.7 h1:EHpv3dE8evQmpVEQ/Ne2ahB06n2mQptdwqaMNhAT29g= -github.com/ethereum/go-ethereum v1.14.7/go.mod h1:Mq0biU2jbdmKSZoqOj29017ygFrMnB5/Rifwp980W4o= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= -github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= +github.com/ethereum/go-ethereum v1.14.11 h1:8nFDCUUE67rPc6AKxFj7JKaOa2W/W1Rse3oS6LvvxEY= +github.com/ethereum/go-ethereum v1.14.11/go.mod h1:+l/fr42Mma+xBnhefL/+z11/hcmJ2egl+ScIVPjhc7E= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9 h1:8NfxH2iXvJ60YRB8ChToFTUzl8awsc3cJ8CbLjGIl/A= +github.com/ethereum/go-verkle v0.1.1-0.20240829091221-dffa7562dbe9/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= @@ -517,8 +523,6 @@ github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYF github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= -github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= @@ -537,14 +541,13 @@ github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.0 h1:jGB9xAJQ12AIGNB4HguylppmDK1Am9ppF7XnGXXJuoU= -github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -562,8 +565,8 @@ github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= @@ -573,22 +576,15 @@ github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.11.2 h1:q3SHpufmypg+erIExEKUmsgmhDTyhcJ38oeKGACXohU= -github.com/go-playground/validator/v10 v10.11.2/go.mod h1:NieE624vt4SCTJtD87arVLvdmjPAeV8BQlHtMnw9D7s= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= @@ -605,8 +601,6 @@ github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -651,9 +645,11 @@ github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= -github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -739,14 +735,14 @@ github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWS github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= -github.com/grafana/pyroscope-go v1.1.1 h1:PQoUU9oWtO3ve/fgIiklYuGilvsm8qaGhlY4Vw6MAcQ= -github.com/grafana/pyroscope-go v1.1.1/go.mod h1:Mw26jU7jsL/KStNSGGuuVYdUq7Qghem5P8aXYXSXG88= -github.com/grafana/pyroscope-go/godeltaprof v0.1.6 h1:nEdZ8louGAplSvIJi1HVp7kWvFvdiiYg3COLlTwJiFo= -github.com/grafana/pyroscope-go/godeltaprof v0.1.6/go.mod h1:Tk376Nbldo4Cha9RgiU7ik8WKFkNpfds98aUzS8omLE= +github.com/grafana/pyroscope-go v1.1.2 h1:7vCfdORYQMCxIzI3NlYAs3FcBP760+gWuYWOyiVyYx8= +github.com/grafana/pyroscope-go v1.1.2/go.mod h1:HSSmHo2KRn6FasBA4vK7BMiQqyQq8KSuBKvrhkXxYPU= +github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= +github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= @@ -811,8 +807,8 @@ github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8 github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= -github.com/holiman/uint256 v1.3.0 h1:4wdcm/tnd0xXdu7iS3ruNvxkWwrb4aeBQv19ayYn8F4= -github.com/holiman/uint256 v1.3.0/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= @@ -862,8 +858,6 @@ github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= @@ -881,12 +875,11 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.3/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= -github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= -github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= -github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM= +github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/klauspost/reedsolomon v1.12.1 h1:NhWgum1efX1x58daOBGCFWcxtEhOhXKKl1HAPQUp03Q= @@ -908,15 +901,16 @@ github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4F github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= +github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -957,8 +951,8 @@ github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3N github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= -github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -980,16 +974,15 @@ github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iP github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -1024,13 +1017,13 @@ github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5 github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= -github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= @@ -1051,8 +1044,8 @@ github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144T github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= -github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= @@ -1063,6 +1056,9 @@ github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -1079,16 +1075,16 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= -github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= +github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= -github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -1097,16 +1093,16 @@ github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt2 github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= @@ -1124,8 +1120,9 @@ github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRr github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rootulp/cosmos-sdk/errors v1.4.0 h1:JWU+WRfL+fDPuNzCAfdcr89DLSnB1jDef8CPOS5opn0= github.com/rootulp/cosmos-sdk/errors v1.4.0/go.mod h1:ZQBrhEyjHm/xvyGUczhkBaF9i2zvVdqxMpxQiNdHS14= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= @@ -1216,12 +1213,10 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= -github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/supranational/blst v0.3.13 h1:AYeSxdOMacwu7FBmpfloBz5pbFXDmJL33RuwnKtmTjk= +github.com/supranational/blst v0.3.13/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= -github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= @@ -1230,8 +1225,8 @@ github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= -github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -1253,12 +1248,9 @@ github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:s github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ugorji/go/codec v1.2.9 h1:rmenucSohSTiyL09Y+l2OCk+FrMxGMzho2+tjr5ticU= -github.com/ugorji/go/codec v1.2.9/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -1295,8 +1287,8 @@ gitlab.com/NebulousLabs/errors v0.0.0-20200929122200-06c536cf6975/go.mod h1:ZkMZ gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40 h1:dizWJqTWjwyD8KGcMOwgrkqu1JIkofYgKkmDeNE7oAs= gitlab.com/NebulousLabs/fastrand v0.0.0-20181126182046-603482d69e40/go.mod h1:rOnSnoRyxMI3fe/7KIbVcsHRGxe30OONv8dEgo+vCfA= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= +go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= +go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1314,19 +1306,19 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.4 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= -go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= +go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= +go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= -go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= +go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.26.0 h1:Y7bumHf5tAiDlRYFmGqetNcLaVUZmh4iYfmGxtmz7F8= -go.opentelemetry.io/otel/sdk v1.26.0/go.mod h1:0p8MXpqLeJ0pzcszQQN4F0S5FVjBLgypeGSngLsmirs= +go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= +go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= -go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= +go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -1363,8 +1355,8 @@ golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1379,8 +1371,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE= -golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1472,8 +1464,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1499,8 +1491,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= -golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1515,8 +1507,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1526,7 +1518,6 @@ golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1572,7 +1563,6 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1619,7 +1609,6 @@ golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1627,14 +1616,15 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= -golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1645,8 +1635,8 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1905,8 +1895,8 @@ google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUE google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -1949,8 +1939,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1967,8 +1957,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2016,8 +2006,9 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= +nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/node/utils/start_node.go b/node/utils/start_node.go index cbcc26bc82..3bcb8b8174 100644 --- a/node/utils/start_node.go +++ b/node/utils/start_node.go @@ -5,7 +5,6 @@ import ( "github.com/celestiaorg/celestia-app/v3/test/util/genesis" "github.com/celestiaorg/celestia-app/v3/test/util/testnode" - "github.com/cosmos/cosmos-sdk/client/flags" "github.com/tendermint/tendermint/node" "github.com/tendermint/tendermint/p2p" "github.com/tendermint/tendermint/privval" @@ -14,11 +13,10 @@ import ( ) func StartNode(ctx context.Context, config *testnode.Config, multiplexer *Multiplexer) (cctx testnode.Context, cleanup func() error, err error) { - basePath, err := genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.Genesis, 0) + err = genesis.InitFiles(config.TmConfig.RootDir, config.TmConfig, config.AppConfig, config.Genesis, 0) if err != nil { return testnode.Context{}, nil, err } - config.AppOptions.Set(flags.FlagHome, basePath) cometNode, cleanupComet, err := newCometNode(config, multiplexer) if err != nil { From 3eb9d88354009ba933643818fe27df0a0c87738e Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 22 Oct 2024 11:00:20 -0400 Subject: [PATCH 136/140] refactor: rename node to multiplexer --- .gitignore | 2 +- Makefile | 20 +++++++++++-------- {node => multiplexer}/cmd/root.go | 2 +- {node => multiplexer}/go.mod | 2 +- {node => multiplexer}/go.sum | 0 multiplexer/main.go | 7 +++++++ {node => multiplexer}/utils/apps.go | 0 {node => multiplexer}/utils/config.go | 0 {node => multiplexer}/utils/interface.go | 0 {node => multiplexer}/utils/logger.go | 0 {node => multiplexer}/utils/multiplexer.go | 0 .../utils/noop_app_options.go | 0 {node => multiplexer}/utils/noop_writer.go | 0 {node => multiplexer}/utils/start_node.go | 0 .../utils/start_node_test.go | 2 +- node/main.go | 7 ------- 16 files changed, 23 insertions(+), 19 deletions(-) rename {node => multiplexer}/cmd/root.go (97%) rename {node => multiplexer}/go.mod (99%) rename {node => multiplexer}/go.sum (100%) create mode 100644 multiplexer/main.go rename {node => multiplexer}/utils/apps.go (100%) rename {node => multiplexer}/utils/config.go (100%) rename {node => multiplexer}/utils/interface.go (100%) rename {node => multiplexer}/utils/logger.go (100%) rename {node => multiplexer}/utils/multiplexer.go (100%) rename {node => multiplexer}/utils/noop_app_options.go (100%) rename {node => multiplexer}/utils/noop_writer.go (100%) rename {node => multiplexer}/utils/start_node.go (100%) rename {node => multiplexer}/utils/start_node_test.go (94%) delete mode 100644 node/main.go diff --git a/.gitignore b/.gitignore index 4af4b0af73..57eabfb2b5 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,4 @@ square/testdata vendor go.work go.work.sum -node/node +multiplexer/multiplexer diff --git a/Makefile b/Makefile index 9bd79ac302..687d4e5ad7 100644 --- a/Makefile +++ b/Makefile @@ -248,14 +248,6 @@ prebuilt-binary: release --clean .PHONY: prebuilt-binary -## build-node: Build the node binary. -build-node: - @echo "--> Building celestia-app/node and outputting binary to build/node" - @mkdir -p build/ - @cd ./node && go build -o ../build/node . - @go mod tidy -.PHONY: build-node - ## check-bbr: Check if your system uses BBR congestion control algorithm. Only works on Linux. check-bbr: @echo "Checking if BBR is enabled..." @@ -286,3 +278,15 @@ debug-version: @echo "GIT_TAG: $(GIT_TAG)" @echo "VERSION: $(VERSION)" .PHONY: debug-version + +## build-multiplexer: Build the multiplexer binary. +build-multiplexer: + @echo "--> Building celestia-app/multiplexer and outputting binary to build/multiplexer" + @mkdir -p build/ + @cd ./multiplexer && go build -o ../build/multiplexer . + @go mod tidy +.PHONY: build-multiplexer + +## Alias for build-multiplexer +multiplexer: build-multiplexer +.PHONY: multiplexer diff --git a/node/cmd/root.go b/multiplexer/cmd/root.go similarity index 97% rename from node/cmd/root.go rename to multiplexer/cmd/root.go index 9f245f05b1..4c3e902e32 100644 --- a/node/cmd/root.go +++ b/multiplexer/cmd/root.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/celestiaorg/celestia-app/node/utils" + "github.com/celestiaorg/celestia-app/multiplexer/utils" "github.com/spf13/cobra" "github.com/spf13/viper" "github.com/tendermint/tendermint/libs/log" diff --git a/node/go.mod b/multiplexer/go.mod similarity index 99% rename from node/go.mod rename to multiplexer/go.mod index 846a086a27..bb753df7ba 100644 --- a/node/go.mod +++ b/multiplexer/go.mod @@ -1,4 +1,4 @@ -module github.com/celestiaorg/celestia-app/node +module github.com/celestiaorg/celestia-app/multiplexer go 1.23.1 diff --git a/node/go.sum b/multiplexer/go.sum similarity index 100% rename from node/go.sum rename to multiplexer/go.sum diff --git a/multiplexer/main.go b/multiplexer/main.go new file mode 100644 index 0000000000..1d6e824da4 --- /dev/null +++ b/multiplexer/main.go @@ -0,0 +1,7 @@ +package main + +import "github.com/celestiaorg/celestia-app/multiplexer/cmd" + +func main() { + cmd.Execute() +} diff --git a/node/utils/apps.go b/multiplexer/utils/apps.go similarity index 100% rename from node/utils/apps.go rename to multiplexer/utils/apps.go diff --git a/node/utils/config.go b/multiplexer/utils/config.go similarity index 100% rename from node/utils/config.go rename to multiplexer/utils/config.go diff --git a/node/utils/interface.go b/multiplexer/utils/interface.go similarity index 100% rename from node/utils/interface.go rename to multiplexer/utils/interface.go diff --git a/node/utils/logger.go b/multiplexer/utils/logger.go similarity index 100% rename from node/utils/logger.go rename to multiplexer/utils/logger.go diff --git a/node/utils/multiplexer.go b/multiplexer/utils/multiplexer.go similarity index 100% rename from node/utils/multiplexer.go rename to multiplexer/utils/multiplexer.go diff --git a/node/utils/noop_app_options.go b/multiplexer/utils/noop_app_options.go similarity index 100% rename from node/utils/noop_app_options.go rename to multiplexer/utils/noop_app_options.go diff --git a/node/utils/noop_writer.go b/multiplexer/utils/noop_writer.go similarity index 100% rename from node/utils/noop_writer.go rename to multiplexer/utils/noop_writer.go diff --git a/node/utils/start_node.go b/multiplexer/utils/start_node.go similarity index 100% rename from node/utils/start_node.go rename to multiplexer/utils/start_node.go diff --git a/node/utils/start_node_test.go b/multiplexer/utils/start_node_test.go similarity index 94% rename from node/utils/start_node_test.go rename to multiplexer/utils/start_node_test.go index dabc28be22..7facc606f2 100644 --- a/node/utils/start_node_test.go +++ b/multiplexer/utils/start_node_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/celestiaorg/celestia-app/node/utils" + "github.com/celestiaorg/celestia-app/multiplexer/utils" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/libs/log" diff --git a/node/main.go b/node/main.go deleted file mode 100644 index 594064040a..0000000000 --- a/node/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "github.com/celestiaorg/celestia-app/node/cmd" - -func main() { - cmd.Execute() -} From bcb8b4f30417833ac7712b83dbeb36d030a23ed3 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 22 Oct 2024 11:52:35 -0400 Subject: [PATCH 137/140] run multiplexer too --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 687d4e5ad7..a0f59c5c81 100644 --- a/Makefile +++ b/Makefile @@ -284,7 +284,8 @@ build-multiplexer: @echo "--> Building celestia-app/multiplexer and outputting binary to build/multiplexer" @mkdir -p build/ @cd ./multiplexer && go build -o ../build/multiplexer . - @go mod tidy + @echo "--> Running multiplexer binary" + @./build/multiplexer .PHONY: build-multiplexer ## Alias for build-multiplexer From 6bbd3d06f262a9b30444acbd1720c788ba4ccff8 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 22 Oct 2024 11:53:12 -0400 Subject: [PATCH 138/140] debug: override multiplexer cosmos-sdk to local --- multiplexer/go.mod | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/multiplexer/go.mod b/multiplexer/go.mod index bb753df7ba..48620766b8 100644 --- a/multiplexer/go.mod +++ b/multiplexer/go.mod @@ -225,8 +225,8 @@ replace ( github.com/celestiaorg/celestia-app/v2 => ../../celestia-app-v2 // replace celestia-app v3 with a local copy so that we can modify it's modules.go github.com/celestiaorg/celestia-app/v3 => ../ - // replace cosmos-sdk with a local copy that exposes config.IsSealed(). - github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 + // replace cosmos-sdk with a local copy so that we can debug log. + github.com/cosmos/cosmos-sdk => ../../cosmos-sdk // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 From 913c676e8b1f23bb1bb964d75320e90727058c80 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 22 Oct 2024 11:55:20 -0400 Subject: [PATCH 139/140] revert: unneccesary changes --- proto/celestia/qgb/v1/genesis.proto | 18 +++ proto/celestia/qgb/v1/query.proto | 139 +++++++++++++++++ x/blobstream/types/genesis.pb.go | 20 +-- x/blobstream/types/query.pb.go | 232 ++++++++++++++-------------- x/blobstream/types/query.pb.gw.go | 2 +- 5 files changed, 284 insertions(+), 127 deletions(-) create mode 100644 proto/celestia/qgb/v1/genesis.proto create mode 100644 proto/celestia/qgb/v1/query.proto diff --git a/proto/celestia/qgb/v1/genesis.proto b/proto/celestia/qgb/v1/genesis.proto new file mode 100644 index 0000000000..f574d88e4b --- /dev/null +++ b/proto/celestia/qgb/v1/genesis.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; +package celestia.qgb.v1; + +import "gogoproto/gogo.proto"; +import "celestia/qgb/v1/types.proto"; + +option go_package = "github.com/celestiaorg/celestia-app/x/blobstream/types"; + +// Params represent Blobstream genesis and store parameters. +message Params { + option (gogoproto.stringer) = false; + + uint64 data_commitment_window = 1; +} + +// GenesisState struct, containing all persistent data required by Blobstream +// module +message GenesisState { Params params = 1; } diff --git a/proto/celestia/qgb/v1/query.proto b/proto/celestia/qgb/v1/query.proto new file mode 100644 index 0000000000..83cc445136 --- /dev/null +++ b/proto/celestia/qgb/v1/query.proto @@ -0,0 +1,139 @@ +syntax = "proto3"; +package celestia.qgb.v1; + +import "celestia/qgb/v1/genesis.proto"; +import "celestia/qgb/v1/types.proto"; +import "google/api/annotations.proto"; +import "gogoproto/gogo.proto"; +import "cosmos_proto/cosmos.proto"; +import "google/protobuf/any.proto"; + +option go_package = "github.com/celestiaorg/celestia-app/x/blobstream/types"; + +// Query defines the gRPC querier service. +service Query { + // Params queries the current parameters for the blobstream module + rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { + option (google.api.http).get = "/qgb/v1/params"; + } + + // queries for attestations requests waiting to be signed by an orchestrator + + // AttestationRequestByNonce queries attestation request by nonce. + // Returns nil if not found. + rpc AttestationRequestByNonce(QueryAttestationRequestByNonceRequest) + returns (QueryAttestationRequestByNonceResponse) { + option (google.api.http).get = "/qgb/v1/attestations/requests/{nonce}"; + } + // LatestAttestationNonce queries latest attestation nonce. + rpc LatestAttestationNonce(QueryLatestAttestationNonceRequest) + returns (QueryLatestAttestationNonceResponse) { + option (google.api.http).get = "/qgb/v1/attestations/nonce/latest"; + } + // EarliestAttestationNonce queries the earliest attestation nonce. + rpc EarliestAttestationNonce(QueryEarliestAttestationNonceRequest) + returns (QueryEarliestAttestationNonceResponse) { + option (google.api.http).get = "/qgb/v1/attestations/nonce/earliest"; + } + // LatestValsetRequestBeforeNonce Queries latest Valset request before nonce. + // And, even if the current nonce is a valset, it will return the previous + // one. + // If the provided nonce is 1, it will return an error, because, there is + // no valset before nonce 1. + rpc LatestValsetRequestBeforeNonce(QueryLatestValsetRequestBeforeNonceRequest) + returns (QueryLatestValsetRequestBeforeNonceResponse) { + option (google.api.http).get = "/qgb/v1/valset/request/before/{nonce}"; + } + + // misc + + // LatestUnbondingHeight returns the latest unbonding height + rpc LatestUnbondingHeight(QueryLatestUnbondingHeightRequest) + returns (QueryLatestUnbondingHeightResponse) { + option (google.api.http).get = "/qgb/v1/unbonding"; + } + + // DataCommitmentRangeForHeight returns the data commitment window + // that includes the provided height + rpc DataCommitmentRangeForHeight(QueryDataCommitmentRangeForHeightRequest) + returns (QueryDataCommitmentRangeForHeightResponse) { + option (google.api.http).get = "/qgb/v1/data_commitment/range/height"; + } + + // LatestDataCommitment returns the latest data commitment in store + rpc LatestDataCommitment(QueryLatestDataCommitmentRequest) + returns (QueryLatestDataCommitmentResponse) { + option (google.api.http).get = "/qgb/v1/data_commitment/latest"; + } + + // EVMAddress returns the evm address associated with a supplied + // validator address + rpc EVMAddress(QueryEVMAddressRequest) returns (QueryEVMAddressResponse) { + option (google.api.http).get = "/qgb/v1/evm_address"; + } +} + +// QueryParamsRequest +message QueryParamsRequest {} +// QueryParamsResponse +message QueryParamsResponse { + Params params = 1 [ (gogoproto.nullable) = false ]; +} + +// QueryAttestationRequestByNonceRequest +message QueryAttestationRequestByNonceRequest { uint64 nonce = 1; } + +// QueryAttestationRequestByNonceResponse +message QueryAttestationRequestByNonceResponse { + // AttestationRequestI is either a Data Commitment or a Valset. + // This was decided as part of the universal nonce approach under: + // https://github.com/celestiaorg/celestia-app/issues/468#issuecomment-1156887715 + google.protobuf.Any attestation = 1 + [ (cosmos_proto.accepts_interface) = "AttestationRequestI" ]; +} + +// QueryLatestAttestationNonceRequest latest attestation nonce request +message QueryLatestAttestationNonceRequest {} +// QueryLatestAttestationNonceResponse latest attestation nonce response +message QueryLatestAttestationNonceResponse { uint64 nonce = 1; } + +// QueryEarliestAttestationNonceRequest earliest attestation nonce request +message QueryEarliestAttestationNonceRequest {} +// QueryEarliestAttestationNonceResponse earliest attestation nonce response +message QueryEarliestAttestationNonceResponse { uint64 nonce = 1; } + +// QueryLatestValsetRequestBeforeNonceRequest latest Valset request before +// universal nonce request +message QueryLatestValsetRequestBeforeNonceRequest { uint64 nonce = 1; } + +// QueryLatestValsetRequestBeforeNonceResponse latest Valset request before +// height response +message QueryLatestValsetRequestBeforeNonceResponse { Valset valset = 1; } + +// QueryLatestUnbondingHeightRequest +message QueryLatestUnbondingHeightRequest {} + +// QueryLatestUnbondingHeightResponse +message QueryLatestUnbondingHeightResponse { uint64 height = 1; } + +// QueryLatestDataCommitmentRequest +message QueryLatestDataCommitmentRequest {} + +// QueryLatestDataCommitmentResponse +message QueryLatestDataCommitmentResponse { + DataCommitment data_commitment = 1; +} + +// QueryDataCommitmentRangeForHeightRequest +message QueryDataCommitmentRangeForHeightRequest { uint64 height = 1; } + +// QueryDataCommitmentRangeForHeightResponse +message QueryDataCommitmentRangeForHeightResponse { + DataCommitment data_commitment = 1; +} + +// QueryEVMAddressRequest +message QueryEVMAddressRequest { string validator_address = 1; } + +// QueryEVMAddressResponse +message QueryEVMAddressResponse { string evm_address = 1; } diff --git a/x/blobstream/types/genesis.pb.go b/x/blobstream/types/genesis.pb.go index c5f253549c..58d29c7ccd 100644 --- a/x/blobstream/types/genesis.pb.go +++ b/x/blobstream/types/genesis.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v2/genesis.proto +// source: celestia/qgb/v1/genesis.proto package types @@ -32,7 +32,7 @@ func (m *Params) Reset() { *m = Params{} } func (m *Params) String() string { return proto.CompactTextString(m) } func (*Params) ProtoMessage() {} func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_d9217dacf3ba42e2, []int{0} + return fileDescriptor_10da5f8e88ce2856, []int{0} } func (m *Params) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -78,7 +78,7 @@ func (m *GenesisState) Reset() { *m = GenesisState{} } func (m *GenesisState) String() string { return proto.CompactTextString(m) } func (*GenesisState) ProtoMessage() {} func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_d9217dacf3ba42e2, []int{1} + return fileDescriptor_10da5f8e88ce2856, []int{1} } func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -115,18 +115,18 @@ func (m *GenesisState) GetParams() *Params { } func init() { - proto.RegisterType((*Params)(nil), "celestia.qgb.v2.Params") - proto.RegisterType((*GenesisState)(nil), "celestia.qgb.v2.GenesisState") + proto.RegisterType((*Params)(nil), "celestia.qgb.v1.Params") + proto.RegisterType((*GenesisState)(nil), "celestia.qgb.v1.GenesisState") } -func init() { proto.RegisterFile("celestia/qgb/v2/genesis.proto", fileDescriptor_d9217dacf3ba42e2) } +func init() { proto.RegisterFile("celestia/qgb/v1/genesis.proto", fileDescriptor_10da5f8e88ce2856) } -var fileDescriptor_d9217dacf3ba42e2 = []byte{ +var fileDescriptor_10da5f8e88ce2856 = []byte{ // 252 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4d, 0x4e, 0xcd, 0x49, - 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0x4c, 0x4f, 0xd2, 0x2f, 0x33, 0xd2, 0x4f, 0x4f, 0xcd, 0x4b, + 0x2d, 0x2e, 0xc9, 0x4c, 0xd4, 0x2f, 0x4c, 0x4f, 0xd2, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x87, 0x49, 0xeb, 0x15, 0xa6, - 0x27, 0xe9, 0x95, 0x19, 0x49, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0xe5, 0xf4, 0x41, 0x2c, 0x88, + 0x27, 0xe9, 0x95, 0x19, 0x4a, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0xe5, 0xf4, 0x41, 0x2c, 0x88, 0x32, 0x29, 0x69, 0x74, 0x53, 0x4a, 0x2a, 0x0b, 0x52, 0xa1, 0x66, 0x28, 0xb9, 0x70, 0xb1, 0x05, 0x24, 0x16, 0x25, 0xe6, 0x16, 0x0b, 0x99, 0x70, 0x89, 0xa5, 0x24, 0x96, 0x24, 0xc6, 0x27, 0xe7, 0xe7, 0xe6, 0x66, 0x96, 0xe4, 0xa6, 0xe6, 0x95, 0xc4, 0x97, 0x67, 0xe6, 0xa5, 0xe4, 0x97, 0x4b, @@ -138,7 +138,7 @@ var fileDescriptor_d9217dacf3ba42e2 = []byte{ 0x96, 0x63, 0x88, 0x32, 0x4b, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x87, 0x19, 0x92, 0x5f, 0x94, 0x0e, 0x67, 0xeb, 0x26, 0x16, 0x14, 0xe8, 0x57, 0xe8, 0x27, 0xe5, 0xe4, 0x27, 0x15, 0x97, 0x14, 0xa5, 0x26, 0xe6, 0x42, 0xbc, 0x97, 0xc4, 0x06, 0xf6, 0x9f, 0x31, 0x20, - 0x00, 0x00, 0xff, 0xff, 0x70, 0x4f, 0xc0, 0x81, 0x44, 0x01, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x11, 0x19, 0x03, 0x69, 0x44, 0x01, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { diff --git a/x/blobstream/types/query.pb.go b/x/blobstream/types/query.pb.go index b43f0b8b0d..eb235ff5af 100644 --- a/x/blobstream/types/query.pb.go +++ b/x/blobstream/types/query.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: celestia/qgb/v2/query.proto +// source: celestia/qgb/v1/query.proto package types @@ -39,7 +39,7 @@ func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } func (*QueryParamsRequest) ProtoMessage() {} func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{0} + return fileDescriptor_c8535c57355a2b91, []int{0} } func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -77,7 +77,7 @@ func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } func (*QueryParamsResponse) ProtoMessage() {} func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{1} + return fileDescriptor_c8535c57355a2b91, []int{1} } func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -122,7 +122,7 @@ func (m *QueryAttestationRequestByNonceRequest) Reset() { *m = QueryAtte func (m *QueryAttestationRequestByNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryAttestationRequestByNonceRequest) ProtoMessage() {} func (*QueryAttestationRequestByNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{2} + return fileDescriptor_c8535c57355a2b91, []int{2} } func (m *QueryAttestationRequestByNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -172,7 +172,7 @@ func (m *QueryAttestationRequestByNonceResponse) Reset() { func (m *QueryAttestationRequestByNonceResponse) String() string { return proto.CompactTextString(m) } func (*QueryAttestationRequestByNonceResponse) ProtoMessage() {} func (*QueryAttestationRequestByNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{3} + return fileDescriptor_c8535c57355a2b91, []int{3} } func (m *QueryAttestationRequestByNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -216,7 +216,7 @@ func (m *QueryLatestAttestationNonceRequest) Reset() { *m = QueryLatestA func (m *QueryLatestAttestationNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryLatestAttestationNonceRequest) ProtoMessage() {} func (*QueryLatestAttestationNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{4} + return fileDescriptor_c8535c57355a2b91, []int{4} } func (m *QueryLatestAttestationNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -254,7 +254,7 @@ func (m *QueryLatestAttestationNonceResponse) Reset() { *m = QueryLatest func (m *QueryLatestAttestationNonceResponse) String() string { return proto.CompactTextString(m) } func (*QueryLatestAttestationNonceResponse) ProtoMessage() {} func (*QueryLatestAttestationNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{5} + return fileDescriptor_c8535c57355a2b91, []int{5} } func (m *QueryLatestAttestationNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -298,7 +298,7 @@ func (m *QueryEarliestAttestationNonceRequest) Reset() { *m = QueryEarli func (m *QueryEarliestAttestationNonceRequest) String() string { return proto.CompactTextString(m) } func (*QueryEarliestAttestationNonceRequest) ProtoMessage() {} func (*QueryEarliestAttestationNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{6} + return fileDescriptor_c8535c57355a2b91, []int{6} } func (m *QueryEarliestAttestationNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -336,7 +336,7 @@ func (m *QueryEarliestAttestationNonceResponse) Reset() { *m = QueryEarl func (m *QueryEarliestAttestationNonceResponse) String() string { return proto.CompactTextString(m) } func (*QueryEarliestAttestationNonceResponse) ProtoMessage() {} func (*QueryEarliestAttestationNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{7} + return fileDescriptor_c8535c57355a2b91, []int{7} } func (m *QueryEarliestAttestationNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -386,7 +386,7 @@ func (m *QueryLatestValsetRequestBeforeNonceRequest) String() string { } func (*QueryLatestValsetRequestBeforeNonceRequest) ProtoMessage() {} func (*QueryLatestValsetRequestBeforeNonceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{8} + return fileDescriptor_c8535c57355a2b91, []int{8} } func (m *QueryLatestValsetRequestBeforeNonceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -436,7 +436,7 @@ func (m *QueryLatestValsetRequestBeforeNonceResponse) String() string { } func (*QueryLatestValsetRequestBeforeNonceResponse) ProtoMessage() {} func (*QueryLatestValsetRequestBeforeNonceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{9} + return fileDescriptor_c8535c57355a2b91, []int{9} } func (m *QueryLatestValsetRequestBeforeNonceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -480,7 +480,7 @@ func (m *QueryLatestUnbondingHeightRequest) Reset() { *m = QueryLatestUn func (m *QueryLatestUnbondingHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryLatestUnbondingHeightRequest) ProtoMessage() {} func (*QueryLatestUnbondingHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{10} + return fileDescriptor_c8535c57355a2b91, []int{10} } func (m *QueryLatestUnbondingHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -518,7 +518,7 @@ func (m *QueryLatestUnbondingHeightResponse) Reset() { *m = QueryLatestU func (m *QueryLatestUnbondingHeightResponse) String() string { return proto.CompactTextString(m) } func (*QueryLatestUnbondingHeightResponse) ProtoMessage() {} func (*QueryLatestUnbondingHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{11} + return fileDescriptor_c8535c57355a2b91, []int{11} } func (m *QueryLatestUnbondingHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -562,7 +562,7 @@ func (m *QueryLatestDataCommitmentRequest) Reset() { *m = QueryLatestDat func (m *QueryLatestDataCommitmentRequest) String() string { return proto.CompactTextString(m) } func (*QueryLatestDataCommitmentRequest) ProtoMessage() {} func (*QueryLatestDataCommitmentRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{12} + return fileDescriptor_c8535c57355a2b91, []int{12} } func (m *QueryLatestDataCommitmentRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -600,7 +600,7 @@ func (m *QueryLatestDataCommitmentResponse) Reset() { *m = QueryLatestDa func (m *QueryLatestDataCommitmentResponse) String() string { return proto.CompactTextString(m) } func (*QueryLatestDataCommitmentResponse) ProtoMessage() {} func (*QueryLatestDataCommitmentResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{13} + return fileDescriptor_c8535c57355a2b91, []int{13} } func (m *QueryLatestDataCommitmentResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -647,7 +647,7 @@ func (m *QueryDataCommitmentRangeForHeightRequest) Reset() { func (m *QueryDataCommitmentRangeForHeightRequest) String() string { return proto.CompactTextString(m) } func (*QueryDataCommitmentRangeForHeightRequest) ProtoMessage() {} func (*QueryDataCommitmentRangeForHeightRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{14} + return fileDescriptor_c8535c57355a2b91, []int{14} } func (m *QueryDataCommitmentRangeForHeightRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -696,7 +696,7 @@ func (m *QueryDataCommitmentRangeForHeightResponse) String() string { } func (*QueryDataCommitmentRangeForHeightResponse) ProtoMessage() {} func (*QueryDataCommitmentRangeForHeightResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{15} + return fileDescriptor_c8535c57355a2b91, []int{15} } func (m *QueryDataCommitmentRangeForHeightResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -741,7 +741,7 @@ func (m *QueryEVMAddressRequest) Reset() { *m = QueryEVMAddressRequest{} func (m *QueryEVMAddressRequest) String() string { return proto.CompactTextString(m) } func (*QueryEVMAddressRequest) ProtoMessage() {} func (*QueryEVMAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{16} + return fileDescriptor_c8535c57355a2b91, []int{16} } func (m *QueryEVMAddressRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -786,7 +786,7 @@ func (m *QueryEVMAddressResponse) Reset() { *m = QueryEVMAddressResponse func (m *QueryEVMAddressResponse) String() string { return proto.CompactTextString(m) } func (*QueryEVMAddressResponse) ProtoMessage() {} func (*QueryEVMAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_da621d813d100cdc, []int{17} + return fileDescriptor_c8535c57355a2b91, []int{17} } func (m *QueryEVMAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -823,87 +823,87 @@ func (m *QueryEVMAddressResponse) GetEvmAddress() string { } func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "celestia.qgb.v2.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "celestia.qgb.v2.QueryParamsResponse") - proto.RegisterType((*QueryAttestationRequestByNonceRequest)(nil), "celestia.qgb.v2.QueryAttestationRequestByNonceRequest") - proto.RegisterType((*QueryAttestationRequestByNonceResponse)(nil), "celestia.qgb.v2.QueryAttestationRequestByNonceResponse") - proto.RegisterType((*QueryLatestAttestationNonceRequest)(nil), "celestia.qgb.v2.QueryLatestAttestationNonceRequest") - proto.RegisterType((*QueryLatestAttestationNonceResponse)(nil), "celestia.qgb.v2.QueryLatestAttestationNonceResponse") - proto.RegisterType((*QueryEarliestAttestationNonceRequest)(nil), "celestia.qgb.v2.QueryEarliestAttestationNonceRequest") - proto.RegisterType((*QueryEarliestAttestationNonceResponse)(nil), "celestia.qgb.v2.QueryEarliestAttestationNonceResponse") - proto.RegisterType((*QueryLatestValsetRequestBeforeNonceRequest)(nil), "celestia.qgb.v2.QueryLatestValsetRequestBeforeNonceRequest") - proto.RegisterType((*QueryLatestValsetRequestBeforeNonceResponse)(nil), "celestia.qgb.v2.QueryLatestValsetRequestBeforeNonceResponse") - proto.RegisterType((*QueryLatestUnbondingHeightRequest)(nil), "celestia.qgb.v2.QueryLatestUnbondingHeightRequest") - proto.RegisterType((*QueryLatestUnbondingHeightResponse)(nil), "celestia.qgb.v2.QueryLatestUnbondingHeightResponse") - proto.RegisterType((*QueryLatestDataCommitmentRequest)(nil), "celestia.qgb.v2.QueryLatestDataCommitmentRequest") - proto.RegisterType((*QueryLatestDataCommitmentResponse)(nil), "celestia.qgb.v2.QueryLatestDataCommitmentResponse") - proto.RegisterType((*QueryDataCommitmentRangeForHeightRequest)(nil), "celestia.qgb.v2.QueryDataCommitmentRangeForHeightRequest") - proto.RegisterType((*QueryDataCommitmentRangeForHeightResponse)(nil), "celestia.qgb.v2.QueryDataCommitmentRangeForHeightResponse") - proto.RegisterType((*QueryEVMAddressRequest)(nil), "celestia.qgb.v2.QueryEVMAddressRequest") - proto.RegisterType((*QueryEVMAddressResponse)(nil), "celestia.qgb.v2.QueryEVMAddressResponse") -} - -func init() { proto.RegisterFile("celestia/qgb/v2/query.proto", fileDescriptor_da621d813d100cdc) } - -var fileDescriptor_da621d813d100cdc = []byte{ - // 911 bytes of a gzipped FileDescriptorProto + proto.RegisterType((*QueryParamsRequest)(nil), "celestia.qgb.v1.QueryParamsRequest") + proto.RegisterType((*QueryParamsResponse)(nil), "celestia.qgb.v1.QueryParamsResponse") + proto.RegisterType((*QueryAttestationRequestByNonceRequest)(nil), "celestia.qgb.v1.QueryAttestationRequestByNonceRequest") + proto.RegisterType((*QueryAttestationRequestByNonceResponse)(nil), "celestia.qgb.v1.QueryAttestationRequestByNonceResponse") + proto.RegisterType((*QueryLatestAttestationNonceRequest)(nil), "celestia.qgb.v1.QueryLatestAttestationNonceRequest") + proto.RegisterType((*QueryLatestAttestationNonceResponse)(nil), "celestia.qgb.v1.QueryLatestAttestationNonceResponse") + proto.RegisterType((*QueryEarliestAttestationNonceRequest)(nil), "celestia.qgb.v1.QueryEarliestAttestationNonceRequest") + proto.RegisterType((*QueryEarliestAttestationNonceResponse)(nil), "celestia.qgb.v1.QueryEarliestAttestationNonceResponse") + proto.RegisterType((*QueryLatestValsetRequestBeforeNonceRequest)(nil), "celestia.qgb.v1.QueryLatestValsetRequestBeforeNonceRequest") + proto.RegisterType((*QueryLatestValsetRequestBeforeNonceResponse)(nil), "celestia.qgb.v1.QueryLatestValsetRequestBeforeNonceResponse") + proto.RegisterType((*QueryLatestUnbondingHeightRequest)(nil), "celestia.qgb.v1.QueryLatestUnbondingHeightRequest") + proto.RegisterType((*QueryLatestUnbondingHeightResponse)(nil), "celestia.qgb.v1.QueryLatestUnbondingHeightResponse") + proto.RegisterType((*QueryLatestDataCommitmentRequest)(nil), "celestia.qgb.v1.QueryLatestDataCommitmentRequest") + proto.RegisterType((*QueryLatestDataCommitmentResponse)(nil), "celestia.qgb.v1.QueryLatestDataCommitmentResponse") + proto.RegisterType((*QueryDataCommitmentRangeForHeightRequest)(nil), "celestia.qgb.v1.QueryDataCommitmentRangeForHeightRequest") + proto.RegisterType((*QueryDataCommitmentRangeForHeightResponse)(nil), "celestia.qgb.v1.QueryDataCommitmentRangeForHeightResponse") + proto.RegisterType((*QueryEVMAddressRequest)(nil), "celestia.qgb.v1.QueryEVMAddressRequest") + proto.RegisterType((*QueryEVMAddressResponse)(nil), "celestia.qgb.v1.QueryEVMAddressResponse") +} + +func init() { proto.RegisterFile("celestia/qgb/v1/query.proto", fileDescriptor_c8535c57355a2b91) } + +var fileDescriptor_c8535c57355a2b91 = []byte{ + // 910 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x96, 0xcf, 0x8f, 0xdb, 0x44, 0x14, 0xc7, 0x63, 0xd4, 0x46, 0xe2, 0x45, 0xea, 0x8f, 0x49, 0x9a, 0xed, 0xba, 0xc5, 0xbb, 0x75, - 0xb2, 0xe9, 0x96, 0x65, 0x3d, 0x6a, 0x96, 0x2e, 0xa2, 0x2d, 0x87, 0x0d, 0x14, 0x15, 0xa9, 0x40, - 0x89, 0x44, 0x0f, 0x1c, 0x58, 0x8d, 0x93, 0xa9, 0xd7, 0x22, 0xf6, 0x24, 0xb6, 0x13, 0x11, 0x01, - 0x17, 0xfe, 0x02, 0x24, 0x8e, 0x9c, 0xb9, 0x72, 0x42, 0x5c, 0x38, 0x72, 0xa9, 0x7a, 0x5a, 0x89, + 0xb2, 0xe9, 0x96, 0x65, 0x3d, 0xda, 0x2c, 0x5d, 0x44, 0x5b, 0x0e, 0x1b, 0x28, 0x2a, 0x52, 0x81, + 0x12, 0x89, 0x1e, 0x38, 0xb0, 0x1a, 0x27, 0x53, 0xaf, 0x45, 0xec, 0x49, 0x6c, 0x27, 0x22, 0x02, + 0x2e, 0xfc, 0x05, 0x48, 0x1c, 0x39, 0x73, 0xe5, 0x84, 0xb8, 0x70, 0xe4, 0x52, 0xf5, 0x54, 0x89, 0x0b, 0x27, 0x84, 0x76, 0xf9, 0x0f, 0xf8, 0x07, 0x50, 0xe6, 0x47, 0xd6, 0x71, 0x6c, 0x27, 0x59, 0xf5, 0xe6, 0x99, 0xf7, 0xde, 0xf7, 0x7d, 0x9e, 0x33, 0xfe, 0x4e, 0xe0, 0x46, 0x87, 0xf6, 0x68, - 0x18, 0xb9, 0x04, 0x0f, 0x1c, 0x1b, 0x8f, 0x9a, 0x78, 0x30, 0xa4, 0xc1, 0xd8, 0xea, 0x07, 0x2c, - 0x62, 0xe8, 0xb2, 0x0a, 0x5a, 0x03, 0xc7, 0xb6, 0x46, 0x4d, 0xfd, 0x8d, 0x64, 0xb6, 0x43, 0x7d, - 0x1a, 0xba, 0xa1, 0xc8, 0xd7, 0xe7, 0xc4, 0xa2, 0x71, 0x9f, 0xaa, 0xe0, 0x4d, 0x87, 0x31, 0xa7, - 0x47, 0x31, 0xe9, 0xbb, 0x98, 0xf8, 0x3e, 0x8b, 0x48, 0xe4, 0x32, 0x5f, 0x45, 0x2b, 0x0e, 0x73, - 0x18, 0x7f, 0xc4, 0x93, 0x27, 0xb9, 0xbb, 0xde, 0x61, 0xa1, 0xc7, 0xc2, 0x43, 0x11, 0x10, 0x0b, - 0x15, 0x92, 0x72, 0x7c, 0x65, 0x0f, 0x9f, 0x63, 0xe2, 0x4b, 0x6c, 0xb3, 0x02, 0xe8, 0xb3, 0xc9, - 0x14, 0x4f, 0x49, 0x40, 0xbc, 0xb0, 0x4d, 0x07, 0x43, 0x1a, 0x46, 0xe6, 0x13, 0x28, 0xcf, 0xec, - 0x86, 0x7d, 0xe6, 0x87, 0x14, 0xdd, 0x83, 0x62, 0x9f, 0xef, 0x5c, 0xd7, 0x36, 0xb5, 0xed, 0x52, - 0x73, 0xcd, 0x4a, 0x0c, 0x6d, 0x89, 0x82, 0xd6, 0x85, 0x17, 0x7f, 0x6f, 0x14, 0xda, 0x32, 0xd9, - 0x7c, 0x0f, 0xb6, 0xb8, 0xda, 0x41, 0x14, 0xd1, 0x50, 0x8c, 0x22, 0x1b, 0xb5, 0xc6, 0x9f, 0x30, - 0xbf, 0x43, 0xe5, 0x0a, 0x55, 0xe0, 0xa2, 0x3f, 0x59, 0x73, 0xf9, 0x0b, 0x6d, 0xb1, 0x30, 0xc7, - 0xd0, 0x58, 0x54, 0x2e, 0xf9, 0x3e, 0x85, 0x12, 0x39, 0x4b, 0x92, 0x90, 0x15, 0x4b, 0x4c, 0x6f, - 0xa9, 0xe9, 0xad, 0x03, 0x7f, 0xdc, 0x5a, 0x7b, 0xf9, 0xeb, 0x6e, 0x79, 0x5e, 0xf1, 0xa3, 0x76, - 0x5c, 0xc1, 0xac, 0x83, 0xc9, 0x5b, 0x3f, 0x21, 0x93, 0xbd, 0x58, 0x7a, 0x1c, 0xdb, 0x7c, 0x00, - 0xb5, 0xdc, 0x2c, 0x49, 0x97, 0x3e, 0x5d, 0x03, 0xea, 0xbc, 0xf8, 0x11, 0x09, 0x7a, 0x6e, 0x4e, - 0x13, 0xf5, 0x12, 0xb3, 0xf3, 0x72, 0xdb, 0xb4, 0xe0, 0xcd, 0x18, 0xe3, 0x33, 0xd2, 0x0b, 0x69, - 0xa4, 0xde, 0x22, 0x7d, 0xce, 0x02, 0xba, 0xc4, 0x0f, 0xf1, 0x25, 0xec, 0x2c, 0xa5, 0x21, 0x41, - 0x30, 0x14, 0x47, 0x3c, 0x27, 0xf3, 0xb4, 0x48, 0x09, 0x99, 0x66, 0xd6, 0xe0, 0x56, 0x4c, 0xff, - 0x73, 0xdf, 0x66, 0x7e, 0xd7, 0xf5, 0x9d, 0xc7, 0xd4, 0x75, 0x8e, 0x54, 0x23, 0xf3, 0xe1, 0xcc, - 0x4f, 0x32, 0x97, 0x24, 0x7b, 0x57, 0xa1, 0x78, 0xc4, 0x77, 0xe4, 0x04, 0x72, 0x65, 0x9a, 0xb0, - 0x19, 0xab, 0xfe, 0x80, 0x44, 0xe4, 0x7d, 0xe6, 0x79, 0x6e, 0xe4, 0x51, 0x7f, 0xda, 0xc1, 0x9b, - 0xc1, 0x48, 0xe6, 0xc8, 0x06, 0x8f, 0xe1, 0x72, 0x97, 0x44, 0xe4, 0xb0, 0x33, 0x0d, 0xc9, 0x29, - 0x37, 0xe6, 0xa6, 0x4c, 0x28, 0x5c, 0xea, 0xce, 0xac, 0xcd, 0x16, 0x6c, 0xf3, 0x76, 0x89, 0x34, - 0xe2, 0x3b, 0xf4, 0x43, 0x16, 0xcc, 0x0c, 0x9f, 0x39, 0xd6, 0x10, 0xee, 0x2c, 0xa1, 0xf1, 0xca, - 0xd1, 0x1f, 0x41, 0x55, 0x9c, 0xc9, 0x67, 0x1f, 0x1f, 0x74, 0xbb, 0x01, 0x0d, 0x95, 0x81, 0xa0, - 0x1d, 0xb8, 0x3a, 0x22, 0x3d, 0xb7, 0x4b, 0x22, 0x16, 0x1c, 0x12, 0x11, 0xe3, 0x5d, 0x5e, 0x6f, - 0x5f, 0x99, 0x06, 0x64, 0x8d, 0x79, 0x1f, 0xd6, 0xe6, 0x64, 0x24, 0xeb, 0x06, 0x94, 0xe8, 0xc8, - 0x4b, 0x28, 0x00, 0x1d, 0x79, 0x32, 0xb1, 0xf9, 0x5f, 0x09, 0x2e, 0xf2, 0x62, 0xf4, 0x15, 0x14, - 0x85, 0xfb, 0xa0, 0xda, 0xdc, 0x1c, 0xf3, 0x16, 0xa7, 0xd7, 0xf3, 0x93, 0x44, 0x7f, 0xb3, 0xfa, - 0xfd, 0x9f, 0xff, 0xfe, 0xf8, 0xda, 0x15, 0x74, 0x49, 0xb8, 0xf4, 0x5d, 0x2c, 0x2c, 0x0d, 0xfd, - 0xae, 0xc1, 0x7a, 0xa6, 0x1f, 0xa1, 0xfd, 0x74, 0xed, 0x45, 0xfe, 0xa7, 0xbf, 0xb3, 0x72, 0x9d, - 0xc4, 0xdc, 0xe5, 0x98, 0xb7, 0xd1, 0x96, 0xc2, 0x8c, 0x99, 0x58, 0x88, 0x03, 0x51, 0x14, 0xe2, - 0x6f, 0xf8, 0x77, 0xfc, 0x1d, 0xfa, 0x45, 0x83, 0x6a, 0xba, 0x59, 0xa1, 0xbd, 0x74, 0x84, 0x5c, - 0x03, 0xd4, 0xdf, 0x5e, 0xad, 0x48, 0x42, 0xdf, 0xe1, 0xd0, 0x35, 0x74, 0x2b, 0x15, 0x9a, 0xa3, - 0xe2, 0x1e, 0x97, 0x40, 0xbf, 0x69, 0x70, 0x3d, 0xcb, 0xf8, 0xd0, 0xbd, 0xf4, 0xee, 0x0b, 0x0c, - 0x55, 0xdf, 0x5f, 0xb5, 0x4c, 0x62, 0xef, 0x70, 0xec, 0x2d, 0x54, 0xcb, 0xc1, 0xa6, 0x52, 0x04, - 0xbd, 0xd4, 0xc0, 0xc8, 0xb7, 0x4b, 0xf4, 0x20, 0xef, 0xe5, 0x2d, 0x30, 0x6a, 0xfd, 0xe1, 0xf9, - 0x8a, 0xb3, 0x8e, 0x8d, 0x30, 0x62, 0x75, 0x60, 0xb0, 0xcd, 0x6b, 0xa6, 0xc7, 0xe6, 0x27, 0x0d, - 0xae, 0xa5, 0xda, 0x2e, 0x6a, 0xe6, 0x61, 0xa4, 0x1b, 0xb9, 0xbe, 0xb7, 0x52, 0x8d, 0x24, 0x5e, - 0xe7, 0xc4, 0x65, 0x74, 0x55, 0x11, 0x0f, 0x55, 0x22, 0xfa, 0x43, 0x83, 0x9b, 0x79, 0xfe, 0x87, - 0xde, 0x4d, 0x6f, 0xb8, 0x84, 0xef, 0xea, 0xf7, 0xcf, 0x53, 0x2a, 0x91, 0xdf, 0xe2, 0xc8, 0x0d, - 0x54, 0x57, 0xc8, 0x09, 0xf3, 0xc5, 0xc1, 0xa4, 0x0e, 0x0b, 0x27, 0x47, 0x3f, 0x6b, 0x50, 0x49, - 0xbb, 0x78, 0xd0, 0xdd, 0xbc, 0xd7, 0x95, 0x7a, 0x91, 0xe9, 0xcd, 0x55, 0x4a, 0x24, 0x6d, 0x83, - 0xd3, 0x6e, 0x22, 0x23, 0x8b, 0x56, 0x7e, 0x91, 0xdf, 0x02, 0x9c, 0xd9, 0x35, 0xba, 0x9d, 0xf1, - 0x2d, 0x25, 0xef, 0x05, 0x7d, 0x7b, 0x71, 0xa2, 0x04, 0xb9, 0xc1, 0x41, 0xae, 0xa1, 0xb2, 0x02, - 0x89, 0xdd, 0x03, 0xad, 0xa7, 0x2f, 0x4e, 0x0c, 0xed, 0xf8, 0xc4, 0xd0, 0xfe, 0x39, 0x31, 0xb4, - 0x1f, 0x4e, 0x8d, 0xc2, 0xf1, 0xa9, 0x51, 0xf8, 0xeb, 0xd4, 0x28, 0x7c, 0xb1, 0xef, 0xb8, 0xd1, - 0xd1, 0xd0, 0xb6, 0x3a, 0xcc, 0xc3, 0xaa, 0x15, 0x0b, 0x9c, 0xe9, 0xf3, 0x2e, 0xe9, 0xf7, 0xf1, - 0xd7, 0xd8, 0xee, 0x31, 0x3b, 0x8c, 0x02, 0x4a, 0x3c, 0xf1, 0xbf, 0xdb, 0x2e, 0xf2, 0x7f, 0x87, - 0x7b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xae, 0x31, 0x9f, 0xb9, 0xe4, 0x0b, 0x00, 0x00, + 0x18, 0xb9, 0x04, 0x0f, 0x1c, 0x1b, 0x8f, 0xf6, 0xf0, 0x60, 0x48, 0x83, 0xb1, 0xd5, 0x0f, 0x58, + 0xc4, 0xd0, 0x65, 0x15, 0xb4, 0x06, 0x8e, 0x6d, 0x8d, 0xf6, 0xf4, 0x37, 0x92, 0xd9, 0x0e, 0xf5, + 0x69, 0xe8, 0x86, 0x22, 0x5f, 0x9f, 0x13, 0x8b, 0xc6, 0x7d, 0xaa, 0x82, 0x37, 0x1d, 0xc6, 0x9c, + 0x1e, 0xc5, 0xa4, 0xef, 0x62, 0xe2, 0xfb, 0x2c, 0x22, 0x91, 0xcb, 0x7c, 0x15, 0xad, 0x38, 0xcc, + 0x61, 0xfc, 0x11, 0x4f, 0x9e, 0xe4, 0xee, 0x7a, 0x87, 0x85, 0x1e, 0x0b, 0x8f, 0x44, 0x40, 0x2c, + 0x54, 0x48, 0xca, 0xf1, 0x95, 0x3d, 0x7c, 0x86, 0x89, 0x2f, 0xb1, 0xcd, 0x0a, 0xa0, 0xcf, 0x26, + 0x53, 0x3c, 0x21, 0x01, 0xf1, 0xc2, 0x36, 0x1d, 0x0c, 0x69, 0x18, 0x99, 0x8f, 0xa1, 0x3c, 0xb3, + 0x1b, 0xf6, 0x99, 0x1f, 0x52, 0x74, 0x17, 0x8a, 0x7d, 0xbe, 0x73, 0x5d, 0xdb, 0xd4, 0xb6, 0x4b, + 0xcd, 0x35, 0x2b, 0x31, 0xb4, 0x25, 0x0a, 0x5a, 0x17, 0x9e, 0xff, 0xbd, 0x51, 0x68, 0xcb, 0x64, + 0xf3, 0x3d, 0xd8, 0xe2, 0x6a, 0x87, 0x51, 0x44, 0x43, 0x31, 0x8a, 0x6c, 0xd4, 0x1a, 0x7f, 0xc2, + 0xfc, 0x0e, 0x95, 0x2b, 0x54, 0x81, 0x8b, 0xfe, 0x64, 0xcd, 0xe5, 0x2f, 0xb4, 0xc5, 0xc2, 0x1c, + 0x43, 0x63, 0x51, 0xb9, 0xe4, 0xfb, 0x14, 0x4a, 0xe4, 0x2c, 0x49, 0x42, 0x56, 0x2c, 0x31, 0xbd, + 0xa5, 0xa6, 0xb7, 0x0e, 0xfd, 0x71, 0x6b, 0xed, 0xc5, 0xaf, 0xbb, 0xe5, 0x79, 0xc5, 0x8f, 0xda, + 0x71, 0x05, 0xb3, 0x0e, 0x26, 0x6f, 0xfd, 0x98, 0x4c, 0xf6, 0x62, 0xe9, 0x71, 0x6c, 0xf3, 0x3e, + 0xd4, 0x72, 0xb3, 0x24, 0x5d, 0xfa, 0x74, 0x0d, 0xa8, 0xf3, 0xe2, 0x87, 0x24, 0xe8, 0xb9, 0x39, + 0x4d, 0xd4, 0x4b, 0xcc, 0xce, 0xcb, 0x6d, 0xd3, 0x82, 0x37, 0x63, 0x8c, 0x4f, 0x49, 0x2f, 0xa4, + 0x91, 0x7a, 0x8b, 0xf4, 0x19, 0x0b, 0xe8, 0x12, 0x3f, 0xc4, 0x97, 0xb0, 0xb3, 0x94, 0x86, 0x04, + 0xc1, 0x50, 0x1c, 0xf1, 0x9c, 0xcc, 0xd3, 0x22, 0x25, 0x64, 0x9a, 0x59, 0x83, 0x5b, 0x31, 0xfd, + 0xcf, 0x7d, 0x9b, 0xf9, 0x5d, 0xd7, 0x77, 0x1e, 0x51, 0xd7, 0x39, 0x56, 0x8d, 0xcc, 0x07, 0x33, + 0x3f, 0xc9, 0x5c, 0x92, 0xec, 0x5d, 0x85, 0xe2, 0x31, 0xdf, 0x91, 0x13, 0xc8, 0x95, 0x69, 0xc2, + 0x66, 0xac, 0xfa, 0x03, 0x12, 0x91, 0xf7, 0x99, 0xe7, 0xb9, 0x91, 0x47, 0xfd, 0x69, 0x07, 0x6f, + 0x06, 0x23, 0x99, 0x23, 0x1b, 0x3c, 0x82, 0xcb, 0x5d, 0x12, 0x91, 0xa3, 0xce, 0x34, 0x24, 0xa7, + 0xdc, 0x98, 0x9b, 0x32, 0xa1, 0x70, 0xa9, 0x3b, 0xb3, 0x36, 0x5b, 0xb0, 0xcd, 0xdb, 0x25, 0xd2, + 0x88, 0xef, 0xd0, 0x0f, 0x59, 0x30, 0x33, 0x7c, 0xe6, 0x58, 0x43, 0xb8, 0xb3, 0x84, 0xc6, 0x2b, + 0x47, 0x7f, 0x08, 0x55, 0x71, 0x26, 0x9f, 0x7e, 0x7c, 0xd8, 0xed, 0x06, 0x34, 0x54, 0x06, 0x82, + 0x76, 0xe0, 0xea, 0x88, 0xf4, 0xdc, 0x2e, 0x89, 0x58, 0x70, 0x44, 0x44, 0x8c, 0x77, 0x79, 0xbd, + 0x7d, 0x65, 0x1a, 0x90, 0x35, 0xe6, 0x3d, 0x58, 0x9b, 0x93, 0x91, 0xac, 0x1b, 0x50, 0xa2, 0x23, + 0x2f, 0xa1, 0x00, 0x74, 0xe4, 0xc9, 0xc4, 0xe6, 0x7f, 0x25, 0xb8, 0xc8, 0x8b, 0xd1, 0x57, 0x50, + 0x14, 0xee, 0x83, 0x6a, 0x73, 0x73, 0xcc, 0x5b, 0x9c, 0x5e, 0xcf, 0x4f, 0x12, 0xfd, 0xcd, 0xea, + 0xf7, 0x7f, 0xfe, 0xfb, 0xe3, 0x6b, 0x57, 0xd0, 0x25, 0xe5, 0xd2, 0xc2, 0xd2, 0xd0, 0xef, 0x1a, + 0xac, 0x67, 0xfa, 0x11, 0x3a, 0x48, 0xd7, 0x5e, 0xe4, 0x7f, 0xfa, 0x3b, 0x2b, 0xd7, 0x49, 0xcc, + 0x5d, 0x8e, 0x79, 0x1b, 0x6d, 0x29, 0xcc, 0x98, 0x89, 0x85, 0x38, 0x10, 0x45, 0x21, 0xfe, 0x86, + 0x7f, 0xc7, 0xdf, 0xa1, 0x5f, 0x34, 0xa8, 0xa6, 0x9b, 0x15, 0xda, 0x4f, 0x47, 0xc8, 0x35, 0x40, + 0xfd, 0xed, 0xd5, 0x8a, 0x24, 0xf4, 0x1d, 0x0e, 0x5d, 0x43, 0xb7, 0x52, 0xa1, 0x39, 0x2a, 0xee, + 0x71, 0x09, 0xf4, 0x9b, 0x06, 0xd7, 0xb3, 0x8c, 0x0f, 0xdd, 0x4d, 0xef, 0xbe, 0xc0, 0x50, 0xf5, + 0x83, 0x55, 0xcb, 0x24, 0xf6, 0x0e, 0xc7, 0xde, 0x42, 0xb5, 0x1c, 0x6c, 0x2a, 0x45, 0xd0, 0x0b, + 0x0d, 0x8c, 0x7c, 0xbb, 0x44, 0xf7, 0xf3, 0x5e, 0xde, 0x02, 0xa3, 0xd6, 0x1f, 0x9c, 0xaf, 0x38, + 0xeb, 0xd8, 0x08, 0x23, 0x56, 0x07, 0x06, 0xdb, 0xbc, 0x66, 0x7a, 0x6c, 0x7e, 0xd2, 0xe0, 0x5a, + 0xaa, 0xed, 0xa2, 0x66, 0x1e, 0x46, 0xba, 0x91, 0xeb, 0xfb, 0x2b, 0xd5, 0x48, 0xe2, 0x75, 0x4e, + 0x5c, 0x46, 0x57, 0x15, 0xf1, 0x50, 0x25, 0xa2, 0x3f, 0x34, 0xb8, 0x99, 0xe7, 0x7f, 0xe8, 0xdd, + 0xf4, 0x86, 0x4b, 0xf8, 0xae, 0x7e, 0xef, 0x3c, 0xa5, 0x12, 0xf9, 0x2d, 0x8e, 0xdc, 0x40, 0x75, + 0x85, 0x9c, 0x30, 0x5f, 0x1c, 0x4c, 0xea, 0xb0, 0x70, 0x72, 0xf4, 0xb3, 0x06, 0x95, 0xb4, 0x8b, + 0x07, 0xed, 0xe5, 0xbd, 0xae, 0xd4, 0x8b, 0x4c, 0x6f, 0xae, 0x52, 0x22, 0x69, 0x1b, 0x9c, 0x76, + 0x13, 0x19, 0x59, 0xb4, 0xf2, 0x8b, 0xfc, 0x16, 0xe0, 0xcc, 0xae, 0xd1, 0xed, 0x8c, 0x6f, 0x29, + 0x79, 0x2f, 0xe8, 0xdb, 0x8b, 0x13, 0x25, 0xc8, 0x0d, 0x0e, 0x72, 0x0d, 0x95, 0x15, 0x48, 0xec, + 0x1e, 0x68, 0x3d, 0x79, 0x7e, 0x62, 0x68, 0x2f, 0x4f, 0x0c, 0xed, 0x9f, 0x13, 0x43, 0xfb, 0xe1, + 0xd4, 0x28, 0xbc, 0x3c, 0x35, 0x0a, 0x7f, 0x9d, 0x1a, 0x85, 0x2f, 0x0e, 0x1c, 0x37, 0x3a, 0x1e, + 0xda, 0x56, 0x87, 0x79, 0x58, 0xb5, 0x62, 0x81, 0x33, 0x7d, 0xde, 0x25, 0xfd, 0x3e, 0xfe, 0x1a, + 0xdb, 0x3d, 0x66, 0x87, 0x51, 0x40, 0x89, 0x27, 0xfe, 0x77, 0xdb, 0x45, 0xfe, 0xef, 0x70, 0xff, + 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x42, 0x6c, 0x12, 0x89, 0xe4, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -955,7 +955,7 @@ func NewQueryClient(cc grpc1.ClientConn) QueryClient { func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/Params", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/Params", in, out, opts...) if err != nil { return nil, err } @@ -964,7 +964,7 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . func (c *queryClient) AttestationRequestByNonce(ctx context.Context, in *QueryAttestationRequestByNonceRequest, opts ...grpc.CallOption) (*QueryAttestationRequestByNonceResponse, error) { out := new(QueryAttestationRequestByNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/AttestationRequestByNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/AttestationRequestByNonce", in, out, opts...) if err != nil { return nil, err } @@ -973,7 +973,7 @@ func (c *queryClient) AttestationRequestByNonce(ctx context.Context, in *QueryAt func (c *queryClient) LatestAttestationNonce(ctx context.Context, in *QueryLatestAttestationNonceRequest, opts ...grpc.CallOption) (*QueryLatestAttestationNonceResponse, error) { out := new(QueryLatestAttestationNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestAttestationNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestAttestationNonce", in, out, opts...) if err != nil { return nil, err } @@ -982,7 +982,7 @@ func (c *queryClient) LatestAttestationNonce(ctx context.Context, in *QueryLates func (c *queryClient) EarliestAttestationNonce(ctx context.Context, in *QueryEarliestAttestationNonceRequest, opts ...grpc.CallOption) (*QueryEarliestAttestationNonceResponse, error) { out := new(QueryEarliestAttestationNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/EarliestAttestationNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/EarliestAttestationNonce", in, out, opts...) if err != nil { return nil, err } @@ -991,7 +991,7 @@ func (c *queryClient) EarliestAttestationNonce(ctx context.Context, in *QueryEar func (c *queryClient) LatestValsetRequestBeforeNonce(ctx context.Context, in *QueryLatestValsetRequestBeforeNonceRequest, opts ...grpc.CallOption) (*QueryLatestValsetRequestBeforeNonceResponse, error) { out := new(QueryLatestValsetRequestBeforeNonceResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestValsetRequestBeforeNonce", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestValsetRequestBeforeNonce", in, out, opts...) if err != nil { return nil, err } @@ -1000,7 +1000,7 @@ func (c *queryClient) LatestValsetRequestBeforeNonce(ctx context.Context, in *Qu func (c *queryClient) LatestUnbondingHeight(ctx context.Context, in *QueryLatestUnbondingHeightRequest, opts ...grpc.CallOption) (*QueryLatestUnbondingHeightResponse, error) { out := new(QueryLatestUnbondingHeightResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestUnbondingHeight", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestUnbondingHeight", in, out, opts...) if err != nil { return nil, err } @@ -1009,7 +1009,7 @@ func (c *queryClient) LatestUnbondingHeight(ctx context.Context, in *QueryLatest func (c *queryClient) DataCommitmentRangeForHeight(ctx context.Context, in *QueryDataCommitmentRangeForHeightRequest, opts ...grpc.CallOption) (*QueryDataCommitmentRangeForHeightResponse, error) { out := new(QueryDataCommitmentRangeForHeightResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/DataCommitmentRangeForHeight", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/DataCommitmentRangeForHeight", in, out, opts...) if err != nil { return nil, err } @@ -1018,7 +1018,7 @@ func (c *queryClient) DataCommitmentRangeForHeight(ctx context.Context, in *Quer func (c *queryClient) LatestDataCommitment(ctx context.Context, in *QueryLatestDataCommitmentRequest, opts ...grpc.CallOption) (*QueryLatestDataCommitmentResponse, error) { out := new(QueryLatestDataCommitmentResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/LatestDataCommitment", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/LatestDataCommitment", in, out, opts...) if err != nil { return nil, err } @@ -1027,7 +1027,7 @@ func (c *queryClient) LatestDataCommitment(ctx context.Context, in *QueryLatestD func (c *queryClient) EVMAddress(ctx context.Context, in *QueryEVMAddressRequest, opts ...grpc.CallOption) (*QueryEVMAddressResponse, error) { out := new(QueryEVMAddressResponse) - err := c.cc.Invoke(ctx, "/celestia.qgb.v2.Query/EVMAddress", in, out, opts...) + err := c.cc.Invoke(ctx, "/celestia.qgb.v1.Query/EVMAddress", in, out, opts...) if err != nil { return nil, err } @@ -1109,7 +1109,7 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/Params", + FullMethod: "/celestia.qgb.v1.Query/Params", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) @@ -1127,7 +1127,7 @@ func _Query_AttestationRequestByNonce_Handler(srv interface{}, ctx context.Conte } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/AttestationRequestByNonce", + FullMethod: "/celestia.qgb.v1.Query/AttestationRequestByNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).AttestationRequestByNonce(ctx, req.(*QueryAttestationRequestByNonceRequest)) @@ -1145,7 +1145,7 @@ func _Query_LatestAttestationNonce_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/LatestAttestationNonce", + FullMethod: "/celestia.qgb.v1.Query/LatestAttestationNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestAttestationNonce(ctx, req.(*QueryLatestAttestationNonceRequest)) @@ -1163,7 +1163,7 @@ func _Query_EarliestAttestationNonce_Handler(srv interface{}, ctx context.Contex } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/EarliestAttestationNonce", + FullMethod: "/celestia.qgb.v1.Query/EarliestAttestationNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).EarliestAttestationNonce(ctx, req.(*QueryEarliestAttestationNonceRequest)) @@ -1181,7 +1181,7 @@ func _Query_LatestValsetRequestBeforeNonce_Handler(srv interface{}, ctx context. } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/LatestValsetRequestBeforeNonce", + FullMethod: "/celestia.qgb.v1.Query/LatestValsetRequestBeforeNonce", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestValsetRequestBeforeNonce(ctx, req.(*QueryLatestValsetRequestBeforeNonceRequest)) @@ -1199,7 +1199,7 @@ func _Query_LatestUnbondingHeight_Handler(srv interface{}, ctx context.Context, } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/LatestUnbondingHeight", + FullMethod: "/celestia.qgb.v1.Query/LatestUnbondingHeight", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestUnbondingHeight(ctx, req.(*QueryLatestUnbondingHeightRequest)) @@ -1217,7 +1217,7 @@ func _Query_DataCommitmentRangeForHeight_Handler(srv interface{}, ctx context.Co } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/DataCommitmentRangeForHeight", + FullMethod: "/celestia.qgb.v1.Query/DataCommitmentRangeForHeight", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).DataCommitmentRangeForHeight(ctx, req.(*QueryDataCommitmentRangeForHeightRequest)) @@ -1235,7 +1235,7 @@ func _Query_LatestDataCommitment_Handler(srv interface{}, ctx context.Context, d } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/LatestDataCommitment", + FullMethod: "/celestia.qgb.v1.Query/LatestDataCommitment", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).LatestDataCommitment(ctx, req.(*QueryLatestDataCommitmentRequest)) @@ -1253,7 +1253,7 @@ func _Query_EVMAddress_Handler(srv interface{}, ctx context.Context, dec func(in } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/celestia.qgb.v2.Query/EVMAddress", + FullMethod: "/celestia.qgb.v1.Query/EVMAddress", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(QueryServer).EVMAddress(ctx, req.(*QueryEVMAddressRequest)) @@ -1262,7 +1262,7 @@ func _Query_EVMAddress_Handler(srv interface{}, ctx context.Context, dec func(in } var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "celestia.qgb.v2.Query", + ServiceName: "celestia.qgb.v1.Query", HandlerType: (*QueryServer)(nil), Methods: []grpc.MethodDesc{ { @@ -1303,7 +1303,7 @@ var _Query_serviceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "celestia/qgb/v2/query.proto", + Metadata: "celestia/qgb/v1/query.proto", } func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { diff --git a/x/blobstream/types/query.pb.gw.go b/x/blobstream/types/query.pb.gw.go index 44c9f97a77..21c27b2546 100644 --- a/x/blobstream/types/query.pb.gw.go +++ b/x/blobstream/types/query.pb.gw.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: celestia/qgb/v2/query.proto +// source: celestia/qgb/v1/query.proto /* Package types is a reverse proxy. From 2d5af5604977b8a7cfe6ec2498249213f1578033 Mon Sep 17 00:00:00 2001 From: Rootul Patel Date: Tue, 22 Oct 2024 14:51:09 -0400 Subject: [PATCH 140/140] feat(x/minfee): extract go module --- .../test/query_test.go | 5 +- go.mod | 9 +- go.sum | 12 +- multiplexer/go.mod | 8 +- multiplexer/go.sum | 10 +- pkg/appconsts/initial_consts.go | 3 + x/minfee/constants.go | 20 + x/minfee/constants_test.go | 16 + x/minfee/genesis.go | 2 +- x/minfee/go.mod | 136 ++ x/minfee/go.sum | 1366 +++++++++++++++++ x/minfee/params.go | 12 +- 12 files changed, 1564 insertions(+), 35 deletions(-) rename x/minfee/grpc_query_test.go => app/test/query_test.go (82%) create mode 100644 x/minfee/constants.go create mode 100644 x/minfee/constants_test.go create mode 100644 x/minfee/go.mod create mode 100644 x/minfee/go.sum diff --git a/x/minfee/grpc_query_test.go b/app/test/query_test.go similarity index 82% rename from x/minfee/grpc_query_test.go rename to app/test/query_test.go index 9e797ee828..394fea7469 100644 --- a/x/minfee/grpc_query_test.go +++ b/app/test/query_test.go @@ -1,10 +1,9 @@ -package minfee_test +package app_test import ( "testing" "github.com/celestiaorg/celestia-app/v3/app" - "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" testutil "github.com/celestiaorg/celestia-app/v3/test/util" "github.com/celestiaorg/celestia-app/v3/x/minfee" sdk "github.com/cosmos/cosmos-sdk/types" @@ -24,5 +23,5 @@ func TestQueryNetworkMinGasPrice(t *testing.T) { require.NoError(t, err) // Check the response - require.Equal(t, appconsts.DefaultNetworkMinGasPrice, resp.NetworkMinGasPrice.MustFloat64()) + require.Equal(t, minfee.DefaultNetworkMinGasPriceAsDec(), resp.NetworkMinGasPrice) } diff --git a/go.mod b/go.mod index 7ad4054fc1..d774d54189 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( cosmossdk.io/errors v1.0.1 cosmossdk.io/math v1.3.0 github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 + github.com/celestiaorg/celestia-app/v3/x/minfee v0.0.0 github.com/celestiaorg/go-square v1.1.1 github.com/celestiaorg/go-square/v2 v2.0.0 github.com/celestiaorg/knuu v0.16.1 @@ -32,7 +33,7 @@ require ( github.com/tendermint/tendermint v0.34.29 github.com/tendermint/tm-db v0.6.7 golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e - google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 + google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 google.golang.org/grpc v1.67.1 google.golang.org/protobuf v1.35.1 gopkg.in/yaml.v2 v2.4.0 @@ -183,7 +184,7 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect - github.com/onsi/ginkgo v1.16.5 // indirect + github.com/nxadm/tail v1.4.8 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect @@ -237,7 +238,7 @@ require ( golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.169.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect @@ -254,6 +255,8 @@ require ( ) replace ( + // Replace this import until there's an official release of x/minfee + github.com/celestiaorg/celestia-app/v3/x/minfee => ./x/minfee github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 diff --git a/go.sum b/go.sum index 22fd80bf43..90e87978de 100644 --- a/go.sum +++ b/go.sum @@ -606,8 +606,6 @@ github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5Nq github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= @@ -1622,7 +1620,6 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1756,7 +1753,6 @@ golang.org/x/tools v0.0.0-20201022035929-9cf592e881e9/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= @@ -1953,10 +1949,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 h1:2oV8dfuIkM1Ti7DwXc0BJfnwr9csz4TDXI9EmiI+Rbw= +google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38/go.mod h1:vuAjtvlwkDKF6L1GQ0SokiRLCGFfeBUXWr/aFFkHACc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/multiplexer/go.mod b/multiplexer/go.mod index 48620766b8..0e88ef340a 100644 --- a/multiplexer/go.mod +++ b/multiplexer/go.mod @@ -36,6 +36,7 @@ require ( github.com/bits-and-blooms/bitset v1.13.0 // indirect github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 // indirect + github.com/celestiaorg/celestia-app/v3/x/minfee v0.0.0 // indirect github.com/celestiaorg/go-square v1.1.1 // indirect github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 // indirect github.com/celestiaorg/go-square/v2 v2.0.0 // indirect @@ -152,7 +153,6 @@ require ( github.com/mmcloughlin/addchain v0.4.0 // indirect github.com/mtibben/percent v0.2.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/nxadm/tail v1.4.8 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -206,8 +206,8 @@ require ( golang.org/x/time v0.5.0 // indirect google.golang.org/api v0.171.0 // indirect google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect google.golang.org/grpc v1.67.1 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect @@ -225,6 +225,8 @@ replace ( github.com/celestiaorg/celestia-app/v2 => ../../celestia-app-v2 // replace celestia-app v3 with a local copy so that we can modify it's modules.go github.com/celestiaorg/celestia-app/v3 => ../ + // replace celestia-app v3 with a local copy so that we can modify it's modules.go + github.com/celestiaorg/celestia-app/v3/x/minfee => ../x/minfee // replace cosmos-sdk with a local copy so that we can debug log. github.com/cosmos/cosmos-sdk => ../../cosmos-sdk // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 diff --git a/multiplexer/go.sum b/multiplexer/go.sum index b5d25f5ef3..c8057d7963 100644 --- a/multiplexer/go.sum +++ b/multiplexer/go.sum @@ -313,8 +313,6 @@ github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZI github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ= github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35 h1:L4GTm+JUXhB0a/nGPMq6jEqqe6THuYSQ8m2kUCtZYqw= github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35/go.mod h1:bFr0lAGwaJ0mOHSBmib5/ca5pbBf1yKWGPs93Td0HPw= -github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 h1:f+fTe7GGk0/qgdzyqB8kk8EcDf9d6MC22khBTQiDXsU= -github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16/go.mod h1:07Z8HJqS8Rw4XlZ+ok3D3NM/X/in8mvcGLvl0Zb5wrA= github.com/celestiaorg/go-square v1.1.1 h1:Cy3p8WVspVcyOqHM8BWFuuYPwMitO1pYGe+ImILFZRA= github.com/celestiaorg/go-square v1.1.1/go.mod h1:1EXMErhDrWJM8B8V9hN7dqJ2kUTClfwdqMOmF9yQUa0= github.com/celestiaorg/go-square/merkle v0.0.0-20240117232118-fd78256df076 h1:PYInrsYzrDIsZW9Yb86OTi2aEKuPcpgJt6Mc0Jlc/yg= @@ -1893,10 +1891,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 h1:2oV8dfuIkM1Ti7DwXc0BJfnwr9csz4TDXI9EmiI+Rbw= +google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38/go.mod h1:vuAjtvlwkDKF6L1GQ0SokiRLCGFfeBUXWr/aFFkHACc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= diff --git a/pkg/appconsts/initial_consts.go b/pkg/appconsts/initial_consts.go index 18cafc969d..e48ee56d25 100644 --- a/pkg/appconsts/initial_consts.go +++ b/pkg/appconsts/initial_consts.go @@ -30,6 +30,9 @@ const ( // DefaultNetworkMinGasPrice is used by x/minfee to prevent transactions from being // included in a block if they specify a gas price lower than this. // Only applies to app version >= 2 + // + // Deprecated: Import this constant from x/minfee instead. + // TODO: Remove this constant in v4. DefaultNetworkMinGasPrice = 0.000001 // utia ) diff --git a/x/minfee/constants.go b/x/minfee/constants.go new file mode 100644 index 0000000000..eb6e234caf --- /dev/null +++ b/x/minfee/constants.go @@ -0,0 +1,20 @@ +package minfee + +import sdk "github.com/cosmos/cosmos-sdk/types" + +const ( + // DefaultNetworkMinGasPrice is used by x/minfee to prevent transactions from being + // included in a block if they specify a gas price lower than this. + // Only applies to app version >= 2 + // + // Deprecated: use DefaultNetworkMinGasPriceAsDec() instead. + DefaultNetworkMinGasPrice = 0.000001 // utia +) + +var ( + defaultNetworkMinGasPriceAsDec = sdk.NewDecWithPrec(1, 6) +) + +func DefaultNetworkMinGasPriceAsDec() sdk.Dec { + return defaultNetworkMinGasPriceAsDec +} diff --git a/x/minfee/constants_test.go b/x/minfee/constants_test.go new file mode 100644 index 0000000000..739d979230 --- /dev/null +++ b/x/minfee/constants_test.go @@ -0,0 +1,16 @@ +package minfee + +import ( + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/assert" +) + +func TestDefaultNetworkMinGasPriceAsDec(t *testing.T) { + want, err := sdk.NewDecFromStr("0.000001") + assert.NoError(t, err) + + got := DefaultNetworkMinGasPriceAsDec() + assert.Equal(t, want, got) +} diff --git a/x/minfee/genesis.go b/x/minfee/genesis.go index 5252c29597..14f16ff68b 100644 --- a/x/minfee/genesis.go +++ b/x/minfee/genesis.go @@ -10,7 +10,7 @@ import ( // DefaultGenesis returns the default genesis state. func DefaultGenesis() *GenesisState { return &GenesisState{ - NetworkMinGasPrice: DefaultNetworkMinGasPrice, + NetworkMinGasPrice: DefaultNetworkMinGasPriceAsDec(), } } diff --git a/x/minfee/go.mod b/x/minfee/go.mod new file mode 100644 index 0000000000..888c457690 --- /dev/null +++ b/x/minfee/go.mod @@ -0,0 +1,136 @@ +module github.com/celestiaorg/celestia-app/v3/x/minfee + +go 1.23.1 + +require ( + github.com/cosmos/cosmos-proto v1.0.0-beta.5 + github.com/cosmos/cosmos-sdk v0.46.16 + github.com/cosmos/gogoproto v1.7.0 + github.com/gogo/protobuf v1.3.3 + github.com/golang/protobuf v1.5.4 + github.com/gorilla/mux v1.8.1 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/spf13/cobra v1.8.1 + github.com/stretchr/testify v1.9.0 + github.com/tendermint/tendermint v0.34.29 + github.com/tendermint/tm-db v0.6.7 + google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 + google.golang.org/grpc v1.67.1 +) + +require ( + cloud.google.com/go v0.112.1 // indirect + cloud.google.com/go/storage v1.38.0 // indirect + cosmossdk.io/errors v1.0.1 // indirect + cosmossdk.io/math v1.3.0 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/DataDog/zstd v1.5.0 // indirect + github.com/armon/go-metrics v0.4.1 // indirect + github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/speakeasy v0.1.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/celestiaorg/nmt v0.22.2 // indirect + github.com/cenkalti/backoff/v4 v4.2.1 // indirect + github.com/cespare/xxhash v1.1.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cometbft/cometbft-db v1.0.1 // indirect + github.com/confio/ics23/go v0.9.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gorocksdb v1.2.0 // indirect + github.com/cosmos/iavl v0.19.6 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.2 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect + github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 // indirect + github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-kit/kit v0.12.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/gtank/merlin v0.1.1 // indirect + github.com/gtank/ristretto255 v0.1.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-uuid v1.0.1 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/onsi/ginkgo v1.16.5 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.20.3 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.15.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.3.11 // indirect + golang.org/x/crypto v0.27.0 // indirect + golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect + google.golang.org/api v0.169.0 // indirect + google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect + google.golang.org/protobuf v1.35.1 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + nhooyr.io/websocket v1.8.17 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace ( + github.com/cosmos/cosmos-sdk => github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 + // Pin to ledger-cosmos-go v0.12.4 to avoid a breaking change introduced in v0.13.0 + // The following replace statement can be removed when we upgrade to cosmos-sdk >= v0.50.0 + github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + github.com/tendermint/tendermint => github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35 +) diff --git a/x/minfee/go.sum b/x/minfee/go.sum new file mode 100644 index 0000000000..618fdca776 --- /dev/null +++ b/x/minfee/go.sum @@ -0,0 +1,1366 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.112.1 h1:uJSeirPke5UNZHIb4SxfZklVSiWWVqW4oXlETwZziwM= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v1.1.6 h1:bEa06k05IO4f4uJonbB5iAgKTPpABy1ayxaIZV/GHVc= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.38.0 h1:Az68ZRGlnNTpIBbLjSMIV2BDcwwXYlRlQzis0llkpJg= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= +github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= +github.com/Workiva/go-datastructures v1.0.53/go.mod h1:1yZL+zfsztete+ePzZz/Zb1/t5BnDuE2Ya2MMGhzP6A= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.3 h1:xfbtw8lwpp0G6NwSHb+UE67ryTFHJAiNuipusjXSohQ= +github.com/btcsuite/btcd/btcutil v1.1.3/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35 h1:L4GTm+JUXhB0a/nGPMq6jEqqe6THuYSQ8m2kUCtZYqw= +github.com/celestiaorg/celestia-core v1.43.0-tm-v0.34.35/go.mod h1:bFr0lAGwaJ0mOHSBmib5/ca5pbBf1yKWGPs93Td0HPw= +github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16 h1:f+fTe7GGk0/qgdzyqB8kk8EcDf9d6MC22khBTQiDXsU= +github.com/celestiaorg/cosmos-sdk v1.25.0-sdk-v0.46.16/go.mod h1:07Z8HJqS8Rw4XlZ+ok3D3NM/X/in8mvcGLvl0Zb5wrA= +github.com/celestiaorg/nmt v0.22.2 h1:JmOMtZL9zWAed1hiwb9DDs+ELcKp/ZQZ3rPverge/V8= +github.com/celestiaorg/nmt v0.22.2/go.mod h1:/7huDiSRL/d2EGhoiKctgSzmLOJoWG8yEfbFtY1+Mow= +github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= +github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.2 h1:CUh2IPtR4swHlEj48Rhfzw6l/d0qA31fItcIszQVIsA= +github.com/cockroachdb/pebble v1.1.2/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft-db v1.0.1 h1:SylKuLseMLQKw3+i8y8KozZyJcQSL98qEe2CGMCGTYE= +github.com/cometbft/cometbft-db v1.0.1/go.mod h1:EBrFs1GDRiTqrWXYi4v90Awf/gcdD5ExzdPbg4X8+mk= +github.com/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= +github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v0.19.6 h1:XY78yEeNPrEYyNCKlqr9chrwoeSDJ0bV2VjocTk//OU= +github.com/cosmos/iavl v0.19.6/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= +github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= +github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= +github.com/dgraph-io/badger/v4 v4.3.0 h1:lcsCE1/1qrRhqP+zYx6xDZb8n7U+QlwNicpc676Ub40= +github.com/dgraph-io/badger/v4 v4.3.0/go.mod h1:Sc0T595g8zqAQRDf44n+z3wG4BOqLwceaFntt8KPxUM= +github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91 h1:Pux6+xANi0I7RRo5E1gflI4EZ2yx3BGZ75JkAIvGEOA= +github.com/dgraph-io/ristretto v0.1.2-0.20240116140435-c67e07994f91/go.mod h1:swkazRqnUf1N62d0Nutz7KIj2UKqsm/H8tD0nBJAXqM= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= +github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= +github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= +github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.12.0 h1:e4o3o3IsBfAKQh5Qbbiqyfu97Ku7jrO/JbohvztANh4= +github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= +github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= +github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.12.2 h1:mhN09QQW1jEWeMF74zGR81R30z4VJzjZsfkUhuHF+DA= +github.com/googleapis/gax-go/v2 v2.12.2/go.mod h1:61M8vcyyXR2kqKFxKrfA22jaA8JGF7Dc8App1U3H6jc= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= +github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= +github.com/grafana/pyroscope-go v1.1.2 h1:7vCfdORYQMCxIzI3NlYAs3FcBP760+gWuYWOyiVyYx8= +github.com/grafana/pyroscope-go v1.1.2/go.mod h1:HSSmHo2KRn6FasBA4vK7BMiQqyQq8KSuBKvrhkXxYPU= +github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= +github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= +github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= +github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= +github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/linxGnu/grocksdb v1.9.3 h1:s1cbPcOd0cU2SKXRG1nEqCOWYAELQjdqg3RVI2MH9ik= +github.com/linxGnu/grocksdb v1.9.3/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= +github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.20.3 h1:oPksm4K8B+Vt35tUhw6GbSNSgVlVSBH0qELP/7u83l4= +github.com/prometheus/client_golang v1.20.3/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= +github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rs/cors v1.8.3 h1:O+qNyWn7Z+F9M0ILBHgMVPuB1xTOucVd5gtaYyXBpRo= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= +github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= +github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= +github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= +github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0= +go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/otel v1.30.0 h1:F2t8sK4qf1fAmY9ua4ohFS/K+FUuOPemHUIXHtktrts= +go.opentelemetry.io/otel v1.30.0/go.mod h1:tFw4Br9b7fOS+uEao81PJjVMjW/5fvNCbpsDIXqP0pc= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0 h1:hSWWvDjXHVLq9DkmB+77fl8v7+t+yYiS+eNkiplDK54= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.18.0/go.mod h1:zG7KQql1WjZCaUJd+L/ReSYx4bjbYJxg5ws9ws+mYes= +go.opentelemetry.io/otel/metric v1.30.0 h1:4xNulvn9gjzo4hjg+wzIKG7iNFEaBMX00Qd4QIZs7+w= +go.opentelemetry.io/otel/metric v1.30.0/go.mod h1:aXTfST94tswhWEb+5QjlSqG+cZlmyXy/u8jFpor3WqQ= +go.opentelemetry.io/otel/sdk v1.30.0 h1:cHdik6irO49R5IysVhdn8oaiR9m8XluDaJAs4DfOrYE= +go.opentelemetry.io/otel/sdk v1.30.0/go.mod h1:p14X4Ok8S+sygzblytT1nqG98QG2KYKv++HE0LY/mhg= +go.opentelemetry.io/otel/trace v1.30.0 h1:7UBkkYzeg3C7kQX8VAidWh2biiQbtAKjyIML8dQ9wmc= +go.opentelemetry.io/otel/trace v1.30.0/go.mod h1:5EyKqTzzmyqB9bwtCCq6pDLktPK6fmGf/Dph+8VI02o= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.169.0 h1:QwWPy71FgMWqJN/l6jVlFHUa29a7dcUy02I8o799nPY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de h1:F6qOa9AZTYJXOUEr4jDysRDLrm4PHePlge4v4TGAlxY= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38 h1:2oV8dfuIkM1Ti7DwXc0BJfnwr9csz4TDXI9EmiI+Rbw= +google.golang.org/genproto/googleapis/api v0.0.0-20241021214115-324edc3d5d38/go.mod h1:vuAjtvlwkDKF6L1GQ0SokiRLCGFfeBUXWr/aFFkHACc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +nhooyr.io/websocket v1.8.17 h1:KEVeLJkUywCKVsnLIDlD/5gtayKp8VoCkksHCGGfT9Y= +nhooyr.io/websocket v1.8.17/go.mod h1:rN9OFWIUwuxg4fR5tELlYC04bXYowCP9GX47ivo2l+c= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= diff --git a/x/minfee/params.go b/x/minfee/params.go index 2f1edc3ee8..ecc3e528d8 100644 --- a/x/minfee/params.go +++ b/x/minfee/params.go @@ -3,7 +3,6 @@ package minfee import ( "fmt" - "github.com/celestiaorg/celestia-app/v3/pkg/appconsts" sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -13,18 +12,9 @@ const ModuleName = "minfee" var _ paramtypes.ParamSet = (*Params)(nil) var ( - KeyNetworkMinGasPrice = []byte("NetworkMinGasPrice") - DefaultNetworkMinGasPrice sdk.Dec + KeyNetworkMinGasPrice = []byte("NetworkMinGasPrice") ) -func init() { - DefaultNetworkMinGasPriceDec, err := sdk.NewDecFromStr(fmt.Sprintf("%f", appconsts.DefaultNetworkMinGasPrice)) - if err != nil { - panic(err) - } - DefaultNetworkMinGasPrice = DefaultNetworkMinGasPriceDec -} - type Params struct { NetworkMinGasPrice sdk.Dec }