From b18514d9fe5f92c828378ef1928eda5e045d6e0a Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Wed, 31 Aug 2022 14:49:35 +0300 Subject: [PATCH 01/10] file bench service --- app/logger/log.go | 2 +- cmd/node/node.go | 2 + cmd/nodesgen/nodemap.yml | 10 +- etc/config.1.yml | 30 +++-- etc/configs/1.yml | 32 +++++ ...K2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1.yml | 22 ---- ...zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw.yml | 22 ---- etc/configs/2.yml | 32 +++++ etc/configs/3.yml | 32 +++++ etc/configs/4.yml | 32 +++++ service/file/service.go | 122 ++++++++++++++++++ service/net/pool/pool.go | 1 - syncproto/proto/sync.proto | 1 + syncproto/sync.pb.go | 78 +++++------ 14 files changed, 319 insertions(+), 99 deletions(-) create mode 100755 etc/configs/1.yml delete mode 100755 etc/configs/12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1.yml delete mode 100755 etc/configs/12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw.yml create mode 100755 etc/configs/2.yml create mode 100755 etc/configs/3.yml create mode 100755 etc/configs/4.yml create mode 100644 service/file/service.go diff --git a/app/logger/log.go b/app/logger/log.go index a1ac3b35..99826bcf 100644 --- a/app/logger/log.go +++ b/app/logger/log.go @@ -5,7 +5,7 @@ import "go.uber.org/zap" var DefaultLogger *zap.Logger func init() { - DefaultLogger, _ = zap.NewDevelopment() + DefaultLogger, _ = zap.NewDevelopment(zap.IncreaseLevel(zap.InfoLevel)) } func Default() *zap.Logger { diff --git a/cmd/node/node.go b/cmd/node/node.go index d9433a35..ae6c4e80 100644 --- a/cmd/node/node.go +++ b/cmd/node/node.go @@ -10,6 +10,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/service/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/api" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/configuration" + "github.com/anytypeio/go-anytype-infrastructure-experiments/service/file" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/dialer" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/rpc/server" @@ -96,6 +97,7 @@ func Bootstrap(a *app.App) { Register(node.New()). Register(secure.New()). Register(server.New()). + Register(&file.Service{}). Register(dialer.New()). Register(pool.NewPool()). Register(configuration.New()). diff --git a/cmd/nodesgen/nodemap.yml b/cmd/nodesgen/nodemap.yml index d7b776aa..6a5ae28b 100644 --- a/cmd/nodesgen/nodemap.yml +++ b/cmd/nodesgen/nodemap.yml @@ -1,9 +1,13 @@ nodes: - grpcAddresses: - "127.0.0.1:4430" - - "127.0.0.1:4431" apiPort: "8080" - grpcAddresses: - - "127.0.0.1:4432" - - "127.0.0.1:4433" + - "127.0.0.1:4431" apiPort: "8081" + - grpcAddresses: + - "127.0.0.1:4432" + apiPort: "8082" + - grpcAddresses: + - "127.0.0.1:4433" + apiPort: "8083" diff --git a/etc/config.1.yml b/etc/config.1.yml index 093d1ef7..0b704d76 100644 --- a/etc/config.1.yml +++ b/etc/config.1.yml @@ -1,16 +1,20 @@ anytype: - swarmKey: "/key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec" - + swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec grpcServer: listenAddrs: - - "127.0.0.1:4431" - -peerList: - myId: - peerId: "12D3KooWA4FLWvrMbCtp2MbzKcC5RRN7HqxxBxPcSADFfzrGiW3U" - privKey: "InCGjb55V9+jj2PebUExUuwrpOIBc4hmgk2dSqyk3k4DjmgrdoNVuFe7xCFaFdUVb0RJYj6A+OTp2yXASTmq2w==" - remote: - - peerId: "12D3KooWHJpSEMQUZCyK8TK181LhjzntWjKfXDr7MWks9cw41R2C" - addr: "127.0.0.1:4430" - - peerId: "12D3KooWK6c1CPLL4Bvjim9A9SDRmehy12hYjbqX1VASHKfH7W7H" - addr: "127.0.0.1:4432" + - 127.0.0.1:4432 +account: + peerId: 12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw + signingKey: 3iiLPj6wMUQpPwTBNZcUgkbXub1jumg4AEV9LfMyFHZVc84GLyAjVbVvH6EAGhcNrxRxL82aW4BimhDZCpLsRCqx5vwj + encryptionKey: JgG4CcCbae1qEpe7mKXzp7m5hNc56SSyZd9DwUaEStKJrq7RToAC2Vgd3i6hKRwa58zCWeN6Wjc3o6qrdKPEPRvcyEPysamajVo5mdQiUgWAmr97pGEsyjuRjQoC2GY2LvLiEQxEgwFgJxKGMHMiaWMtDfxCDUaDEm4bu5RdMhqRZekAWho6c3WoEeruSr14iX1TrocFNfBkBY7CjEw8kcywXCTNgtvhb2Qiwgj5AxEF4wyw4bzaNA9ctXb1hoHPFVMu6C51pkFY7jUD9zwyH3ukgnAewkGAcPNbKmaTAtMosKRVaAN97mAwXh2VRt1hWmRvVk7r76EjnVKhD4vbsKZc56RVcHTVWRVdhU7FGyPsiE5rSQAz1JQGYzxnZpX7EG77CyrmUGyfueVfRHhwY2oq8A4uQCRaQxSaJHYLowjXSxh8DQ2V6MTqyzti32C27utBYdHzLVCJSGkmdzGwrFcHqsq7nLDxmvJVErPvyReixEe8kFmqopJ3e6LLm8WdYw9K6JYBjXnEfwPzm7Von9sf3dcaGDUHYfttMyeke7fAXJkvPRje69hYVyzdQGAauuojzGkkvQWCSMK1KCMNMznRaPDCNvofrQhYrub24WhmwpKhorufdfW8Cb4T6reBDCtaWVsbuinjtL6F6Sui5aYHJFLJ6e4pPewr1P4EuZYRbMBZwN5KvDLhTGLBuBnaTqUUdF6bj2U22NoRYMogiHiftqKqiexKNDXX1Zg9RQEvxgjuVo6SBW42mVEA8agrLhruRqCmiduJxVrfqLNGeYXHXrcmMEgW7uosJbPXvTcfRvdFWS1ov7oSALvj6vhDQ28Yi9D2ETNdNsfVWAFQuwvPpW7CHQGXTitprVbqH8JYxNZuGygcLmr5efbB22Vzu4ntd1HoraQpG12qeDEUA7tXYUpoYyuSdWwKPjSAMtaQcCSfVrhKQHQuKJargrVrez8vjWuwLfvSucV7ZHe7gjqvYgULdE1ubRCRSd7DuLjEN2Vd6obzV2c3MRet7ZSf4Sp88WM5AuTyW7BjArBc4S3gUQ8rYaiZ8Tu7NCxkEzbFwWRaemZkwfvcsX3XxqjyF37tFSGkEqE5kuBvpZW72675LkDffj7kH1zA8yE6dVujJjWsNYVFJWndUtz5Vy2KCdZAbBgq19q4AtsxWPodU2N3yZXzFAFAzTrxS6V4P7Scpdau1avgRvHLcBQPunA37xaYMy8YMifJwtmRY25mnAQwZAk3eANk7tXwZd58SDnciLNvARJvwKzTQBXcshkwyy52SX8XmXDJsPnRLaHmiYBJ63Yzr5XpZuuAtxb9qrWG2NHCNxfomHokWacV1hjZPPd6ZxT1FuRozB6Qt2NLcyqY7bnTcQJb1jPUaTAGXXCR8WVmmmYo2fDQe8CdBmgyPvbzNTEJUyScBz4RdycB5PZap4SurJCWtHbuMyQbQUB6jJgURDstfXS5Akfe4oruNq9rnYcNtnsDJPtrhXHBqzDizmf1BDxR5FB2RCxzCgeAfg8WQ1Ug9PVAGTzob6ZqCrGXzWXEUniZnf1vjr7QhGKBYXEX9SWDoSMUpP4FreVDTnx15ijRZTV3p8xG5fE9e36TnugRVvTyq7XzmyPBjW2r66f1bior +apiServer: + port: "8081" +nodes: + - peerId: 12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1 + address: 127.0.0.1:4430 + signingKey: 3id6ddLcoNoe9rDgGM88ET8T6TnvHm5GFqFdN6kBzn7Q8d6VUGgjeT59CNWFiaofdeRnHBvX2A5ZacMXvfwaYEFuCbug + encryptionKey: JgG4CcCbae1qEpe7mKpBzsHjZhXUmDSNVNX2B1gxFZsJyMX4V6kBQUott9zRWyeXaW1ZmpzuxDXnwSQpAnNurhXyGa9iQaAPqzY9A9VWBPD33Yy1eW7TRuVemzToh8jJQKQKnZNbF8ucTWV9qahusKzyvN8uyhrqoW2tAPfA9S3E3ognCuqbLSW6yjE2rBKayvyS1BVwzjSd6FZK4DDyjfU3pbEVjut3wytGEAn9af6sNMmyCnf2MX5vLovWs9rU8av61wD4z7HTsXyGFx4K75N4Go249Hpe9SKAT6HxhRc3yvj63krPLiQV5yMuH2UeMUXBDekUQyNmBEdn9wrur7mLqB67Bc6tcc2PP8XApBCdWJHvHjN4FktSpaG5vbCqoZbLD1oCbk36q2x9s6XM8pydVqD1J9P3nTbfgMb5pJCTFjNtgKeuKv6wjfJeA9jF1VhcJQisfsahgv9MvZ9M8FJpZTq1zKUhYDCRnZxUkraoMS5yNNVdDzaUckKEDthqik7BMWCWT79vq7uVgMwEvGwGi76gtoMg1159bbPMLZ4bdPVfhH2S9QjPrzQfwZSrzB2YeVPjWpaXDeLDity5H8n1NK2oniAQR6gE71n81neSptsuhV6o6QpQ89AU8y57XmEsou4VEryn8vUxBHhULLxrLNUouxyWamCeFiDjk5cSN6koQsf9BYKSNTPFTrwjTKForDokMhcPdMtFktKwjv7u9UEGcY4MKvNzZZkc77gHiP8bqVtdNNoLpTFUC5SZ9i7bKdHvK12HpSy7yzzPeMXJ9UwhLxkok1g81ngTbN1yxRhvYXyHZFtguCR9kvGojDjka91MTBtk551qDw9eCn2xZT9U8jqzBCjdpvSg3mRWKMPnYAGB7m7u1ye165wyGFvzcHAx3vtXjxAqLUeKYZCjv2m6V9D2Y4qH1TQNddWqH14T1JVMis971UCH9Ddpj6a3387oUnufD1P6HZN2ieJCvptrmbGVvxJYYSvmVf1dkwbtqurDRNWD7TJ7gf6iqSP549C9bxP4GpLt3ygjHmMtcuUzstBuztvunJUnQhfnJxqU6LjRdsFzm53wGWgXNxab7ZvQcPyLwsevn1b98FGPnVpS5iY4LjmqW4ugrC6HgrbsjrXiKzR1yZKhLQkCbLzPoaHb8iB5iBnCr7d4yf5CtfpFRqgoqMFdK5LNZYmDX4HzUKN6A7wC3gGiSRFTLcgGZeSMkB5Pa61CZBU7WCQgFxykycE9HRA7PiQa496GWDCV15teToCpFRsAa6jDmR1MGXPeLRqQgve49VXnQN5FL7c1VuEv5SWjeTuCnMB47DJKBaP7eKJNKgLwETALzSCMF3nRiRgeb15kfoS4BbrJ5yupjrvwmbmvNg1AYFFS5sYNWft7K8v87wQvBakRtGP71Kp8NX77XFtu6xdB7sR6jpfC6qJPyB9akWNXgCrWy9kE4ih42gwAZdUugNZ9YtEsgRM3pwb6qJhkAPyEJtrxrja859PCAgqPSQiPQN33PaMkgQ6HJknu8CrjKRiXAycZ16KLUkHV64TNhEjPTcX1a7rqpD131AYMWX8d7CCdc9Ys7RUb6BwguuNSh8rJK3x4AkMDSUsaE8ynKvpC7RXZpJ9Nxfhd + - peerId: 12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw + address: 127.0.0.1:4432 + signingKey: 3iiLPj6wMUQpPwTBNZcUgkbXub1jumg4AEV9LfMyFHZVc84GLyAjVbVvH6EAGhcNrxRxL82aW4BimhDZCpLsRCqx5vwj + encryptionKey: JgG4CcCbae1qEpe7mKXzp7m5hNc56SSyZd9DwUaEStKJrq7RToAC2Vgd3i6hKRwa58zCWeN6Wjc3o6qrdKPEPRvcyEPysamajVo5mdQiUgWAmr97pGEsyjuRjQoC2GY2LvLiEQxEgwFgJxKGMHMiaWMtDfxCDUaDEm4bu5RdMhqRZekAWho6c3WoEeruSr14iX1TrocFNfBkBY7CjEw8kcywXCTNgtvhb2Qiwgj5AxEF4wyw4bzaNA9ctXb1hoHPFVMu6C51pkFY7jUD9zwyH3ukgnAewkGAcPNbKmaTAtMosKRVaAN97mAwXh2VRt1hWmRvVk7r76EjnVKhD4vbsKZc56RVcHTVWRVdhU7FGyPsiE5rSQAz1JQGYzxnZpX7EG77CyrmUGyfueVfRHhwY2oq8A4uQCRaQxSaJHYLowjXSxh8DQ2V6MTqyzti32C27utBYdHzLVCJSGkmdzGwrFcHqsq7nLDxmvJVErPvyReixEe8kFmqopJ3e6LLm8WdYw9K6JYBjXnEfwPzm7Von9sf3dcaGDUHYfttMyeke7fAXJkvPRje69hYVyzdQGAauuojzGkkvQWCSMK1KCMNMznRaPDCNvofrQhYrub24WhmwpKhorufdfW8Cb4T6reBDCtaWVsbuinjtL6F6Sui5aYHJFLJ6e4pPewr1P4EuZYRbMBZwN5KvDLhTGLBuBnaTqUUdF6bj2U22NoRYMogiHiftqKqiexKNDXX1Zg9RQEvxgjuVo6SBW42mVEA8agrLhruRqCmiduJxVrfqLNGeYXHXrcmMEgW7uosJbPXvTcfRvdFWS1ov7oSALvj6vhDQ28Yi9D2ETNdNsfVWAFQuwvPpW7CHQGXTitprVbqH8JYxNZuGygcLmr5efbB22Vzu4ntd1HoraQpG12qeDEUA7tXYUpoYyuSdWwKPjSAMtaQcCSfVrhKQHQuKJargrVrez8vjWuwLfvSucV7ZHe7gjqvYgULdE1ubRCRSd7DuLjEN2Vd6obzV2c3MRet7ZSf4Sp88WM5AuTyW7BjArBc4S3gUQ8rYaiZ8Tu7NCxkEzbFwWRaemZkwfvcsX3XxqjyF37tFSGkEqE5kuBvpZW72675LkDffj7kH1zA8yE6dVujJjWsNYVFJWndUtz5Vy2KCdZAbBgq19q4AtsxWPodU2N3yZXzFAFAzTrxS6V4P7Scpdau1avgRvHLcBQPunA37xaYMy8YMifJwtmRY25mnAQwZAk3eANk7tXwZd58SDnciLNvARJvwKzTQBXcshkwyy52SX8XmXDJsPnRLaHmiYBJ63Yzr5XpZuuAtxb9qrWG2NHCNxfomHokWacV1hjZPPd6ZxT1FuRozB6Qt2NLcyqY7bnTcQJb1jPUaTAGXXCR8WVmmmYo2fDQe8CdBmgyPvbzNTEJUyScBz4RdycB5PZap4SurJCWtHbuMyQbQUB6jJgURDstfXS5Akfe4oruNq9rnYcNtnsDJPtrhXHBqzDizmf1BDxR5FB2RCxzCgeAfg8WQ1Ug9PVAGTzob6ZqCrGXzWXEUniZnf1vjr7QhGKBYXEX9SWDoSMUpP4FreVDTnx15ijRZTV3p8xG5fE9e36TnugRVvTyq7XzmyPBjW2r66f1bior diff --git a/etc/configs/1.yml b/etc/configs/1.yml new file mode 100755 index 00000000..1dc6ffa1 --- /dev/null +++ b/etc/configs/1.yml @@ -0,0 +1,32 @@ +anytype: + swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec +grpcServer: + listenAddrs: + - 127.0.0.1:4431 + tls: false +account: + peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ + signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS + encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab +apiServer: + port: "8081" +nodes: + - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT + address: 127.0.0.1:4430 + signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub + encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH + - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ + address: 127.0.0.1:4431 + signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS + encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab + - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm + address: 127.0.0.1:4432 + signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS + encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq + - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 + address: 127.0.0.1:4433 + signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER + encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL +space: + gcttl: 0 + syncperiod: 0 diff --git a/etc/configs/12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1.yml b/etc/configs/12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1.yml deleted file mode 100755 index 2e552e35..00000000 --- a/etc/configs/12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1.yml +++ /dev/null @@ -1,22 +0,0 @@ -anytype: - swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec -grpcServer: - listenAddrs: - - 127.0.0.1:4430 - - 127.0.0.1:4431 - tls: false -account: - peerId: 12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1 - signingKey: 3id6ddLcoNoe9rDgGM88ET8T6TnvHm5GFqFdN6kBzn7Q8d6VUGgjeT59CNWFiaofdeRnHBvX2A5ZacMXvfwaYEFuCbug - encryptionKey: JgG4CcCbae1qEpe7mKpBzsHjZhXUmDSNVNX2B1gxFZsJyMX4V6kBQUott9zRWyeXaW1ZmpzuxDXnwSQpAnNurhXyGa9iQaAPqzY9A9VWBPD33Yy1eW7TRuVemzToh8jJQKQKnZNbF8ucTWV9qahusKzyvN8uyhrqoW2tAPfA9S3E3ognCuqbLSW6yjE2rBKayvyS1BVwzjSd6FZK4DDyjfU3pbEVjut3wytGEAn9af6sNMmyCnf2MX5vLovWs9rU8av61wD4z7HTsXyGFx4K75N4Go249Hpe9SKAT6HxhRc3yvj63krPLiQV5yMuH2UeMUXBDekUQyNmBEdn9wrur7mLqB67Bc6tcc2PP8XApBCdWJHvHjN4FktSpaG5vbCqoZbLD1oCbk36q2x9s6XM8pydVqD1J9P3nTbfgMb5pJCTFjNtgKeuKv6wjfJeA9jF1VhcJQisfsahgv9MvZ9M8FJpZTq1zKUhYDCRnZxUkraoMS5yNNVdDzaUckKEDthqik7BMWCWT79vq7uVgMwEvGwGi76gtoMg1159bbPMLZ4bdPVfhH2S9QjPrzQfwZSrzB2YeVPjWpaXDeLDity5H8n1NK2oniAQR6gE71n81neSptsuhV6o6QpQ89AU8y57XmEsou4VEryn8vUxBHhULLxrLNUouxyWamCeFiDjk5cSN6koQsf9BYKSNTPFTrwjTKForDokMhcPdMtFktKwjv7u9UEGcY4MKvNzZZkc77gHiP8bqVtdNNoLpTFUC5SZ9i7bKdHvK12HpSy7yzzPeMXJ9UwhLxkok1g81ngTbN1yxRhvYXyHZFtguCR9kvGojDjka91MTBtk551qDw9eCn2xZT9U8jqzBCjdpvSg3mRWKMPnYAGB7m7u1ye165wyGFvzcHAx3vtXjxAqLUeKYZCjv2m6V9D2Y4qH1TQNddWqH14T1JVMis971UCH9Ddpj6a3387oUnufD1P6HZN2ieJCvptrmbGVvxJYYSvmVf1dkwbtqurDRNWD7TJ7gf6iqSP549C9bxP4GpLt3ygjHmMtcuUzstBuztvunJUnQhfnJxqU6LjRdsFzm53wGWgXNxab7ZvQcPyLwsevn1b98FGPnVpS5iY4LjmqW4ugrC6HgrbsjrXiKzR1yZKhLQkCbLzPoaHb8iB5iBnCr7d4yf5CtfpFRqgoqMFdK5LNZYmDX4HzUKN6A7wC3gGiSRFTLcgGZeSMkB5Pa61CZBU7WCQgFxykycE9HRA7PiQa496GWDCV15teToCpFRsAa6jDmR1MGXPeLRqQgve49VXnQN5FL7c1VuEv5SWjeTuCnMB47DJKBaP7eKJNKgLwETALzSCMF3nRiRgeb15kfoS4BbrJ5yupjrvwmbmvNg1AYFFS5sYNWft7K8v87wQvBakRtGP71Kp8NX77XFtu6xdB7sR6jpfC6qJPyB9akWNXgCrWy9kE4ih42gwAZdUugNZ9YtEsgRM3pwb6qJhkAPyEJtrxrja859PCAgqPSQiPQN33PaMkgQ6HJknu8CrjKRiXAycZ16KLUkHV64TNhEjPTcX1a7rqpD131AYMWX8d7CCdc9Ys7RUb6BwguuNSh8rJK3x4AkMDSUsaE8ynKvpC7RXZpJ9Nxfhd -apiServer: - port: "8080" -nodes: - - peerId: 12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1 - address: 127.0.0.1:4430 - signingKey: 3id6ddLcoNoe9rDgGM88ET8T6TnvHm5GFqFdN6kBzn7Q8d6VUGgjeT59CNWFiaofdeRnHBvX2A5ZacMXvfwaYEFuCbug - encryptionKey: JgG4CcCbae1qEpe7mKpBzsHjZhXUmDSNVNX2B1gxFZsJyMX4V6kBQUott9zRWyeXaW1ZmpzuxDXnwSQpAnNurhXyGa9iQaAPqzY9A9VWBPD33Yy1eW7TRuVemzToh8jJQKQKnZNbF8ucTWV9qahusKzyvN8uyhrqoW2tAPfA9S3E3ognCuqbLSW6yjE2rBKayvyS1BVwzjSd6FZK4DDyjfU3pbEVjut3wytGEAn9af6sNMmyCnf2MX5vLovWs9rU8av61wD4z7HTsXyGFx4K75N4Go249Hpe9SKAT6HxhRc3yvj63krPLiQV5yMuH2UeMUXBDekUQyNmBEdn9wrur7mLqB67Bc6tcc2PP8XApBCdWJHvHjN4FktSpaG5vbCqoZbLD1oCbk36q2x9s6XM8pydVqD1J9P3nTbfgMb5pJCTFjNtgKeuKv6wjfJeA9jF1VhcJQisfsahgv9MvZ9M8FJpZTq1zKUhYDCRnZxUkraoMS5yNNVdDzaUckKEDthqik7BMWCWT79vq7uVgMwEvGwGi76gtoMg1159bbPMLZ4bdPVfhH2S9QjPrzQfwZSrzB2YeVPjWpaXDeLDity5H8n1NK2oniAQR6gE71n81neSptsuhV6o6QpQ89AU8y57XmEsou4VEryn8vUxBHhULLxrLNUouxyWamCeFiDjk5cSN6koQsf9BYKSNTPFTrwjTKForDokMhcPdMtFktKwjv7u9UEGcY4MKvNzZZkc77gHiP8bqVtdNNoLpTFUC5SZ9i7bKdHvK12HpSy7yzzPeMXJ9UwhLxkok1g81ngTbN1yxRhvYXyHZFtguCR9kvGojDjka91MTBtk551qDw9eCn2xZT9U8jqzBCjdpvSg3mRWKMPnYAGB7m7u1ye165wyGFvzcHAx3vtXjxAqLUeKYZCjv2m6V9D2Y4qH1TQNddWqH14T1JVMis971UCH9Ddpj6a3387oUnufD1P6HZN2ieJCvptrmbGVvxJYYSvmVf1dkwbtqurDRNWD7TJ7gf6iqSP549C9bxP4GpLt3ygjHmMtcuUzstBuztvunJUnQhfnJxqU6LjRdsFzm53wGWgXNxab7ZvQcPyLwsevn1b98FGPnVpS5iY4LjmqW4ugrC6HgrbsjrXiKzR1yZKhLQkCbLzPoaHb8iB5iBnCr7d4yf5CtfpFRqgoqMFdK5LNZYmDX4HzUKN6A7wC3gGiSRFTLcgGZeSMkB5Pa61CZBU7WCQgFxykycE9HRA7PiQa496GWDCV15teToCpFRsAa6jDmR1MGXPeLRqQgve49VXnQN5FL7c1VuEv5SWjeTuCnMB47DJKBaP7eKJNKgLwETALzSCMF3nRiRgeb15kfoS4BbrJ5yupjrvwmbmvNg1AYFFS5sYNWft7K8v87wQvBakRtGP71Kp8NX77XFtu6xdB7sR6jpfC6qJPyB9akWNXgCrWy9kE4ih42gwAZdUugNZ9YtEsgRM3pwb6qJhkAPyEJtrxrja859PCAgqPSQiPQN33PaMkgQ6HJknu8CrjKRiXAycZ16KLUkHV64TNhEjPTcX1a7rqpD131AYMWX8d7CCdc9Ys7RUb6BwguuNSh8rJK3x4AkMDSUsaE8ynKvpC7RXZpJ9Nxfhd - - peerId: 12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw - address: 127.0.0.1:4432 - signingKey: 3iiLPj6wMUQpPwTBNZcUgkbXub1jumg4AEV9LfMyFHZVc84GLyAjVbVvH6EAGhcNrxRxL82aW4BimhDZCpLsRCqx5vwj - encryptionKey: JgG4CcCbae1qEpe7mKXzp7m5hNc56SSyZd9DwUaEStKJrq7RToAC2Vgd3i6hKRwa58zCWeN6Wjc3o6qrdKPEPRvcyEPysamajVo5mdQiUgWAmr97pGEsyjuRjQoC2GY2LvLiEQxEgwFgJxKGMHMiaWMtDfxCDUaDEm4bu5RdMhqRZekAWho6c3WoEeruSr14iX1TrocFNfBkBY7CjEw8kcywXCTNgtvhb2Qiwgj5AxEF4wyw4bzaNA9ctXb1hoHPFVMu6C51pkFY7jUD9zwyH3ukgnAewkGAcPNbKmaTAtMosKRVaAN97mAwXh2VRt1hWmRvVk7r76EjnVKhD4vbsKZc56RVcHTVWRVdhU7FGyPsiE5rSQAz1JQGYzxnZpX7EG77CyrmUGyfueVfRHhwY2oq8A4uQCRaQxSaJHYLowjXSxh8DQ2V6MTqyzti32C27utBYdHzLVCJSGkmdzGwrFcHqsq7nLDxmvJVErPvyReixEe8kFmqopJ3e6LLm8WdYw9K6JYBjXnEfwPzm7Von9sf3dcaGDUHYfttMyeke7fAXJkvPRje69hYVyzdQGAauuojzGkkvQWCSMK1KCMNMznRaPDCNvofrQhYrub24WhmwpKhorufdfW8Cb4T6reBDCtaWVsbuinjtL6F6Sui5aYHJFLJ6e4pPewr1P4EuZYRbMBZwN5KvDLhTGLBuBnaTqUUdF6bj2U22NoRYMogiHiftqKqiexKNDXX1Zg9RQEvxgjuVo6SBW42mVEA8agrLhruRqCmiduJxVrfqLNGeYXHXrcmMEgW7uosJbPXvTcfRvdFWS1ov7oSALvj6vhDQ28Yi9D2ETNdNsfVWAFQuwvPpW7CHQGXTitprVbqH8JYxNZuGygcLmr5efbB22Vzu4ntd1HoraQpG12qeDEUA7tXYUpoYyuSdWwKPjSAMtaQcCSfVrhKQHQuKJargrVrez8vjWuwLfvSucV7ZHe7gjqvYgULdE1ubRCRSd7DuLjEN2Vd6obzV2c3MRet7ZSf4Sp88WM5AuTyW7BjArBc4S3gUQ8rYaiZ8Tu7NCxkEzbFwWRaemZkwfvcsX3XxqjyF37tFSGkEqE5kuBvpZW72675LkDffj7kH1zA8yE6dVujJjWsNYVFJWndUtz5Vy2KCdZAbBgq19q4AtsxWPodU2N3yZXzFAFAzTrxS6V4P7Scpdau1avgRvHLcBQPunA37xaYMy8YMifJwtmRY25mnAQwZAk3eANk7tXwZd58SDnciLNvARJvwKzTQBXcshkwyy52SX8XmXDJsPnRLaHmiYBJ63Yzr5XpZuuAtxb9qrWG2NHCNxfomHokWacV1hjZPPd6ZxT1FuRozB6Qt2NLcyqY7bnTcQJb1jPUaTAGXXCR8WVmmmYo2fDQe8CdBmgyPvbzNTEJUyScBz4RdycB5PZap4SurJCWtHbuMyQbQUB6jJgURDstfXS5Akfe4oruNq9rnYcNtnsDJPtrhXHBqzDizmf1BDxR5FB2RCxzCgeAfg8WQ1Ug9PVAGTzob6ZqCrGXzWXEUniZnf1vjr7QhGKBYXEX9SWDoSMUpP4FreVDTnx15ijRZTV3p8xG5fE9e36TnugRVvTyq7XzmyPBjW2r66f1bior diff --git a/etc/configs/12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw.yml b/etc/configs/12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw.yml deleted file mode 100755 index 10a49044..00000000 --- a/etc/configs/12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw.yml +++ /dev/null @@ -1,22 +0,0 @@ -anytype: - swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec -grpcServer: - listenAddrs: - - 127.0.0.1:4432 - - 127.0.0.1:4433 - tls: false -account: - peerId: 12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw - signingKey: 3iiLPj6wMUQpPwTBNZcUgkbXub1jumg4AEV9LfMyFHZVc84GLyAjVbVvH6EAGhcNrxRxL82aW4BimhDZCpLsRCqx5vwj - encryptionKey: JgG4CcCbae1qEpe7mKXzp7m5hNc56SSyZd9DwUaEStKJrq7RToAC2Vgd3i6hKRwa58zCWeN6Wjc3o6qrdKPEPRvcyEPysamajVo5mdQiUgWAmr97pGEsyjuRjQoC2GY2LvLiEQxEgwFgJxKGMHMiaWMtDfxCDUaDEm4bu5RdMhqRZekAWho6c3WoEeruSr14iX1TrocFNfBkBY7CjEw8kcywXCTNgtvhb2Qiwgj5AxEF4wyw4bzaNA9ctXb1hoHPFVMu6C51pkFY7jUD9zwyH3ukgnAewkGAcPNbKmaTAtMosKRVaAN97mAwXh2VRt1hWmRvVk7r76EjnVKhD4vbsKZc56RVcHTVWRVdhU7FGyPsiE5rSQAz1JQGYzxnZpX7EG77CyrmUGyfueVfRHhwY2oq8A4uQCRaQxSaJHYLowjXSxh8DQ2V6MTqyzti32C27utBYdHzLVCJSGkmdzGwrFcHqsq7nLDxmvJVErPvyReixEe8kFmqopJ3e6LLm8WdYw9K6JYBjXnEfwPzm7Von9sf3dcaGDUHYfttMyeke7fAXJkvPRje69hYVyzdQGAauuojzGkkvQWCSMK1KCMNMznRaPDCNvofrQhYrub24WhmwpKhorufdfW8Cb4T6reBDCtaWVsbuinjtL6F6Sui5aYHJFLJ6e4pPewr1P4EuZYRbMBZwN5KvDLhTGLBuBnaTqUUdF6bj2U22NoRYMogiHiftqKqiexKNDXX1Zg9RQEvxgjuVo6SBW42mVEA8agrLhruRqCmiduJxVrfqLNGeYXHXrcmMEgW7uosJbPXvTcfRvdFWS1ov7oSALvj6vhDQ28Yi9D2ETNdNsfVWAFQuwvPpW7CHQGXTitprVbqH8JYxNZuGygcLmr5efbB22Vzu4ntd1HoraQpG12qeDEUA7tXYUpoYyuSdWwKPjSAMtaQcCSfVrhKQHQuKJargrVrez8vjWuwLfvSucV7ZHe7gjqvYgULdE1ubRCRSd7DuLjEN2Vd6obzV2c3MRet7ZSf4Sp88WM5AuTyW7BjArBc4S3gUQ8rYaiZ8Tu7NCxkEzbFwWRaemZkwfvcsX3XxqjyF37tFSGkEqE5kuBvpZW72675LkDffj7kH1zA8yE6dVujJjWsNYVFJWndUtz5Vy2KCdZAbBgq19q4AtsxWPodU2N3yZXzFAFAzTrxS6V4P7Scpdau1avgRvHLcBQPunA37xaYMy8YMifJwtmRY25mnAQwZAk3eANk7tXwZd58SDnciLNvARJvwKzTQBXcshkwyy52SX8XmXDJsPnRLaHmiYBJ63Yzr5XpZuuAtxb9qrWG2NHCNxfomHokWacV1hjZPPd6ZxT1FuRozB6Qt2NLcyqY7bnTcQJb1jPUaTAGXXCR8WVmmmYo2fDQe8CdBmgyPvbzNTEJUyScBz4RdycB5PZap4SurJCWtHbuMyQbQUB6jJgURDstfXS5Akfe4oruNq9rnYcNtnsDJPtrhXHBqzDizmf1BDxR5FB2RCxzCgeAfg8WQ1Ug9PVAGTzob6ZqCrGXzWXEUniZnf1vjr7QhGKBYXEX9SWDoSMUpP4FreVDTnx15ijRZTV3p8xG5fE9e36TnugRVvTyq7XzmyPBjW2r66f1bior -apiServer: - port: "8081" -nodes: - - peerId: 12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1 - address: 127.0.0.1:4430 - signingKey: 3id6ddLcoNoe9rDgGM88ET8T6TnvHm5GFqFdN6kBzn7Q8d6VUGgjeT59CNWFiaofdeRnHBvX2A5ZacMXvfwaYEFuCbug - encryptionKey: JgG4CcCbae1qEpe7mKpBzsHjZhXUmDSNVNX2B1gxFZsJyMX4V6kBQUott9zRWyeXaW1ZmpzuxDXnwSQpAnNurhXyGa9iQaAPqzY9A9VWBPD33Yy1eW7TRuVemzToh8jJQKQKnZNbF8ucTWV9qahusKzyvN8uyhrqoW2tAPfA9S3E3ognCuqbLSW6yjE2rBKayvyS1BVwzjSd6FZK4DDyjfU3pbEVjut3wytGEAn9af6sNMmyCnf2MX5vLovWs9rU8av61wD4z7HTsXyGFx4K75N4Go249Hpe9SKAT6HxhRc3yvj63krPLiQV5yMuH2UeMUXBDekUQyNmBEdn9wrur7mLqB67Bc6tcc2PP8XApBCdWJHvHjN4FktSpaG5vbCqoZbLD1oCbk36q2x9s6XM8pydVqD1J9P3nTbfgMb5pJCTFjNtgKeuKv6wjfJeA9jF1VhcJQisfsahgv9MvZ9M8FJpZTq1zKUhYDCRnZxUkraoMS5yNNVdDzaUckKEDthqik7BMWCWT79vq7uVgMwEvGwGi76gtoMg1159bbPMLZ4bdPVfhH2S9QjPrzQfwZSrzB2YeVPjWpaXDeLDity5H8n1NK2oniAQR6gE71n81neSptsuhV6o6QpQ89AU8y57XmEsou4VEryn8vUxBHhULLxrLNUouxyWamCeFiDjk5cSN6koQsf9BYKSNTPFTrwjTKForDokMhcPdMtFktKwjv7u9UEGcY4MKvNzZZkc77gHiP8bqVtdNNoLpTFUC5SZ9i7bKdHvK12HpSy7yzzPeMXJ9UwhLxkok1g81ngTbN1yxRhvYXyHZFtguCR9kvGojDjka91MTBtk551qDw9eCn2xZT9U8jqzBCjdpvSg3mRWKMPnYAGB7m7u1ye165wyGFvzcHAx3vtXjxAqLUeKYZCjv2m6V9D2Y4qH1TQNddWqH14T1JVMis971UCH9Ddpj6a3387oUnufD1P6HZN2ieJCvptrmbGVvxJYYSvmVf1dkwbtqurDRNWD7TJ7gf6iqSP549C9bxP4GpLt3ygjHmMtcuUzstBuztvunJUnQhfnJxqU6LjRdsFzm53wGWgXNxab7ZvQcPyLwsevn1b98FGPnVpS5iY4LjmqW4ugrC6HgrbsjrXiKzR1yZKhLQkCbLzPoaHb8iB5iBnCr7d4yf5CtfpFRqgoqMFdK5LNZYmDX4HzUKN6A7wC3gGiSRFTLcgGZeSMkB5Pa61CZBU7WCQgFxykycE9HRA7PiQa496GWDCV15teToCpFRsAa6jDmR1MGXPeLRqQgve49VXnQN5FL7c1VuEv5SWjeTuCnMB47DJKBaP7eKJNKgLwETALzSCMF3nRiRgeb15kfoS4BbrJ5yupjrvwmbmvNg1AYFFS5sYNWft7K8v87wQvBakRtGP71Kp8NX77XFtu6xdB7sR6jpfC6qJPyB9akWNXgCrWy9kE4ih42gwAZdUugNZ9YtEsgRM3pwb6qJhkAPyEJtrxrja859PCAgqPSQiPQN33PaMkgQ6HJknu8CrjKRiXAycZ16KLUkHV64TNhEjPTcX1a7rqpD131AYMWX8d7CCdc9Ys7RUb6BwguuNSh8rJK3x4AkMDSUsaE8ynKvpC7RXZpJ9Nxfhd - - peerId: 12D3KooWT3c7Y5zvWhhjSxd5Ve3GKZi6WCsG6JHxcxgXixRFdBbw - address: 127.0.0.1:4432 - signingKey: 3iiLPj6wMUQpPwTBNZcUgkbXub1jumg4AEV9LfMyFHZVc84GLyAjVbVvH6EAGhcNrxRxL82aW4BimhDZCpLsRCqx5vwj - encryptionKey: JgG4CcCbae1qEpe7mKXzp7m5hNc56SSyZd9DwUaEStKJrq7RToAC2Vgd3i6hKRwa58zCWeN6Wjc3o6qrdKPEPRvcyEPysamajVo5mdQiUgWAmr97pGEsyjuRjQoC2GY2LvLiEQxEgwFgJxKGMHMiaWMtDfxCDUaDEm4bu5RdMhqRZekAWho6c3WoEeruSr14iX1TrocFNfBkBY7CjEw8kcywXCTNgtvhb2Qiwgj5AxEF4wyw4bzaNA9ctXb1hoHPFVMu6C51pkFY7jUD9zwyH3ukgnAewkGAcPNbKmaTAtMosKRVaAN97mAwXh2VRt1hWmRvVk7r76EjnVKhD4vbsKZc56RVcHTVWRVdhU7FGyPsiE5rSQAz1JQGYzxnZpX7EG77CyrmUGyfueVfRHhwY2oq8A4uQCRaQxSaJHYLowjXSxh8DQ2V6MTqyzti32C27utBYdHzLVCJSGkmdzGwrFcHqsq7nLDxmvJVErPvyReixEe8kFmqopJ3e6LLm8WdYw9K6JYBjXnEfwPzm7Von9sf3dcaGDUHYfttMyeke7fAXJkvPRje69hYVyzdQGAauuojzGkkvQWCSMK1KCMNMznRaPDCNvofrQhYrub24WhmwpKhorufdfW8Cb4T6reBDCtaWVsbuinjtL6F6Sui5aYHJFLJ6e4pPewr1P4EuZYRbMBZwN5KvDLhTGLBuBnaTqUUdF6bj2U22NoRYMogiHiftqKqiexKNDXX1Zg9RQEvxgjuVo6SBW42mVEA8agrLhruRqCmiduJxVrfqLNGeYXHXrcmMEgW7uosJbPXvTcfRvdFWS1ov7oSALvj6vhDQ28Yi9D2ETNdNsfVWAFQuwvPpW7CHQGXTitprVbqH8JYxNZuGygcLmr5efbB22Vzu4ntd1HoraQpG12qeDEUA7tXYUpoYyuSdWwKPjSAMtaQcCSfVrhKQHQuKJargrVrez8vjWuwLfvSucV7ZHe7gjqvYgULdE1ubRCRSd7DuLjEN2Vd6obzV2c3MRet7ZSf4Sp88WM5AuTyW7BjArBc4S3gUQ8rYaiZ8Tu7NCxkEzbFwWRaemZkwfvcsX3XxqjyF37tFSGkEqE5kuBvpZW72675LkDffj7kH1zA8yE6dVujJjWsNYVFJWndUtz5Vy2KCdZAbBgq19q4AtsxWPodU2N3yZXzFAFAzTrxS6V4P7Scpdau1avgRvHLcBQPunA37xaYMy8YMifJwtmRY25mnAQwZAk3eANk7tXwZd58SDnciLNvARJvwKzTQBXcshkwyy52SX8XmXDJsPnRLaHmiYBJ63Yzr5XpZuuAtxb9qrWG2NHCNxfomHokWacV1hjZPPd6ZxT1FuRozB6Qt2NLcyqY7bnTcQJb1jPUaTAGXXCR8WVmmmYo2fDQe8CdBmgyPvbzNTEJUyScBz4RdycB5PZap4SurJCWtHbuMyQbQUB6jJgURDstfXS5Akfe4oruNq9rnYcNtnsDJPtrhXHBqzDizmf1BDxR5FB2RCxzCgeAfg8WQ1Ug9PVAGTzob6ZqCrGXzWXEUniZnf1vjr7QhGKBYXEX9SWDoSMUpP4FreVDTnx15ijRZTV3p8xG5fE9e36TnugRVvTyq7XzmyPBjW2r66f1bior diff --git a/etc/configs/2.yml b/etc/configs/2.yml new file mode 100755 index 00000000..d1756bd3 --- /dev/null +++ b/etc/configs/2.yml @@ -0,0 +1,32 @@ +anytype: + swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec +grpcServer: + listenAddrs: + - 127.0.0.1:4432 + tls: false +account: + peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm + signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS + encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq +apiServer: + port: "8082" +nodes: + - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT + address: 127.0.0.1:4430 + signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub + encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH + - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ + address: 127.0.0.1:4431 + signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS + encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab + - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm + address: 127.0.0.1:4432 + signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS + encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq + - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 + address: 127.0.0.1:4433 + signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER + encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL +space: + gcttl: 0 + syncperiod: 0 diff --git a/etc/configs/3.yml b/etc/configs/3.yml new file mode 100755 index 00000000..29fe1911 --- /dev/null +++ b/etc/configs/3.yml @@ -0,0 +1,32 @@ +anytype: + swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec +grpcServer: + listenAddrs: + - 127.0.0.1:4430 + tls: false +account: + peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT + signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub + encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH +apiServer: + port: "8080" +nodes: + - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT + address: 127.0.0.1:4430 + signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub + encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH + - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ + address: 127.0.0.1:4431 + signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS + encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab + - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm + address: 127.0.0.1:4432 + signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS + encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq + - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 + address: 127.0.0.1:4433 + signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER + encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL +space: + gcttl: 0 + syncperiod: 0 diff --git a/etc/configs/4.yml b/etc/configs/4.yml new file mode 100755 index 00000000..0c5540a9 --- /dev/null +++ b/etc/configs/4.yml @@ -0,0 +1,32 @@ +anytype: + swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec +grpcServer: + listenAddrs: + - 127.0.0.1:4433 + tls: false +account: + peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 + signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER + encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL +apiServer: + port: "8083" +nodes: + - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT + address: 127.0.0.1:4430 + signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub + encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH + - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ + address: 127.0.0.1:4431 + signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS + encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab + - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm + address: 127.0.0.1:4432 + signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS + encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq + - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 + address: 127.0.0.1:4433 + signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER + encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL +space: + gcttl: 0 + syncperiod: 0 diff --git a/service/file/service.go b/service/file/service.go new file mode 100644 index 00000000..b0dc5af0 --- /dev/null +++ b/service/file/service.go @@ -0,0 +1,122 @@ +package file + +import ( + "context" + "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/service/configuration" + "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool" + "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool/handler" + "github.com/anytypeio/go-anytype-infrastructure-experiments/syncproto" + "github.com/gogo/protobuf/proto" + "go.uber.org/zap" + "math/rand" + "sync/atomic" + "time" +) + +var log = logger.NewNamed("file") + +const CName = "file" + +type Service struct { + pool pool.Pool + rndBuf []byte + conf configuration.Service + reqIn, reqOut uint64 + output, input uint64 +} + +func (s *Service) Init(ctx context.Context, a *app.App) (err error) { + s.pool = a.MustComponent(pool.CName).(pool.Pool) + s.conf = a.MustComponent(configuration.CName).(configuration.Service) + rand.Seed(time.Now().UnixNano()) + s.rndBuf = make([]byte, 1024*1024*5) + rand.Read(s.rndBuf) + return +} + +func (s *Service) Name() (name string) { + return CName +} + +func (s *Service) Run(ctx context.Context) (err error) { + s.pool.AddHandler(syncproto.MessageType_MessageTypeFile, handler.Reply{ReplyHandler: s}.Handle) + go s.bench() + go s.benchLog() + return nil +} + +func (s *Service) bench() { + ctx := context.Background() + for { + sleepTime := time.Second * time.Duration(rand.Intn(60)+10) + log.Info("next bench in", zap.Duration("dur", sleepTime)) + time.Sleep(sleepTime) + peer, err := s.conf.GetLast().OnePeer(ctx, fmt.Sprint(rand.Int())) + if err != nil { + log.Info("no peers") + continue + } + peerId := peer.Id() + for i := 0; i < 100000; i++ { + resp, e := s.pool.SendAndWaitResponse(ctx, peerId, &syncproto.Message{ + Header: &syncproto.Header{ + Type: syncproto.MessageType_MessageTypeFile, + }, + }) + if e != nil { + log.Error("go error", zap.Error(e)) + break + } + atomic.AddUint64(&s.input, uint64(len(resp.Data))) + atomic.AddUint64(&s.reqIn, 1) + } + } +} + +func (s *Service) benchLog() { + var prevRIn, prevROut, prevBIn, prevBOut uint64 + for { + time.Sleep(time.Second) + rIn := atomic.LoadUint64(&s.reqIn) + rOut := atomic.LoadUint64(&s.reqOut) + bIn := atomic.LoadUint64(&s.input) + bOut := atomic.LoadUint64(&s.output) + + log.Info("speed", + zap.Uint64("reqIn", rIn-prevRIn), + zap.Uint64("in MB", (bIn-prevBIn)/1024/1024), + zap.Uint64("reqOut", rOut-prevROut), + zap.Uint64("out MB", (bOut-prevBOut)/1024/1024), + ) + prevRIn = rIn + prevROut = rOut + prevBIn = bIn + prevBOut = bOut + } +} + +func (s *Service) Handle(ctx context.Context, req []byte) (rep proto.Marshaler, err error) { + size := rand.Intn(2*1024*1024) + 256 + atomic.AddUint64(&s.output, uint64(size)) + atomic.AddUint64(&s.reqOut, 1) + return s.newRandMsg(size), nil +} + +func (s *Service) newRandMsg(size int) *msg { + return &msg{b: s.rndBuf[:size]} +} + +func (s *Service) Close(ctx context.Context) (err error) { + return nil +} + +type msg struct { + b []byte +} + +func (m msg) Marshal() ([]byte, error) { + return m.b, nil +} diff --git a/service/net/pool/pool.go b/service/net/pool/pool.go index 97a7dcc1..f9d122d7 100644 --- a/service/net/pool/pool.go +++ b/service/net/pool/pool.go @@ -195,7 +195,6 @@ func (p *pool) SendAndWaitResponse(ctx context.Context, peerId string, msg *sync msg.GetHeader().RequestId = repId ch := make(chan Reply, 1) - log.With(zap.Uint64("reply id", repId)).Debug("adding waiter for reply id") p.waiters.Add(repId, &waiter{ch: ch}) defer p.waiters.Remove(repId) diff --git a/syncproto/proto/sync.proto b/syncproto/proto/sync.proto index dba2a079..79b2ef5a 100644 --- a/syncproto/proto/sync.proto +++ b/syncproto/proto/sync.proto @@ -22,6 +22,7 @@ enum MessageType { MessageTypeSystem = 0; MessageTypeSpace = 1; MessageTypeSync = 2; + MessageTypeFile = 3; } message System { diff --git a/syncproto/sync.pb.go b/syncproto/sync.pb.go index aa69618b..3b07151f 100644 --- a/syncproto/sync.pb.go +++ b/syncproto/sync.pb.go @@ -30,18 +30,21 @@ const ( MessageType_MessageTypeSystem MessageType = 0 MessageType_MessageTypeSpace MessageType = 1 MessageType_MessageTypeSync MessageType = 2 + MessageType_MessageTypeFile MessageType = 3 ) var MessageType_name = map[int32]string{ 0: "MessageTypeSystem", 1: "MessageTypeSpace", 2: "MessageTypeSync", + 3: "MessageTypeFile", } var MessageType_value = map[string]int32{ "MessageTypeSystem": 0, "MessageTypeSpace": 1, "MessageTypeSync": 2, + "MessageTypeFile": 3, } func (x MessageType) String() string { @@ -885,57 +888,58 @@ func init() { func init() { proto.RegisterFile("syncproto/proto/sync.proto", fileDescriptor_4b28dfdd48a89166) } var fileDescriptor_4b28dfdd48a89166 = []byte{ - // 799 bytes of a gzipped FileDescriptorProto + // 806 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0xd1, 0x6e, 0xe3, 0x44, 0x14, 0xf5, 0x24, 0x4e, 0xbc, 0xbe, 0xae, 0x5a, 0x33, 0xdb, 0x45, 0xc6, 0xac, 0x22, 0x2b, 0x02, - 0x61, 0x01, 0x72, 0x57, 0x81, 0x15, 0x12, 0x6f, 0xbb, 0xa1, 0x55, 0x22, 0x20, 0x89, 0x26, 0x49, + 0x61, 0x01, 0x72, 0x57, 0x81, 0x15, 0x12, 0x6f, 0xbb, 0xa5, 0x51, 0x22, 0x20, 0x89, 0x26, 0x49, 0x91, 0x78, 0x59, 0x4d, 0xed, 0xd9, 0x24, 0x8a, 0x3b, 0x36, 0x1e, 0x07, 0xc8, 0x5f, 0xec, 0x37, 0xf0, 0x0d, 0x48, 0x20, 0xbe, 0x80, 0xc7, 0x7d, 0xe4, 0x11, 0xb5, 0x12, 0x1f, 0x01, 0x2f, 0x68, 0xc6, 0x76, 0xe2, 0x66, 0xfb, 0x03, 0xfb, 0xd0, 0x66, 0xee, 0xb9, 0xe7, 0x5c, 0x9f, 0x1b, 0xdf, 0xb9, 0x01, 0x57, 0x6c, 0x79, 0x98, 0x66, 0x49, 0x9e, 0x9c, 0x15, 0xff, 0x65, 0x1c, 0xa8, 0x23, 0x36, 0x28, 0xdf, 0xe6, 0xdb, 0x94, 0xb9, 0x4f, 0xd2, 0xf5, 0xe2, 0x8c, 0x86, 0xb1, 0xfc, 0x0b, 0x97, 0x94, 0x2f, 0x98, 0x90, 0xc7, 0xf4, 0xaa, 0xd0, 0x88, 0x1a, 0x5e, 0x48, 0xdd, 0x4f, 0x2b, - 0x45, 0x9e, 0x31, 0x26, 0xf2, 0x24, 0xa3, 0x0b, 0xa6, 0xce, 0x7b, 0x8d, 0x8c, 0x0a, 0x76, 0xf7, - 0x02, 0x8c, 0x6f, 0x99, 0x10, 0x74, 0xc1, 0xf0, 0x47, 0xd0, 0x5e, 0x32, 0x1a, 0xb1, 0xcc, 0x41, - 0x1e, 0xf2, 0xad, 0xde, 0x49, 0x50, 0x9a, 0x08, 0x06, 0x0a, 0x26, 0x65, 0x1a, 0x63, 0xd0, 0x23, - 0x9a, 0x53, 0xa7, 0xe1, 0x21, 0xff, 0x88, 0xa8, 0x73, 0xf7, 0x17, 0x04, 0xed, 0x82, 0x86, 0x1d, - 0x30, 0xf2, 0x8c, 0x86, 0x6c, 0x18, 0xa9, 0x42, 0x47, 0xa4, 0x0a, 0xf1, 0x63, 0x30, 0x33, 0xf6, - 0xc3, 0x86, 0x89, 0x7c, 0x18, 0x29, 0xb5, 0x4e, 0xf6, 0x80, 0xd4, 0x65, 0x2c, 0x8d, 0xb7, 0xc3, - 0xc8, 0x69, 0xaa, 0x5c, 0x15, 0x62, 0x1f, 0x74, 0xe9, 0xc3, 0xd1, 0x3d, 0xe4, 0x1f, 0xf7, 0x4e, - 0x77, 0xbe, 0x4a, 0xe7, 0xb3, 0x6d, 0xca, 0x88, 0x62, 0xc8, 0x27, 0x44, 0xec, 0x6a, 0xb3, 0x18, - 0xf2, 0x97, 0x89, 0xd3, 0xf2, 0x90, 0x6f, 0x92, 0x3d, 0xd0, 0xfd, 0xb5, 0x09, 0xed, 0xe9, 0x56, - 0xe4, 0xec, 0x1a, 0x7f, 0x01, 0xe6, 0x92, 0xf2, 0x48, 0x2c, 0xe9, 0x9a, 0x95, 0xfd, 0xbe, 0xb7, - 0xab, 0x5b, 0x70, 0x82, 0x41, 0x45, 0x20, 0x7b, 0xae, 0xf4, 0x92, 0xae, 0xf8, 0x42, 0xd9, 0xb7, - 0x6a, 0x5e, 0x4a, 0xcd, 0x64, 0xc5, 0x17, 0x44, 0x31, 0xf0, 0x87, 0xd0, 0xa4, 0xe1, 0x5a, 0xf5, - 0x62, 0xf5, 0x1e, 0x1e, 0x12, 0x9f, 0x85, 0x6b, 0x22, 0xf3, 0xee, 0x53, 0x30, 0x07, 0xb5, 0xea, - 0x27, 0xea, 0xbd, 0x84, 0x49, 0x7c, 0xc9, 0x32, 0xb1, 0x4a, 0xb8, 0x32, 0x67, 0x92, 0x43, 0xd8, - 0xed, 0x82, 0x2e, 0x9f, 0x85, 0x5d, 0x78, 0xb0, 0xe1, 0xab, 0x9f, 0x67, 0xab, 0xeb, 0xa2, 0x0f, - 0x9d, 0xec, 0x62, 0xb7, 0x07, 0xcd, 0x67, 0xe1, 0x1a, 0x7f, 0x02, 0x2d, 0x96, 0x65, 0x49, 0x56, - 0x7a, 0x7e, 0x74, 0x68, 0xe5, 0x5c, 0x26, 0x49, 0xc1, 0x71, 0x5f, 0x21, 0x68, 0x29, 0x00, 0x07, - 0xa0, 0x87, 0x49, 0x54, 0x54, 0x3d, 0xee, 0xb9, 0xf7, 0xaa, 0x82, 0x7e, 0x12, 0x31, 0xa2, 0x78, + 0x45, 0x9e, 0x31, 0x26, 0xf2, 0x24, 0xa3, 0x0b, 0xa6, 0xce, 0x7b, 0x8d, 0x8c, 0x0a, 0x76, 0xb7, + 0x0f, 0xc6, 0xb7, 0x4c, 0x08, 0xba, 0x60, 0xf8, 0x23, 0x68, 0x2f, 0x19, 0x8d, 0x58, 0xe6, 0x20, + 0x0f, 0xf9, 0x56, 0xef, 0x24, 0x28, 0x4d, 0x04, 0x03, 0x05, 0x93, 0x32, 0x8d, 0x31, 0xe8, 0x11, + 0xcd, 0xa9, 0xd3, 0xf0, 0x90, 0x7f, 0x44, 0xd4, 0xb9, 0xfb, 0x0b, 0x82, 0x76, 0x41, 0xc3, 0x0e, + 0x18, 0x79, 0x46, 0x43, 0x36, 0x8c, 0x54, 0xa1, 0x23, 0x52, 0x85, 0xf8, 0x31, 0x98, 0x19, 0xfb, + 0x61, 0xc3, 0x44, 0x3e, 0x8c, 0x94, 0x5a, 0x27, 0x7b, 0x40, 0xea, 0x32, 0x96, 0xc6, 0xdb, 0x61, + 0xe4, 0x34, 0x55, 0xae, 0x0a, 0xb1, 0x0f, 0xba, 0xf4, 0xe1, 0xe8, 0x1e, 0xf2, 0x8f, 0x7b, 0xa7, + 0x3b, 0x5f, 0xa5, 0xf3, 0xd9, 0x36, 0x65, 0x44, 0x31, 0xe4, 0x13, 0x22, 0x76, 0xb5, 0x59, 0x0c, + 0xf9, 0xcb, 0xc4, 0x69, 0x79, 0xc8, 0x37, 0xc9, 0x1e, 0xe8, 0xfe, 0xda, 0x84, 0xf6, 0x74, 0x2b, + 0x72, 0x76, 0x8d, 0xbf, 0x00, 0x73, 0x49, 0x79, 0x24, 0x96, 0x74, 0xcd, 0xca, 0x7e, 0xdf, 0xdb, + 0xd5, 0x2d, 0x38, 0xc1, 0xa0, 0x22, 0x90, 0x3d, 0x57, 0x7a, 0x49, 0x57, 0x7c, 0xa1, 0xec, 0x5b, + 0x35, 0x2f, 0xa5, 0x66, 0xb2, 0xe2, 0x0b, 0xa2, 0x18, 0xf8, 0x43, 0x68, 0xd2, 0x70, 0xad, 0x7a, + 0xb1, 0x7a, 0x0f, 0x0f, 0x89, 0xcf, 0xc2, 0x35, 0x91, 0x79, 0xf7, 0x29, 0x98, 0x83, 0x5a, 0xf5, + 0x13, 0xf5, 0x5e, 0xc2, 0x24, 0xbe, 0x64, 0x99, 0x58, 0x25, 0x5c, 0x99, 0x33, 0xc9, 0x21, 0xec, + 0x76, 0x41, 0x97, 0xcf, 0xc2, 0x2e, 0x3c, 0xd8, 0xf0, 0xd5, 0xcf, 0xb3, 0xd5, 0x75, 0xd1, 0x87, + 0x4e, 0x76, 0xb1, 0xdb, 0x83, 0xe6, 0xb3, 0x70, 0x8d, 0x3f, 0x81, 0x16, 0xcb, 0xb2, 0x24, 0x2b, + 0x3d, 0x3f, 0x3a, 0xb4, 0x72, 0x21, 0x93, 0xa4, 0xe0, 0xb8, 0xaf, 0x10, 0xb4, 0x14, 0x80, 0x03, + 0xd0, 0xc3, 0x24, 0x2a, 0xaa, 0x1e, 0xf7, 0xdc, 0x7b, 0x55, 0xc1, 0x79, 0x12, 0x31, 0xa2, 0x78, 0xd8, 0x03, 0x2b, 0x62, 0x22, 0xcc, 0x56, 0x69, 0x2e, 0x7d, 0x37, 0x94, 0xef, 0x3a, 0xd4, 0x7d, 0x0a, 0xba, 0xe4, 0x63, 0x0b, 0x8c, 0xf9, 0xe8, 0xeb, 0xd1, 0xf8, 0xbb, 0x91, 0xad, 0x61, 0x0f, - 0x1e, 0xcf, 0x47, 0xd3, 0xf9, 0x64, 0x32, 0x26, 0xb3, 0xf3, 0xaf, 0x5e, 0x4c, 0xc8, 0x78, 0x36, - 0xee, 0x8f, 0xbf, 0x79, 0x71, 0x79, 0x4e, 0xa6, 0xc3, 0xf1, 0xc8, 0x86, 0xee, 0xbf, 0x6d, 0xd0, - 0xa7, 0x5b, 0x1e, 0xca, 0x09, 0x11, 0xe9, 0x7e, 0xb2, 0x4c, 0x52, 0x85, 0xf8, 0x73, 0x30, 0xae, - 0x8b, 0x61, 0x28, 0x9b, 0xac, 0xdb, 0xe5, 0x61, 0xd0, 0x4f, 0x78, 0xce, 0x78, 0x7e, 0x49, 0xe3, - 0x0d, 0x23, 0x15, 0xd5, 0xfd, 0x07, 0xc1, 0x51, 0x3d, 0x83, 0xbf, 0x04, 0x90, 0x33, 0x3e, 0x4f, - 0x23, 0x9a, 0x57, 0x63, 0xe1, 0xdc, 0xad, 0x34, 0xd8, 0xe5, 0x07, 0x1a, 0xa9, 0xb1, 0xf1, 0x05, - 0x9c, 0xbc, 0xdc, 0xc4, 0xb1, 0x24, 0x91, 0x62, 0xa6, 0xef, 0xb7, 0x72, 0xb1, 0x89, 0xe3, 0xa0, + 0x1e, 0xcf, 0x47, 0xd3, 0xf9, 0x64, 0x32, 0x26, 0xb3, 0x8b, 0xaf, 0x5e, 0x4c, 0xc8, 0x78, 0x36, + 0x3e, 0x1f, 0x7f, 0xf3, 0xe2, 0xf2, 0x82, 0x4c, 0x87, 0xe3, 0x91, 0x0d, 0xdd, 0x7f, 0xdb, 0xa0, + 0x4f, 0xb7, 0x3c, 0x94, 0x13, 0x22, 0xd2, 0xfd, 0x64, 0x99, 0xa4, 0x0a, 0xf1, 0xe7, 0x60, 0x5c, + 0x17, 0xc3, 0x50, 0x36, 0x59, 0xb7, 0xcb, 0xc3, 0xe0, 0x3c, 0xe1, 0x39, 0xe3, 0xf9, 0x25, 0x8d, + 0x37, 0x8c, 0x54, 0x54, 0xf7, 0x1f, 0x04, 0x47, 0xf5, 0x0c, 0xfe, 0x12, 0x40, 0xce, 0xf8, 0x3c, + 0x8d, 0x68, 0x5e, 0x8d, 0x85, 0x73, 0xb7, 0xd2, 0x60, 0x97, 0x1f, 0x68, 0xa4, 0xc6, 0xc6, 0x7d, + 0x38, 0x79, 0xb9, 0x89, 0x63, 0x49, 0x22, 0xc5, 0x4c, 0xdf, 0x6f, 0xa5, 0xbf, 0x89, 0xe3, 0xa0, 0x64, 0x0c, 0x34, 0x72, 0x28, 0xc2, 0x43, 0xb0, 0xf7, 0x90, 0x48, 0x13, 0x2e, 0x58, 0x39, 0x43, 0xef, 0xdf, 0x5b, 0xa8, 0xa0, 0x0c, 0x34, 0xf2, 0x86, 0xec, 0xb9, 0x01, 0xad, 0x1f, 0x65, 0x5f, 0xee, 0x1f, 0x08, 0x60, 0x6f, 0x1c, 0x9f, 0x42, 0x4b, 0x1a, 0x17, 0x0e, 0xf2, 0x9a, 0xbe, 0x49, 0x8a, 0x00, 0xfb, 0x60, 0x94, 0x9b, 0xc4, 0x69, 0x78, 0x4d, 0xdf, 0xea, 0x1d, 0x07, 0x34, 0x8c, - 0x03, 0x42, 0x7f, 0xea, 0x2b, 0x98, 0x54, 0x69, 0xfc, 0x2e, 0xb4, 0xe5, 0x0a, 0x29, 0x2f, 0xaa, - 0x49, 0xca, 0x08, 0x77, 0xe1, 0x48, 0x70, 0x9a, 0x8a, 0x65, 0x92, 0x4f, 0x68, 0xbe, 0x74, 0x74, - 0x55, 0xfe, 0x0e, 0x86, 0x9f, 0x00, 0x48, 0x76, 0xb1, 0x2b, 0xd4, 0x15, 0xb5, 0x7a, 0x76, 0xa0, - 0x36, 0xd2, 0x6c, 0x87, 0x93, 0x1a, 0xc7, 0xfd, 0xaf, 0x01, 0xba, 0xec, 0xd5, 0xfd, 0x0d, 0x81, - 0x51, 0x7d, 0x4b, 0x6f, 0x57, 0x0b, 0xbf, 0x23, 0x78, 0x50, 0xbd, 0x95, 0xb7, 0xcb, 0xfa, 0xc7, - 0x63, 0xb0, 0x6a, 0x6b, 0x16, 0x3f, 0x82, 0x77, 0x6a, 0x61, 0xb1, 0x0a, 0x6c, 0x0d, 0x9f, 0x82, - 0x5d, 0x87, 0xe5, 0xad, 0xb4, 0x11, 0x7e, 0x08, 0x27, 0x77, 0xc8, 0x3c, 0xb4, 0x1b, 0xcf, 0x3f, - 0xf8, 0xf3, 0xa6, 0x83, 0x5e, 0xdf, 0x74, 0xd0, 0xdf, 0x37, 0x1d, 0xf4, 0xea, 0xb6, 0xa3, 0xbd, - 0xbe, 0xed, 0x68, 0x7f, 0xdd, 0x76, 0xb4, 0xef, 0xe1, 0x6c, 0xf7, 0x8b, 0x78, 0xd5, 0x56, 0x1f, - 0x9f, 0xfd, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x71, 0xf4, 0xb0, 0xb9, 0x25, 0x07, 0x00, 0x00, + 0x03, 0x42, 0x7f, 0x3a, 0x57, 0x30, 0xa9, 0xd2, 0xf8, 0x5d, 0x68, 0xcb, 0x15, 0x52, 0x5e, 0x54, + 0x93, 0x94, 0x11, 0xee, 0xc2, 0x91, 0xe0, 0x34, 0x15, 0xcb, 0x24, 0x9f, 0xd0, 0x7c, 0xe9, 0xe8, + 0xaa, 0xfc, 0x1d, 0x0c, 0x3f, 0x01, 0x90, 0xec, 0x62, 0x57, 0xa8, 0x2b, 0x6a, 0xf5, 0xec, 0x40, + 0x6d, 0xa4, 0xd9, 0x0e, 0x27, 0x35, 0x8e, 0xfb, 0x5f, 0x03, 0x74, 0xd9, 0xab, 0xfb, 0x1b, 0x02, + 0xa3, 0xfa, 0x96, 0xde, 0xae, 0x16, 0x7e, 0x47, 0xf0, 0xa0, 0x7a, 0x2b, 0x6f, 0x97, 0xf5, 0x8f, + 0x23, 0xb0, 0x6a, 0x6b, 0x16, 0x3f, 0x82, 0x77, 0x6a, 0x61, 0xb1, 0x0a, 0x6c, 0x0d, 0x9f, 0x82, + 0x5d, 0x87, 0xe5, 0xad, 0xb4, 0x11, 0x7e, 0x08, 0x27, 0x77, 0xc8, 0x3c, 0xb4, 0x1b, 0x07, 0x60, + 0x7f, 0x15, 0x33, 0xbb, 0xf9, 0xfc, 0x83, 0x3f, 0x6f, 0x3a, 0xe8, 0xf5, 0x4d, 0x07, 0xfd, 0x7d, + 0xd3, 0x41, 0xaf, 0x6e, 0x3b, 0xda, 0xeb, 0xdb, 0x8e, 0xf6, 0xd7, 0x6d, 0x47, 0xfb, 0x1e, 0xce, + 0x76, 0x3f, 0x93, 0x57, 0x6d, 0xf5, 0xf1, 0xd9, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0x07, 0xa6, + 0xab, 0xcd, 0x3a, 0x07, 0x00, 0x00, } func (m *Message) Marshal() (dAtA []byte, err error) { From 88832596da6cb6a5985580152ca28659dc1a4b04 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Wed, 7 Sep 2022 13:01:15 +0300 Subject: [PATCH 02/10] WIP: files --- cmd/node/node.go | 2 +- etc/config.yml | 2 +- go.mod | 70 ++++- go.sum | 252 +++++++++++++-- service/file/blockservice.go | 57 ++++ service/file/filesync/protos/filesync.proto | 38 +++ service/file/ipfs/ipfs.go | 76 +++++ service/file/pogrebds/pogreb.go | 73 +++++ service/file/service.go | 291 +++++++++++++----- service/net/rpc/server/drpcserver.go | 2 + service/space/context.go | 22 ++ service/space/space.go | 8 +- .../space/spacesync/protos/spacesync.proto | 1 + 13 files changed, 766 insertions(+), 128 deletions(-) create mode 100644 service/file/blockservice.go create mode 100644 service/file/filesync/protos/filesync.proto create mode 100644 service/file/ipfs/ipfs.go create mode 100644 service/file/pogrebds/pogreb.go create mode 100644 service/space/context.go diff --git a/cmd/node/node.go b/cmd/node/node.go index ae6c4e80..5020fe12 100644 --- a/cmd/node/node.go +++ b/cmd/node/node.go @@ -97,7 +97,7 @@ func Bootstrap(a *app.App) { Register(node.New()). Register(secure.New()). Register(server.New()). - Register(&file.Service{}). + Register(file.New()). Register(dialer.New()). Register(pool.NewPool()). Register(configuration.New()). diff --git a/etc/config.yml b/etc/config.yml index 79754d42..c9b15df0 100644 --- a/etc/config.yml +++ b/etc/config.yml @@ -10,7 +10,7 @@ account: signingKey: 3id6ddLcoNoe9rDgGM88ET8T6TnvHm5GFqFdN6kBzn7Q8d6VUGgjeT59CNWFiaofdeRnHBvX2A5ZacMXvfwaYEFuCbug encryptionKey: JgG4CcCbae1qEpe7mKpBzsHjZhXUmDSNVNX2B1gxFZsJyMX4V6kBQUott9zRWyeXaW1ZmpzuxDXnwSQpAnNurhXyGa9iQaAPqzY9A9VWBPD33Yy1eW7TRuVemzToh8jJQKQKnZNbF8ucTWV9qahusKzyvN8uyhrqoW2tAPfA9S3E3ognCuqbLSW6yjE2rBKayvyS1BVwzjSd6FZK4DDyjfU3pbEVjut3wytGEAn9af6sNMmyCnf2MX5vLovWs9rU8av61wD4z7HTsXyGFx4K75N4Go249Hpe9SKAT6HxhRc3yvj63krPLiQV5yMuH2UeMUXBDekUQyNmBEdn9wrur7mLqB67Bc6tcc2PP8XApBCdWJHvHjN4FktSpaG5vbCqoZbLD1oCbk36q2x9s6XM8pydVqD1J9P3nTbfgMb5pJCTFjNtgKeuKv6wjfJeA9jF1VhcJQisfsahgv9MvZ9M8FJpZTq1zKUhYDCRnZxUkraoMS5yNNVdDzaUckKEDthqik7BMWCWT79vq7uVgMwEvGwGi76gtoMg1159bbPMLZ4bdPVfhH2S9QjPrzQfwZSrzB2YeVPjWpaXDeLDity5H8n1NK2oniAQR6gE71n81neSptsuhV6o6QpQ89AU8y57XmEsou4VEryn8vUxBHhULLxrLNUouxyWamCeFiDjk5cSN6koQsf9BYKSNTPFTrwjTKForDokMhcPdMtFktKwjv7u9UEGcY4MKvNzZZkc77gHiP8bqVtdNNoLpTFUC5SZ9i7bKdHvK12HpSy7yzzPeMXJ9UwhLxkok1g81ngTbN1yxRhvYXyHZFtguCR9kvGojDjka91MTBtk551qDw9eCn2xZT9U8jqzBCjdpvSg3mRWKMPnYAGB7m7u1ye165wyGFvzcHAx3vtXjxAqLUeKYZCjv2m6V9D2Y4qH1TQNddWqH14T1JVMis971UCH9Ddpj6a3387oUnufD1P6HZN2ieJCvptrmbGVvxJYYSvmVf1dkwbtqurDRNWD7TJ7gf6iqSP549C9bxP4GpLt3ygjHmMtcuUzstBuztvunJUnQhfnJxqU6LjRdsFzm53wGWgXNxab7ZvQcPyLwsevn1b98FGPnVpS5iY4LjmqW4ugrC6HgrbsjrXiKzR1yZKhLQkCbLzPoaHb8iB5iBnCr7d4yf5CtfpFRqgoqMFdK5LNZYmDX4HzUKN6A7wC3gGiSRFTLcgGZeSMkB5Pa61CZBU7WCQgFxykycE9HRA7PiQa496GWDCV15teToCpFRsAa6jDmR1MGXPeLRqQgve49VXnQN5FL7c1VuEv5SWjeTuCnMB47DJKBaP7eKJNKgLwETALzSCMF3nRiRgeb15kfoS4BbrJ5yupjrvwmbmvNg1AYFFS5sYNWft7K8v87wQvBakRtGP71Kp8NX77XFtu6xdB7sR6jpfC6qJPyB9akWNXgCrWy9kE4ih42gwAZdUugNZ9YtEsgRM3pwb6qJhkAPyEJtrxrja859PCAgqPSQiPQN33PaMkgQ6HJknu8CrjKRiXAycZ16KLUkHV64TNhEjPTcX1a7rqpD131AYMWX8d7CCdc9Ys7RUb6BwguuNSh8rJK3x4AkMDSUsaE8ynKvpC7RXZpJ9Nxfhd apiServer: - port: "8080" + port: "8084" nodes: - peerId: 12D3KooWMHuhZgK2skkLrvL51QQTXaXQKYy2QqfvPNBFnzR2ubA1 address: 127.0.0.1:4430 diff --git a/go.mod b/go.mod index 61ad4841..4f505ee8 100644 --- a/go.mod +++ b/go.mod @@ -3,20 +3,32 @@ module github.com/anytypeio/go-anytype-infrastructure-experiments go 1.18 require ( + github.com/akrylysov/pogreb v0.10.1 + github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab github.com/cespare/xxhash v1.1.0 github.com/goccy/go-graphviz v0.0.9 github.com/gogo/protobuf v1.3.2 github.com/huandu/skiplist v1.2.0 - github.com/ipfs/go-cid v0.1.0 + github.com/ipfs/go-block-format v0.0.3 + github.com/ipfs/go-blockservice v0.4.0 + github.com/ipfs/go-cid v0.3.0 + github.com/ipfs/go-datastore v0.6.0 + github.com/ipfs/go-ipfs-blockstore v1.2.0 + github.com/ipfs/go-ipfs-chunker v0.0.5 + github.com/ipfs/go-ipfs-exchange-interface v0.2.0 + github.com/ipfs/go-ipld-cbor v0.0.6 + github.com/ipfs/go-ipld-format v0.4.0 + github.com/ipfs/go-merkledag v0.7.0 + github.com/ipfs/go-unixfs v0.4.0 github.com/libp2p/go-libp2p v0.20.3 github.com/libp2p/go-libp2p-core v0.16.1 github.com/mr-tron/base58 v1.2.0 - github.com/multiformats/go-multibase v0.0.3 - github.com/multiformats/go-multihash v0.1.0 + github.com/multiformats/go-multibase v0.1.1 + github.com/multiformats/go-multihash v0.2.1 github.com/stretchr/testify v1.8.0 github.com/zeebo/blake3 v0.2.3 - go.uber.org/zap v1.21.0 + go.uber.org/zap v1.23.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v3 v3.0.1 storj.io/drpc v0.0.32 @@ -24,35 +36,61 @@ require ( require ( github.com/OneOfOne/xxhash v1.2.8 // indirect - github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 // indirect + github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect github.com/btcsuite/btcd v0.22.1 // indirect github.com/btcsuite/btcd/btcec/v2 v2.1.3 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/fogleman/gg v1.3.0 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect - github.com/klauspost/cpuid/v2 v2.0.12 // indirect - github.com/libp2p/go-buffer-pool v0.0.2 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/ipfs/bbloom v0.0.4 // indirect + github.com/ipfs/go-bitfield v1.0.0 // indirect + github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect + github.com/ipfs/go-ipfs-files v0.0.3 // indirect + github.com/ipfs/go-ipfs-posinfo v0.0.1 // indirect + github.com/ipfs/go-ipfs-util v0.0.2 // indirect + github.com/ipfs/go-ipld-legacy v0.1.1 // indirect + github.com/ipfs/go-log v1.0.5 // indirect + github.com/ipfs/go-log/v2 v2.5.1 // indirect + github.com/ipfs/go-metrics-interface v0.0.1 // indirect + github.com/ipfs/go-verifcid v0.0.2 // indirect + github.com/ipld/go-codec-dagpb v1.5.0 // indirect + github.com/ipld/go-ipld-prime v0.18.0 // indirect + github.com/jbenet/goprocess v0.1.4 // indirect + github.com/klauspost/cpuid/v2 v2.1.1 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-openssl v0.0.7 // indirect - github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect github.com/minio/sha256-simd v1.0.0 // indirect - github.com/multiformats/go-base32 v0.0.3 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.1.0 // indirect github.com/multiformats/go-multiaddr v0.5.0 // indirect - github.com/multiformats/go-multicodec v0.4.1 // indirect + github.com/multiformats/go-multicodec v0.5.0 // indirect github.com/multiformats/go-varint v0.0.6 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/whyrusleeping/cbor-gen v0.0.0-20220514204315-f29c37e9c44c // indirect + github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect github.com/zeebo/errs v1.2.2 // indirect - go.uber.org/atomic v1.9.0 // indirect + go.opentelemetry.io/otel v1.9.0 // indirect + go.opentelemetry.io/otel/trace v1.9.0 // indirect + go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect + golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 // indirect golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect - golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 // indirect - gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - lukechampine.com/blake3 v1.1.6 // indirect + golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b // indirect + golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect + golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 // indirect + golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect + google.golang.org/protobuf v1.28.1 // indirect + lukechampine.com/blake3 v1.1.7 // indirect ) diff --git a/go.sum b/go.sum index 3aecda9c..2ce17444 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,11 @@ +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= +github.com/akrylysov/pogreb v0.10.1 h1:FqlR8VR7uCbJdfUob916tPM+idpKgeESDXOA1K0DK4w= +github.com/akrylysov/pogreb v0.10.1/go.mod h1:pNs6QmpQ1UlTJKDezuRWmaqkgUE2TuU0YTWyqJZ7+lI= +github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a h1:E/8AP5dFtMhl5KPJz66Kt9G0n+7Sn41Fy1wv9/jHOrc= +github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 h1:kMPPZYmJgbs4AJfodbg2OCXg5cp+9LPAJcLZJqmcghk= github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232/go.mod h1:+PeHBAWp7gUh/yw6uAauKc5ku0w4cFNg6DUddGxoGq0= github.com/awalterschulze/gographviz v0.0.0-20190522210029-fa59802746ab h1:+cdNqtOJWjvepyhxy23G7z7vmpYCoC65AP0nqi1f53s= @@ -17,6 +22,7 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/corona10/goimagehash v1.0.2 h1:pUfB0LnsJASMPGEZLj7tGY251vF+qLGqOgEP4rUs6kA= github.com/corona10/goimagehash v1.0.2/go.mod h1:/l9umBhvcHQXVtQO1V6Gp1yD20STawkhRnnX0D1bvVI= +github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -26,73 +32,222 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +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/goccy/go-graphviz v0.0.9 h1:s/FMMJ1Joj6La3S5ApO3Jk2cwM4LpXECC2muFx3IPQQ= github.com/goccy/go-graphviz v0.0.9/go.mod h1:wXVsXxmyMQU6TN3zGRttjNn3h+iCAS7xQFC6TlNvLhk= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.4.0/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.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= +github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo= +github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= +github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= +github.com/ipfs/go-bitfield v1.0.0 h1:y/XHm2GEmD9wKngheWNNCNL0pzrWXZwCdQGv1ikXknQ= +github.com/ipfs/go-bitfield v1.0.0/go.mod h1:N/UiujQy+K+ceU1EF5EkVd1TNqevLrCQMIcAEPrdtus= +github.com/ipfs/go-bitswap v0.8.0 h1:UEV7kogQu2iGggkE9GhLykDrRCUpsNnpu2NODww/srw= +github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= +github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= +github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-blockservice v0.4.0 h1:7MUijAW5SqdsqEW/EhnNFRJXVF8mGU5aGhZ3CQaCWbY= +github.com/ipfs/go-blockservice v0.4.0/go.mod h1:kRjO3wlGW9mS1aKuiCeGhx9K1DagQ10ACpVO59qgAx4= +github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= +github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.1.0 h1:YN33LQulcRHjfom/i25yoOZR4Telp1Hr/2RU3d0PnC0= -github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o= +github.com/ipfs/go-cid v0.3.0 h1:gT6Cbs6YePaBNc7l6v5EXt0xTMup1jGV5EU1N+QLVpY= +github.com/ipfs/go-cid v0.3.0/go.mod h1:P+HXFDF4CVhaVayiEb4wkAy7zBHxBwsJyt0Y5U6MLro= +github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= +github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw= +github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE= +github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ= +github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8= +github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8= +github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ= +github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= +github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= +github.com/ipfs/go-ipfs-exchange-interface v0.2.0 h1:8lMSJmKogZYNo2jjhUs0izT+dck05pqUw4mWNW9Pw6Y= +github.com/ipfs/go-ipfs-exchange-interface v0.2.0/go.mod h1:z6+RhJuDQbqKguVyslSOuVDhqF9JtTrO3eptSAiW2/Y= +github.com/ipfs/go-ipfs-exchange-offline v0.3.0 h1:c/Dg8GDPzixGd0MC8Jh6mjOwU57uYokgWRFidfvEkuA= +github.com/ipfs/go-ipfs-files v0.0.3 h1:ME+QnC3uOyla1ciRPezDW0ynQYK2ikOh9OCKAEg4uUA= +github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= +github.com/ipfs/go-ipfs-posinfo v0.0.1 h1:Esoxj+1JgSjX0+ylc0hUmJCOv6V2vFoZiETLR6OtpRs= +github.com/ipfs/go-ipfs-posinfo v0.0.1/go.mod h1:SwyeVP+jCwiDu0C313l/8jg6ZxM0qqtlt2a0vILTc1A= +github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY= +github.com/ipfs/go-ipfs-routing v0.2.1 h1:E+whHWhJkdN9YeoHZNj5itzc+OR292AJ2uE9FFiW0BY= +github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= +github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= +github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-ipld-cbor v0.0.6 h1:pYuWHyvSpIsOOLw4Jy7NbBkCyzLDcl64Bf/LZW7eBQ0= +github.com/ipfs/go-ipld-cbor v0.0.6/go.mod h1:ssdxxaLJPXH7OjF5V4NSjBbcfh+evoR4ukuru0oPXMA= +github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= +github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= +github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= +github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ= +github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= +github.com/ipfs/go-ipld-legacy v0.1.1 h1:BvD8PEuqwBHLTKqlGFTHSwrwFOMkVESEvwIYwR2cdcc= +github.com/ipfs/go-ipld-legacy v0.1.1/go.mod h1:8AyKFCjgRPsQFf15ZQgDB8Din4DML/fOmKZkkFkrIEg= +github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= +github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= +github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/ipfs/go-merkledag v0.7.0 h1:PHdWOGwx+J2uRAuP9Mu+bz89ulmf3W2QmbSS/N6O29U= +github.com/ipfs/go-merkledag v0.7.0/go.mod h1:/1cuN4VbcDn/xbVMAqjPUwejJYr8W9SvizmyYLU/B7k= +github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= +github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= +github.com/ipfs/go-peertaskqueue v0.7.0 h1:VyO6G4sbzX80K58N60cCaHsSsypbUNs1GjO5seGNsQ0= +github.com/ipfs/go-unixfs v0.4.0 h1:qSyyxfB/OiDdWHYiSbyaqKC7zfSE/TFL0QdwkRjBm20= +github.com/ipfs/go-unixfs v0.4.0/go.mod h1:I7Nqtm06HgOOd+setAoCU6rf/HgVFHE+peeNuOv/5+g= +github.com/ipfs/go-verifcid v0.0.2 h1:XPnUv0XmdH+ZIhLGKg6U2vaPaRDXb9urMyNVCE7uvTs= +github.com/ipfs/go-verifcid v0.0.2/go.mod h1:40cD9x1y4OWnFXbLNJYRe7MpNvWlMn3LZAG5Wb4xnPU= +github.com/ipld/go-codec-dagpb v1.5.0 h1:RspDRdsJpLfgCI0ONhTAnbHdySGD4t+LHSPK4X1+R0k= +github.com/ipld/go-codec-dagpb v1.5.0/go.mod h1:0yRIutEFD8o1DGVqw4RSHh+BUTlJA9XWldxaaWR/o4g= +github.com/ipld/go-ipld-prime v0.9.1-0.20210324083106-dc342a9917db/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= +github.com/ipld/go-ipld-prime v0.18.0 h1:xUk7NUBSWHEXdjiOu2sLXouFJOMs0yoYzeI5RAqhYQo= +github.com/ipld/go-ipld-prime v0.18.0/go.mod h1:735yXW548CKrLwVCYXzqx90p5deRJMVVxM9eJ4Qe+qE= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= +github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= 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/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0= +github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +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/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/libp2p/go-eventbus v0.2.1 h1:VanAdErQnpTioN2TowqNcOijf6YwhuODe4pPKSDpxGc= github.com/libp2p/go-libp2p v0.20.3 h1:tjjDNfp7FqdI/7v1rXtB/BtELaPlAThL2uzlj18kcrw= github.com/libp2p/go-libp2p v0.20.3/go.mod h1:I+vndVanE/p/SjFbnA+BEmmfAUEpWxrdXZeyQ1Dus5c= +github.com/libp2p/go-libp2p-asn-util v0.2.0 h1:rg3+Os8jbnO5DxkC7K/Utdi+DkY3q/d1/1q+8WeNAsw= github.com/libp2p/go-libp2p-core v0.16.1 h1:bWoiEBqVkpJ13hbv/f69tHODp86t6mvc4fBN4DkK73M= github.com/libp2p/go-libp2p-core v0.16.1/go.mod h1:O3i/7y+LqUb0N+qhzXjBjjpchgptWAVMG1Voegk7b4c= +github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8= +github.com/libp2p/go-libp2p-netutil v0.1.0 h1:zscYDNVEcGxyUpMd0JReUZTrpMfia8PmLKcKF72EAMQ= +github.com/libp2p/go-libp2p-peerstore v0.6.0 h1:HJminhQSGISBIRb93N6WK3t6Fa8OOTnHd/VBjL4mY5A= +github.com/libp2p/go-libp2p-record v0.1.0 h1:wHwBGbFzymoIl69BpgwIu0O6ta3TXGcMPvHUAcodzRc= +github.com/libp2p/go-libp2p-testing v0.9.2 h1:dCpODRtRaDZKF8HXT9qqqgON+OMEB423Knrgeod8j84= +github.com/libp2p/go-msgio v0.2.0 h1:W6shmB+FeynDrUVl2dgFQvzfBZcXiyqY4VmpQLu9FqU= +github.com/libp2p/go-nat v0.1.0 h1:MfVsH6DLcpa04Xr+p8hmVRG4juse0s3J8HyNWYHffXg= +github.com/libp2p/go-netroute v0.2.0 h1:0FpsbsvuSnAhXFnCY0VLFbJOzaK0VnP0r1QT/o4nWRE= github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw= github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/miekg/dns v1.1.43 h1:JKfpVSCB84vrAmHzyrsxB5NAr5kLoMXZArPSw7Qlgyg= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= -github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI= github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= github.com/multiformats/go-multiaddr v0.5.0 h1:i/JuOoVg4szYQ4YEzDGtb2h0o8M7CG/Yq6cGlcjWZpM= github.com/multiformats/go-multiaddr v0.5.0/go.mod h1:3KAxNkUqLTJ20AAwN4XVX4kZar+bR+gh4zgbfr3SNug= -github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= -github.com/multiformats/go-multicodec v0.4.1 h1:BSJbf+zpghcZMZrwTYBGwy0CPcVZGWiC72Cp8bBd4R4= -github.com/multiformats/go-multicodec v0.4.1/go.mod h1:1Hj/eHRaVWSXiSNNfcEPcwZleTmdNP81xlxDLnWU9GQ= +github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= +github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= +github.com/multiformats/go-multicodec v0.5.0 h1:EgU6cBe/D7WRwQb1KmnBvU7lrcFGMggZVTPtOW9dDHs= +github.com/multiformats/go-multicodec v0.5.0/go.mod h1:DiY2HFaEp5EhEXb/iYzVAunmyX/aSFMxq2KMKfWEues= +github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= -github.com/multiformats/go-multihash v0.1.0 h1:CgAgwqk3//SVEw3T+6DqI4mWMyRuDwZtOWcJT0q9+EA= -github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84= +github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= +github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-multistream v0.3.3 h1:d5PZpjwRgVlbwfdTDjife7XszfZd8KYWfROYFlGcR8o= github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 h1:BvoENQQU+fZ9uukda/RzCAL/191HHwJA5b13R6diVlY= github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= 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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e h1:ZOcivgkkFRnjfoTcGsDq3UQYiBmekwLA+qg0OjyB/ls= +github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -106,6 +261,16 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/warpfork/go-testmark v0.10.0 h1:E86YlUMYfwIacEsQGlnTvjk1IgYkyTGjPhF0RnwTCmw= +github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a h1:G++j5e0OC488te356JvdhaM8YS6nMsjLAYF7JxCv07w= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= +github.com/whyrusleeping/cbor-gen v0.0.0-20220514204315-f29c37e9c44c h1:6VPKXBDRt7mDUyiHx9X8ROnPYFDf3L7OfEuKCI5dZDI= +github.com/whyrusleeping/cbor-gen v0.0.0-20220514204315-f29c37e9c44c/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= +github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= +github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= +github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= github.com/yuin/goldmark v1.1.27/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= @@ -117,43 +282,60 @@ github.com/zeebo/errs v1.2.2 h1:5NFypMTuSdoySVTqlNs1dEoU21QVamMQJxW/Fii5O7g= github.com/zeebo/errs v1.2.2/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= +go.opentelemetry.io/otel v1.9.0 h1:8WZNQFIB2a71LnANS9JeyidJKKGOOremcUtb/OtHISw= +go.opentelemetry.io/otel v1.9.0/go.mod h1:np4EoPGzoPs3O67xUVNoPPcmSvsfOxNlNA4F4AC+0Eo= +go.opentelemetry.io/otel/trace v1.9.0 h1:oZaCNJUjWcg60VXWee8lJKlqhPbXAPB51URuR47pQYc= +go.opentelemetry.io/otel/trace v1.9.0/go.mod h1:2737Q0MuG8q1uILYm2YYVkAyLtOofiTNGg6VODnOiPo= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= -go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM= +golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= 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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/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-20190620200207-3b0461eec859/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b h1:ZmngSVLe/wycRns9MKikG9OWIEjGcGAkacif7oYQaUY= +golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= 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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190219092855-153ac476189d/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-20190302025703-b6889370fb10/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -162,14 +344,23 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/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-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/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-20220704084225-05e143d24a9e/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-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -178,21 +369,28 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T 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-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/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= -lukechampine.com/blake3 v1.1.6 h1:H3cROdztr7RCfoaTpGZFQsrqvweFLrqS73j7L7cmR5c= -lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= +lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= storj.io/drpc v0.0.32 h1:5p5ZwsK/VOgapaCu+oxaPVwO6UwIs+iwdMiD50+R4PI= storj.io/drpc v0.0.32/go.mod h1:6rcOyR/QQkSTX/9L5ZGtlZaE2PtXTTZl8d+ulSeeYEg= diff --git a/service/file/blockservice.go b/service/file/blockservice.go new file mode 100644 index 00000000..b231b8a7 --- /dev/null +++ b/service/file/blockservice.go @@ -0,0 +1,57 @@ +package file + +import ( + "context" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + blockstore "github.com/ipfs/go-ipfs-blockstore" + exchange "github.com/ipfs/go-ipfs-exchange-interface" +) + +// client get: local -> remote +// client put: local -> remote +// client delete: local -> remote +// client clear: local +// +// node get: ds +// node put: valid -> ds +// node delete: valid -> ds +type ipfsBlockService struct{} + +func (bs *ipfsBlockService) GetBlock(ctx context.Context, c cid.Cid) (blocks.Block, error) { + //TODO implement me + panic("implement me") +} + +func (bs *ipfsBlockService) GetBlocks(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + //TODO implement me + panic("implement me") +} + +func (bs *ipfsBlockService) Blockstore() blockstore.Blockstore { + return nil +} + +func (bs *ipfsBlockService) Exchange() exchange.Interface { + return nil +} + +func (bs *ipfsBlockService) AddBlock(ctx context.Context, o blocks.Block) error { + //TODO implement me + panic("implement me") +} + +func (bs *ipfsBlockService) AddBlocks(ctx context.Context, blocks []blocks.Block) error { + //TODO implement me + panic("implement me") +} + +func (bs *ipfsBlockService) DeleteBlock(ctx context.Context, o cid.Cid) error { + //TODO implement me + panic("implement me") +} + +func (bs *ipfsBlockService) Close() error { + //TODO implement me + panic("implement me") +} diff --git a/service/file/filesync/protos/filesync.proto b/service/file/filesync/protos/filesync.proto new file mode 100644 index 00000000..99a00317 --- /dev/null +++ b/service/file/filesync/protos/filesync.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; +package anytype; +option go_package = "service/space/spacesync"; + +message BlockSync { + string spaceId = 1; + repeated bytes cids = 2; + repeated bytes data = 3; +} + +message Msg { + +} + +service Space { + rpc Diff(Msg) returns (Msg); + + // subscription service: + // service.Broadcast(ss) + rpc ObjectSyncStream(stream Msg) returns (stream Msg); + + +} + +service File { + rpc GetCID(Msg) returns (Msg); + rpc PushCID(Msg) returns (Msg); +} + +service StrongLog { // ACL Log + rpc PushACL(Msg) returns (Msg); + rpc StartTransaction(); +} + +service Replication { + // +} + diff --git a/service/file/ipfs/ipfs.go b/service/file/ipfs/ipfs.go new file mode 100644 index 00000000..55115d6b --- /dev/null +++ b/service/file/ipfs/ipfs.go @@ -0,0 +1,76 @@ +package ipfs + +import ( + "context" + "fmt" + "github.com/ipfs/go-blockservice" + "github.com/ipfs/go-cid" + chunker "github.com/ipfs/go-ipfs-chunker" + cbor "github.com/ipfs/go-ipld-cbor" + ipld "github.com/ipfs/go-ipld-format" + "github.com/ipfs/go-merkledag" + "github.com/ipfs/go-unixfs/importer/balanced" + "github.com/ipfs/go-unixfs/importer/helpers" + ufsio "github.com/ipfs/go-unixfs/io" + "github.com/multiformats/go-multihash" + "io" +) + +func init() { + ipld.Register(cid.DagProtobuf, merkledag.DecodeProtobufBlock) + ipld.Register(cid.Raw, merkledag.DecodeRawBlock) + ipld.Register(cid.DagCBOR, cbor.DecodeBlock) // need to decode CBOR +} + +// NewProvider creates IPFS provider with given blockstore +func NewProvider(bs blockservice.BlockService) Provider { + return &provider{ + merkledag: merkledag.NewDAGService(bs), + } +} + +// Provider provides high level function for ipfs stack +type Provider interface { + // GetFile gets file from ipfs storage + GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) + // AddFile adds file to ipfs storage + AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) +} + +type provider struct { + merkledag ipld.DAGService +} + +func (p *provider) AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) { + prefix, err := merkledag.PrefixForCidVersion(1) + if err != nil { + return nil, fmt.Errorf("bad CID Version: %s", err) + } + + hashFunCode, ok := multihash.Names["sha2-256"] + if !ok { + return nil, fmt.Errorf("unrecognized hash function") + } + prefix.MhType = hashFunCode + prefix.MhLength = -1 + + dbp := helpers.DagBuilderParams{ + Dagserv: p.merkledag, + Maxlinks: helpers.DefaultLinksPerBlock, + CidBuilder: &prefix, + } + dbh, err := dbp.New(chunker.DefaultSplitter(r)) + if err != nil { + return nil, err + } + return balanced.Layout(dbh) +} + +func (p *provider) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { + n, err := p.merkledag.Get(ctx, c) + n.Links() + if err != nil { + return nil, err + } + return ufsio.NewDagReader(ctx, n, p.merkledag) +} diff --git a/service/file/pogrebds/pogreb.go b/service/file/pogrebds/pogreb.go new file mode 100644 index 00000000..7965800e --- /dev/null +++ b/service/file/pogrebds/pogreb.go @@ -0,0 +1,73 @@ +package pogrebds + +import ( + "context" + "fmt" + "github.com/akrylysov/pogreb" + "github.com/ipfs/go-datastore" + "github.com/ipfs/go-datastore/query" +) + +var _ datastore.Datastore = (*Datastore)(nil) +var _ datastore.PersistentDatastore = (*Datastore)(nil) + +// NewDatastore creates a new pogreb datastore. +func NewDatastore(path string, options *pogreb.Options) (d *Datastore, err error) { + d = &Datastore{} + if d.db, err = pogreb.Open(path, options); err != nil { + return nil, err + } + return +} + +type Datastore struct { + db *pogreb.DB +} + +func (d *Datastore) Get(_ context.Context, key datastore.Key) (value []byte, err error) { + return d.db.Get(key.Bytes()) +} + +func (d *Datastore) Has(ctx context.Context, key datastore.Key) (exists bool, err error) { + return d.db.Has(key.Bytes()) +} + +func (d *Datastore) GetSize(ctx context.Context, key datastore.Key) (size int, err error) { + val, err := d.Get(ctx, key) + if err != nil { + return + } + return len(val), err +} + +func (d *Datastore) Query(ctx context.Context, q query.Query) (query.Results, error) { + return nil, fmt.Errorf("pogrebds datastore doesn't support queries") +} + +func (d *Datastore) Put(_ context.Context, key datastore.Key, value []byte) error { + return d.db.Put(key.Bytes(), value) +} + +func (d *Datastore) Delete(_ context.Context, key datastore.Key) error { + return d.db.Delete(key.Bytes()) +} + +func (d *Datastore) Sync(ctx context.Context, prefix datastore.Key) error { + return d.db.Sync() +} + +func (d *Datastore) DiskUsage(ctx context.Context) (uint64, error) { + size, err := d.db.FileSize() + if err != nil { + return 0, err + } + return uint64(size), nil +} + +func (d *Datastore) Close() error { + return d.db.Close() +} + +func (d *Datastore) Metrics() *pogreb.Metrics { + return d.db.Metrics() +} diff --git a/service/file/service.go b/service/file/service.go index b0dc5af0..c295a1db 100644 --- a/service/file/service.go +++ b/service/file/service.go @@ -1,17 +1,38 @@ package file import ( + "bytes" "context" + "errors" "fmt" + "github.com/akrylysov/pogreb" "github.com/anytypeio/go-anytype-infrastructure-experiments/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/configuration" + "github.com/anytypeio/go-anytype-infrastructure-experiments/service/file/pogrebds" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool" "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool/handler" "github.com/anytypeio/go-anytype-infrastructure-experiments/syncproto" "github.com/gogo/protobuf/proto" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-blockservice" + "github.com/ipfs/go-cid" + "github.com/ipfs/go-datastore" + "github.com/ipfs/go-datastore/mount" + "github.com/ipfs/go-ipfs-blockstore" + chunker "github.com/ipfs/go-ipfs-chunker" + exchange "github.com/ipfs/go-ipfs-exchange-interface" + ipld "github.com/ipfs/go-ipld-format" + "github.com/ipfs/go-merkledag" + "github.com/ipfs/go-unixfs/importer/balanced" + "github.com/ipfs/go-unixfs/importer/helpers" + "github.com/ipfs/go-unixfs/importer/trickle" + ufsio "github.com/ipfs/go-unixfs/io" + "github.com/multiformats/go-multihash" "go.uber.org/zap" + "io" "math/rand" + "strings" "sync/atomic" "time" ) @@ -20,103 +41,211 @@ var log = logger.NewNamed("file") const CName = "file" -type Service struct { - pool pool.Pool - rndBuf []byte - conf configuration.Service - reqIn, reqOut uint64 - output, input uint64 +func New() Service { + return &service{} } -func (s *Service) Init(ctx context.Context, a *app.App) (err error) { +type Service interface { + app.ComponentRunnable +} + +type service struct { + pool pool.Pool + conf configuration.Service + + blockstore blockstore.Blockstore + blocservice blockservice.BlockService + exch exchange.Interface + merkledag ipld.DAGService +} + +func (s *service) Init(ctx context.Context, a *app.App) (err error) { + s.pool = a.MustComponent(pool.CName).(pool.Pool) s.conf = a.MustComponent(configuration.CName).(configuration.Service) - rand.Seed(time.Now().UnixNano()) - s.rndBuf = make([]byte, 1024*1024*5) - rand.Read(s.rndBuf) + ds, err := pogrebds.NewDatastore("/home/che/pogreb", &pogreb.Options{ + BackgroundSyncInterval: time.Minute, + }) + if err != nil { + return + } + mds := mount.New([]mount.Mount{ + { + Prefix: datastore.NewKey("/blocks"), + Datastore: ds, + }, + }) + + s.blockstore = blockstore.NewBlockstore(mds) + s.exch = &exch{s} + s.blocservice = blockservice.New(s.blockstore, s.exch) + s.merkledag = merkledag.NewDAGService(s.blocservice) return } -func (s *Service) Name() (name string) { +func (s *service) Name() (name string) { return CName } -func (s *Service) Run(ctx context.Context) (err error) { +func (s *service) Run(ctx context.Context) (err error) { s.pool.AddHandler(syncproto.MessageType_MessageTypeFile, handler.Reply{ReplyHandler: s}.Handle) - go s.bench() - go s.benchLog() - return nil -} - -func (s *Service) bench() { - ctx := context.Background() - for { - sleepTime := time.Second * time.Duration(rand.Intn(60)+10) - log.Info("next bench in", zap.Duration("dur", sleepTime)) - time.Sleep(sleepTime) - peer, err := s.conf.GetLast().OnePeer(ctx, fmt.Sprint(rand.Int())) - if err != nil { - log.Info("no peers") - continue - } - peerId := peer.Id() - for i := 0; i < 100000; i++ { - resp, e := s.pool.SendAndWaitResponse(ctx, peerId, &syncproto.Message{ - Header: &syncproto.Header{ - Type: syncproto.MessageType_MessageTypeFile, - }, - }) - if e != nil { - log.Error("go error", zap.Error(e)) - break + var addCount int64 + for i := 0; i < 8; i++ { + go func() { + ctx = context.Background() + var bufbuf = make([]byte, 10*1024) + for { + buf := bufbuf[:rand.Intn(4*1024)+1024] + rand.Read(buf) + bb := bytes.NewBuffer(buf) + n, e := s.AddFile(ctx, bb, nil) + if e != nil { + log.Error("AddFile error", zap.Error(e)) + } + s.GetFile(ctx, n.Cid()) + atomic.AddInt64(&addCount, 1) } - atomic.AddUint64(&s.input, uint64(len(resp.Data))) - atomic.AddUint64(&s.reqIn, 1) + }() + } + go func() { + var prev int64 + for { + time.Sleep(time.Second) + v := atomic.LoadInt64(&addCount) + fmt.Println("add", v-prev) + prev = v } - } -} - -func (s *Service) benchLog() { - var prevRIn, prevROut, prevBIn, prevBOut uint64 - for { - time.Sleep(time.Second) - rIn := atomic.LoadUint64(&s.reqIn) - rOut := atomic.LoadUint64(&s.reqOut) - bIn := atomic.LoadUint64(&s.input) - bOut := atomic.LoadUint64(&s.output) - - log.Info("speed", - zap.Uint64("reqIn", rIn-prevRIn), - zap.Uint64("in MB", (bIn-prevBIn)/1024/1024), - zap.Uint64("reqOut", rOut-prevROut), - zap.Uint64("out MB", (bOut-prevBOut)/1024/1024), - ) - prevRIn = rIn - prevROut = rOut - prevBIn = bIn - prevBOut = bOut - } -} - -func (s *Service) Handle(ctx context.Context, req []byte) (rep proto.Marshaler, err error) { - size := rand.Intn(2*1024*1024) + 256 - atomic.AddUint64(&s.output, uint64(size)) - atomic.AddUint64(&s.reqOut, 1) - return s.newRandMsg(size), nil -} - -func (s *Service) newRandMsg(size int) *msg { - return &msg{b: s.rndBuf[:size]} -} - -func (s *Service) Close(ctx context.Context) (err error) { + }() return nil } -type msg struct { - b []byte +func (s *service) GetBlock(ctx context.Context, k cid.Cid) (blocks.Block, error) { + blk, err := s.blockstore.Get(ctx, k) + if ipld.IsNotFound(err) { + return s.loadBlock(ctx, k) + } + return blk, err } -func (m msg) Marshal() ([]byte, error) { - return m.b, nil +func (s *service) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { + n, err := s.merkledag.Get(ctx, c) + if err != nil { + return nil, err + } + return ufsio.NewDagReader(ctx, n, s.merkledag) +} + +// AddParams contains all of the configurable parameters needed to specify the +// importing process of a file. +type AddParams struct { + Layout string + Chunker string + RawLeaves bool + Hidden bool + Shard bool + NoCopy bool + HashFun string +} + +// AddFile chunks and adds content to the DAGService from a reader. The content +// is stored as a UnixFS DAG (default for IPFS). It returns the root +// ipld.Node. +func (s *service) AddFile(ctx context.Context, r io.Reader, params *AddParams) (ipld.Node, error) { + if params == nil { + params = &AddParams{} + } + if params.HashFun == "" { + params.HashFun = "sha2-256" + } + + prefix, err := merkledag.PrefixForCidVersion(1) + if err != nil { + return nil, fmt.Errorf("bad CID Version: %s", err) + } + + hashFunCode, ok := multihash.Names[strings.ToLower(params.HashFun)] + if !ok { + return nil, fmt.Errorf("unrecognized hash function: %s", params.HashFun) + } + prefix.MhType = hashFunCode + prefix.MhLength = -1 + + dbp := helpers.DagBuilderParams{ + Dagserv: s.merkledag, + RawLeaves: params.RawLeaves, + Maxlinks: helpers.DefaultLinksPerBlock, + NoCopy: params.NoCopy, + CidBuilder: &prefix, + } + + chnk, err := chunker.FromString(r, params.Chunker) + if err != nil { + return nil, err + } + dbh, err := dbp.New(chnk) + if err != nil { + return nil, err + } + + var n ipld.Node + switch params.Layout { + case "trickle": + n, err = trickle.Layout(dbh) + case "balanced", "": + n, err = balanced.Layout(dbh) + default: + return nil, errors.New("invalid Layout") + } + return n, err +} + +func (s *service) GetBlocks(ctx context.Context, ks []cid.Cid) (<-chan blocks.Block, error) { + log.Info("GetBlocks") + out := make(chan blocks.Block) + go func() { + // TODO: make queue + defer close(out) + for _, k := range ks { + hit, err := s.GetBlock(ctx, k) + if err != nil { + select { + case <-ctx.Done(): + return + default: + continue + } + } + select { + case out <- hit: + case <-ctx.Done(): + return + } + } + }() + return out, nil +} + +func (s *service) NotifyNewBlocks(ctx context.Context, blocks ...blocks.Block) error { + return nil +} + +func (s *service) Handle(ctx context.Context, req []byte) (rep proto.Marshaler, err error) { + return nil, fmt.Errorf("not implemented") +} + +func (s *service) Close(ctx context.Context) (err error) { + return nil +} + +func (s *service) loadBlock(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { + log.Info("load block", zap.String("cid", k.String())) + return nil, fmt.Errorf("unable to load") +} + +type exch struct { + *service +} + +func (e *exch) Close() error { + return nil } diff --git a/service/net/rpc/server/drpcserver.go b/service/net/rpc/server/drpcserver.go index dcdf2156..684b6d40 100644 --- a/service/net/rpc/server/drpcserver.go +++ b/service/net/rpc/server/drpcserver.go @@ -50,6 +50,8 @@ func (s *drpcServer) Name() (name string) { func (s *drpcServer) Run(ctx context.Context) (err error) { s.drpcServer = drpcserver.New(s) + + s.drpcServer = drpcserver.New(mux) ctx, s.cancel = context.WithCancel(ctx) for _, addr := range s.config.ListenAddrs { tcpList, err := net.Listen("tcp", addr) diff --git a/service/space/context.go b/service/space/context.go new file mode 100644 index 00000000..50d076f1 --- /dev/null +++ b/service/space/context.go @@ -0,0 +1,22 @@ +package space + +import "context" + +type ctxKey int + +const ( + ctxKeySpaceId ctxKey = iota +) + +// CtxSpaceId gets spaceId from id. If spaceId is not found in context - it returns an empty string +func CtxSpaceId(ctx context.Context) (spaceId string) { + if val := ctx.Value(ctxKeySpaceId); val != nil { + return val.(string) + } + return +} + +// CtxWithSpaceId creates new context with spaceId value +func CtxWithSpaceId(ctx context.Context, spaceId string) context.Context { + return context.WithValue(ctx, ctxKeySpaceId, spaceId) +} diff --git a/service/space/space.go b/service/space/space.go index 776df945..511d0632 100644 --- a/service/space/space.go +++ b/service/space/space.go @@ -19,8 +19,6 @@ type Space interface { Close() error } -// - type space struct { id string conf configuration.Configuration @@ -79,6 +77,12 @@ func (s *space) Handle(ctx context.Context, msg *spacesync.Space) (repl *spacesy }}, nil } + /// + + /// + + /// + return nil, fmt.Errorf("unexpected request") } diff --git a/service/space/spacesync/protos/spacesync.proto b/service/space/spacesync/protos/spacesync.proto index b0b9cf0e..8d46ca0a 100644 --- a/service/space/spacesync/protos/spacesync.proto +++ b/service/space/spacesync/protos/spacesync.proto @@ -10,6 +10,7 @@ message Space { message Content { oneof value { DiffRange diffRange = 1; + } } } From 181d74a139368ac1b58d9702d9e151df1beba13b Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Sat, 12 Nov 2022 15:22:33 +0300 Subject: [PATCH 03/10] ipfs store + cache store impl --- common/commonfile/ipfsstore/cachestore.go | 118 ++++++++++ .../commonfile/ipfsstore/cachestore_test.go | 217 ++++++++++++++++++ common/commonfile/ipfsstore/ipfsstore.go | 19 ++ common/go.mod | 6 +- common/go.sum | 34 ++- 5 files changed, 391 insertions(+), 3 deletions(-) create mode 100644 common/commonfile/ipfsstore/cachestore.go create mode 100644 common/commonfile/ipfsstore/cachestore_test.go create mode 100644 common/commonfile/ipfsstore/ipfsstore.go diff --git a/common/commonfile/ipfsstore/cachestore.go b/common/commonfile/ipfsstore/cachestore.go new file mode 100644 index 00000000..44e5439f --- /dev/null +++ b/common/commonfile/ipfsstore/cachestore.go @@ -0,0 +1,118 @@ +package ipfsstore + +import ( + "context" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + format "github.com/ipfs/go-ipld-format" + "go.uber.org/zap" +) + +type CacheStore struct { + Cache IPFSStore + Origin IPFSStore +} + +func (c *CacheStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { + if b, err = c.Cache.Get(ctx, k); err != nil { + if format.IsNotFound(err) { + err = nil + } else { + return + } + } else { + return + } + if b, err = c.Origin.Get(ctx, k); err != nil { + return + } + if addErr := c.Cache.Add(ctx, []blocks.Block{b}); addErr != nil { + log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) + } + return +} + +func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + cachedCids, localErr := c.Cache.ExistsCids(ctx, ks) + var originCids []cid.Cid + if localErr != nil { + log.Error("hasCIDs error", zap.Error(localErr)) + originCids = ks + } else { + if len(cachedCids) != len(ks) { + set := cid.NewSet() + for _, cCid := range cachedCids { + set.Add(cCid) + } + originCids = ks[:0] + for _, k := range ks { + if !set.Has(k) { + originCids = append(originCids, k) + } + } + } + } + + if len(originCids) == 0 { + return c.Cache.GetMany(ctx, cachedCids) + } + + var results = make(chan blocks.Block) + + go func() { + defer close(results) + localResults := c.Cache.GetMany(ctx, cachedCids) + originResults := c.Origin.GetMany(ctx, originCids) + for { + var cb, ob blocks.Block + var cOk, oOk bool + select { + case cb, cOk = <-localResults: + if cOk { + results <- cb + } + case ob, oOk = <-originResults: + if oOk { + if addErr := c.Cache.Add(ctx, []blocks.Block{ob}); addErr != nil { + log.Error("add block to cache error", zap.Error(addErr)) + } + results <- ob + } + case <-ctx.Done(): + return + } + if !oOk && !cOk { + return + } + } + }() + + return results +} + +func (c *CacheStore) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) { + return c.Cache.ExistsCids(ctx, ks) +} + +func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { + if localErr := c.Cache.Add(ctx, b); localErr != nil { + log.Error("cache add error", zap.Error(localErr)) + } + return c.Origin.Add(ctx, b) +} + +func (c *CacheStore) Delete(ctx context.Context, k cid.Cid) error { + if localErr := c.Cache.Delete(ctx, k); localErr != nil { + if !format.IsNotFound(localErr) { + log.Error("error while delete block", zap.Error(localErr)) + } + } + return c.Origin.Delete(ctx, k) +} + +func (c *CacheStore) Close() (err error) { + if localErr := c.Cache.Close(); localErr != nil { + log.Error("error while closing cache store", zap.Error(localErr)) + } + return c.Origin.Close() +} diff --git a/common/commonfile/ipfsstore/cachestore_test.go b/common/commonfile/ipfsstore/cachestore_test.go new file mode 100644 index 00000000..63c9f4ff --- /dev/null +++ b/common/commonfile/ipfsstore/cachestore_test.go @@ -0,0 +1,217 @@ +package ipfsstore + +import ( + "context" + "fmt" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + format "github.com/ipfs/go-ipld-format" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" + "time" +) + +var ctx = context.Background() + +func TestCacheStore_Add(t *testing.T) { + t.Run("success", func(t *testing.T) { + cs := &CacheStore{ + Cache: newTestStore(nil), + Origin: newTestStore(nil), + } + defer cs.Close() + testBlocks := newTestBocks("1", "2", "3") + require.NoError(t, cs.Add(ctx, testBlocks)) + for _, b := range testBlocks { + gb, err := cs.Cache.Get(ctx, b.Cid()) + assert.NoError(t, err) + assert.NotNil(t, gb) + } + }) +} + +func TestCacheStore_Get(t *testing.T) { + t.Run("exists local", func(t *testing.T) { + testBlocks := newTestBocks("1", "2", "3") + cs := &CacheStore{ + Cache: newTestStore(testBlocks), + Origin: newTestStore(testBlocks), + } + defer cs.Close() + for _, b := range testBlocks { + gb, err := cs.Get(ctx, b.Cid()) + assert.NoError(t, err) + assert.NotNil(t, gb) + } + }) + t.Run("exists remote", func(t *testing.T) { + testBlocks := newTestBocks("1", "2", "3") + cs := &CacheStore{ + Cache: newTestStore(testBlocks[:1]), + Origin: newTestStore(testBlocks), + } + defer cs.Close() + for _, b := range testBlocks { + gb, err := cs.Get(ctx, b.Cid()) + assert.NoError(t, err) + assert.NotNil(t, gb) + } + for _, b := range testBlocks { + lb, err := cs.Cache.Get(ctx, b.Cid()) + assert.NoError(t, err) + assert.NotNil(t, lb) + } + }) +} + +func TestCacheStore_GetMany(t *testing.T) { + t.Run("all local", func(t *testing.T) { + testBlocks := newTestBocks("1", "2", "3") + cs := &CacheStore{ + Cache: newTestStore(testBlocks), + Origin: newTestStore(testBlocks), + } + defer cs.Close() + + var cids, resCids []cid.Cid + for _, b := range testBlocks { + cids = append(cids, b.Cid()) + } + ch := cs.GetMany(ctx, cids) + for { + select { + case b, ok := <-ch: + if !ok { + return + } else { + resCids = append(resCids, b.Cid()) + } + case <-time.After(time.Second): + assert.NoError(t, fmt.Errorf("timeout")) + return + } + } + assert.ElementsMatch(t, cids, resCids) + }) + t.Run("partial local", func(t *testing.T) { + testBlocks := newTestBocks("1", "2", "3") + cs := &CacheStore{ + Cache: newTestStore(testBlocks[:1]), + Origin: newTestStore(testBlocks), + } + defer cs.Close() + + var cids, resCids []cid.Cid + for _, b := range testBlocks { + cids = append(cids, b.Cid()) + } + ch := cs.GetMany(ctx, cids) + for { + select { + case b, ok := <-ch: + if !ok { + return + } else { + resCids = append(resCids, b.Cid()) + } + case <-time.After(time.Second): + assert.NoError(t, fmt.Errorf("timeout")) + return + } + } + assert.ElementsMatch(t, cids, resCids) + for _, b := range testBlocks { + gb, err := cs.Cache.Get(ctx, b.Cid()) + assert.NoError(t, err) + assert.NotNil(t, gb) + } + }) +} + +func TestCacheStore_Delete(t *testing.T) { + testBlocks := newTestBocks("1", "2", "3") + cs := &CacheStore{ + Cache: newTestStore(testBlocks[:1]), + Origin: newTestStore(testBlocks), + } + defer cs.Close() + for _, b := range testBlocks { + require.NoError(t, cs.Delete(ctx, b.Cid())) + gb, err := cs.Get(ctx, b.Cid()) + assert.Nil(t, gb) + assert.True(t, format.IsNotFound(err)) + } +} + +func newTestStore(bs []blocks.Block) *testStore { + ts := &testStore{ + store: make(map[cid.Cid]blocks.Block), + } + ts.Add(context.Background(), bs) + return ts +} + +type testStore struct { + store map[cid.Cid]blocks.Block +} + +func (t *testStore) Get(ctx context.Context, k cid.Cid) (blocks.Block, error) { + if b, ok := t.store[k]; ok { + return b, nil + } + return nil, &format.ErrNotFound{Cid: k} +} + +func (t *testStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + var result = make(chan blocks.Block) + go func() { + defer close(result) + for _, k := range ks { + select { + case <-ctx.Done(): + return + default: + } + if b, err := t.Get(ctx, k); err == nil { + result <- b + } + } + }() + return result +} + +func (t *testStore) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) { + for _, k := range ks { + if _, ok := t.store[k]; ok { + exists = append(exists, k) + } + } + return +} + +func (t *testStore) Add(ctx context.Context, bs []blocks.Block) error { + for _, b := range bs { + t.store[b.Cid()] = b + } + return nil +} + +func (t *testStore) Delete(ctx context.Context, c cid.Cid) error { + if _, ok := t.store[c]; ok { + delete(t.store, c) + return nil + } + return &format.ErrNotFound{Cid: c} +} + +func (t *testStore) Close() (err error) { + return nil +} + +func newTestBocks(ids ...string) (bs []blocks.Block) { + for _, id := range ids { + bs = append(bs, blocks.NewBlock([]byte(id))) + } + return +} diff --git a/common/commonfile/ipfsstore/ipfsstore.go b/common/commonfile/ipfsstore/ipfsstore.go new file mode 100644 index 00000000..8921658a --- /dev/null +++ b/common/commonfile/ipfsstore/ipfsstore.go @@ -0,0 +1,19 @@ +package ipfsstore + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" +) + +var log = logger.NewNamed("filenode.ipfsstore") + +type IPFSStore interface { + Get(ctx context.Context, k cid.Cid) (blocks.Block, error) + GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block + ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) + Add(ctx context.Context, b []blocks.Block) error + Delete(ctx context.Context, c cid.Cid) error + Close() (err error) +} diff --git a/common/go.mod b/common/go.mod index 8dfec05d..bb81243d 100644 --- a/common/go.mod +++ b/common/go.mod @@ -3,6 +3,7 @@ module github.com/anytypeio/go-anytype-infrastructure-experiments/common go 1.19 require ( + github.com/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221107145605-92bdf7d57b48 github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 github.com/awalterschulze/gographviz v2.0.3+incompatible github.com/cespare/xxhash v1.1.0 @@ -10,7 +11,9 @@ require ( github.com/gogo/protobuf v1.3.2 github.com/golang/mock v1.6.0 github.com/huandu/skiplist v1.2.0 + github.com/ipfs/go-block-format v0.0.3 github.com/ipfs/go-cid v0.3.2 + github.com/ipfs/go-ipld-format v0.4.0 github.com/libp2p/go-libp2p v0.23.2 github.com/minio/sha256-simd v1.0.0 github.com/multiformats/go-multibase v0.1.1 @@ -33,6 +36,7 @@ require ( github.com/fogleman/gg v1.3.0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/protobuf v1.5.2 // indirect + github.com/ipfs/go-ipfs-util v0.0.2 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/klauspost/cpuid/v2 v2.1.1 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect @@ -55,7 +59,7 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect + golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/common/go.sum b/common/go.sum index 03e87801..048f6b05 100644 --- a/common/go.sum +++ b/common/go.sum @@ -40,6 +40,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy 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/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221107145605-92bdf7d57b48 h1:fCZ8db6yJBLPd6bP59zwfjuokL7SLbeTKrk3kBSy034= +github.com/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221107145605-92bdf7d57b48/go.mod h1:w0i62cRB2jVpjFb2CpPNj5J+ihKqqmBBG9X2+Odekjw= github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 h1:kMPPZYmJgbs4AJfodbg2OCXg5cp+9LPAJcLZJqmcghk= github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232/go.mod h1:+PeHBAWp7gUh/yw6uAauKc5ku0w4cFNg6DUddGxoGq0= github.com/awalterschulze/gographviz v2.0.3+incompatible h1:9sVEXJBJLwGX7EQVhLm2elIKCm7P2YHFC8v6096G09E= @@ -149,6 +151,8 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= 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/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= +github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= 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/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= @@ -156,8 +160,19 @@ github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0Jr github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= +github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= +github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= +github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= +github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= +github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ= +github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= @@ -198,6 +213,9 @@ github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -205,20 +223,29 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ 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/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc= github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= +github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= github.com/multiformats/go-multicodec v0.6.0 h1:KhH2kSuCARyuJraYMFxrNO3DqIaYhOdS039kbhgVwpE= github.com/multiformats/go-multicodec v0.6.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw= +github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -305,14 +332,16 @@ go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 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= @@ -401,6 +430,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190219092855-153ac476189d/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= From da70f7b78c45bd255122e3d3a323609160a6ed58 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Mon, 12 Dec 2022 20:49:43 +0300 Subject: [PATCH 04/10] commonfile --- common/Makefile | 2 + common/commonfile/fileproto/file.pb.go | 1738 +++++++++++++++++ common/commonfile/fileproto/file_drpc.pb.go | 268 +++ common/commonfile/fileproto/protos/file.proto | 60 + common/commonfile/ipfsstore/cachestore.go | 11 +- common/commonfile/ipfsstore/ipfsstore.go | 1 - common/commonfile/rpcstore/client.go | 275 +++ common/commonfile/rpcstore/clientmgr.go | 110 ++ common/commonfile/rpcstore/service.go | 49 + common/commonfile/rpcstore/stat.go | 55 + common/commonfile/rpcstore/store.go | 99 + common/commonfile/rpcstore/store_test.go | 190 ++ common/commonfile/rpcstore/task.go | 60 + common/config/nodes.go | 27 +- common/go.mod | 3 + common/go.sum | 10 + common/nodeconf/configuration.go | 24 +- .../nodeconf/mock_nodeconf/mock_nodeconf.go | 42 +- common/nodeconf/service.go | 42 +- common/pkg/ocache/ocache.go | 2 +- consensus/consensusclient/client.go | 4 +- consensus/consensusclient/client_test.go | 26 +- consensus/consensusclient/stream.go | 10 +- consensus/stream/service.go | 4 +- consensus/stream/stream.go | 9 +- etc/configs/client1.yml | 3 + etc/configs/client2.yml | 3 + etc/configs/node1.yml | 3 + etc/configs/node2.yml | 3 + etc/configs/node3.yml | 3 + filenode/fileservice/blockservice.go | 46 + filenode/fileservice/fileservice.go | 36 + filenode/go.mod | 54 + filenode/go.sum | 1115 +++++++++++ go.work | 3 +- go.work.sum | 6 +- service/file/filesync/protos/filesync.proto | 19 - service/space/context.go | 22 - 38 files changed, 4320 insertions(+), 117 deletions(-) create mode 100644 common/commonfile/fileproto/file.pb.go create mode 100644 common/commonfile/fileproto/file_drpc.pb.go create mode 100644 common/commonfile/fileproto/protos/file.proto create mode 100644 common/commonfile/rpcstore/client.go create mode 100644 common/commonfile/rpcstore/clientmgr.go create mode 100644 common/commonfile/rpcstore/service.go create mode 100644 common/commonfile/rpcstore/stat.go create mode 100644 common/commonfile/rpcstore/store.go create mode 100644 common/commonfile/rpcstore/store_test.go create mode 100644 common/commonfile/rpcstore/task.go create mode 100644 filenode/fileservice/blockservice.go create mode 100644 filenode/fileservice/fileservice.go create mode 100644 filenode/go.mod create mode 100644 filenode/go.sum delete mode 100644 service/space/context.go diff --git a/common/Makefile b/common/Makefile index 6773d454..b8ca99a8 100644 --- a/common/Makefile +++ b/common/Makefile @@ -17,6 +17,8 @@ proto: $(GOGO_START) protoc --gogofaster_out=:. $(P_TEST_CHANGES_PATH_PB)/proto/*.proto $(eval PKGMAP := $$(P_TREE_CHANGES),$$(P_ACL_RECORDS)) $(GOGO_START) protoc --gogofaster_out=$(PKGMAP):. --go-drpc_out=protolib=github.com/gogo/protobuf:. commonspace/spacesyncproto/protos/*.proto + $(GOGO_START) protoc --gogofaster_out=$(PKGMAP):. --go-drpc_out=protolib=github.com/gogo/protobuf:. commonfile/fileproto/protos/*.proto + test: go test ./... --cover \ No newline at end of file diff --git a/common/commonfile/fileproto/file.pb.go b/common/commonfile/fileproto/file.pb.go new file mode 100644 index 00000000..e6ad8c39 --- /dev/null +++ b/common/commonfile/fileproto/file.pb.go @@ -0,0 +1,1738 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: commonfile/fileproto/protos/file.proto + +package fileproto + +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 + +type ErrCodes int32 + +const ( + ErrCodes_Unexpected ErrCodes = 0 + ErrCodes_CIDNotFound ErrCodes = 1 + ErrCodes_ErrorOffset ErrCodes = 200 +) + +var ErrCodes_name = map[int32]string{ + 0: "Unexpected", + 1: "CIDNotFound", + 200: "ErrorOffset", +} + +var ErrCodes_value = map[string]int32{ + "Unexpected": 0, + "CIDNotFound": 1, + "ErrorOffset": 200, +} + +func (x ErrCodes) String() string { + return proto.EnumName(ErrCodes_name, int32(x)) +} + +func (ErrCodes) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{0} +} + +type CIDError int32 + +const ( + CIDError_CIDErrorOk CIDError = 0 + CIDError_CIDErrorNotFound CIDError = 1 + CIDError_CIDErrorUnexpected CIDError = 2 +) + +var CIDError_name = map[int32]string{ + 0: "CIDErrorOk", + 1: "CIDErrorNotFound", + 2: "CIDErrorUnexpected", +} + +var CIDError_value = map[string]int32{ + "CIDErrorOk": 0, + "CIDErrorNotFound": 1, + "CIDErrorUnexpected": 2, +} + +func (x CIDError) String() string { + return proto.EnumName(CIDError_name, int32(x)) +} + +func (CIDError) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{1} +} + +type GetBlockRequest struct { + SpaceId string `protobuf:"bytes,1,opt,name=spaceId,proto3" json:"spaceId,omitempty"` + Cid []byte `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` +} + +func (m *GetBlockRequest) Reset() { *m = GetBlockRequest{} } +func (m *GetBlockRequest) String() string { return proto.CompactTextString(m) } +func (*GetBlockRequest) ProtoMessage() {} +func (*GetBlockRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{0} +} +func (m *GetBlockRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetBlockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetBlockRequest.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 *GetBlockRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBlockRequest.Merge(m, src) +} +func (m *GetBlockRequest) XXX_Size() int { + return m.Size() +} +func (m *GetBlockRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetBlockRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBlockRequest proto.InternalMessageInfo + +func (m *GetBlockRequest) GetSpaceId() string { + if m != nil { + return m.SpaceId + } + return "" +} + +func (m *GetBlockRequest) GetCid() []byte { + if m != nil { + return m.Cid + } + return nil +} + +type GetBlockResponse struct { + Cid []byte `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` + Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + Code CIDError `protobuf:"varint,3,opt,name=code,proto3,enum=anySpace.CIDError" json:"code,omitempty"` +} + +func (m *GetBlockResponse) Reset() { *m = GetBlockResponse{} } +func (m *GetBlockResponse) String() string { return proto.CompactTextString(m) } +func (*GetBlockResponse) ProtoMessage() {} +func (*GetBlockResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{1} +} +func (m *GetBlockResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetBlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetBlockResponse.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 *GetBlockResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetBlockResponse.Merge(m, src) +} +func (m *GetBlockResponse) XXX_Size() int { + return m.Size() +} +func (m *GetBlockResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetBlockResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetBlockResponse proto.InternalMessageInfo + +func (m *GetBlockResponse) GetCid() []byte { + if m != nil { + return m.Cid + } + return nil +} + +func (m *GetBlockResponse) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +func (m *GetBlockResponse) GetCode() CIDError { + if m != nil { + return m.Code + } + return CIDError_CIDErrorOk +} + +type PushBlockRequest struct { + SpaceId string `protobuf:"bytes,1,opt,name=spaceId,proto3" json:"spaceId,omitempty"` + Cid []byte `protobuf:"bytes,2,opt,name=cid,proto3" json:"cid,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` +} + +func (m *PushBlockRequest) Reset() { *m = PushBlockRequest{} } +func (m *PushBlockRequest) String() string { return proto.CompactTextString(m) } +func (*PushBlockRequest) ProtoMessage() {} +func (*PushBlockRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{2} +} +func (m *PushBlockRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PushBlockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PushBlockRequest.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 *PushBlockRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PushBlockRequest.Merge(m, src) +} +func (m *PushBlockRequest) XXX_Size() int { + return m.Size() +} +func (m *PushBlockRequest) XXX_DiscardUnknown() { + xxx_messageInfo_PushBlockRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_PushBlockRequest proto.InternalMessageInfo + +func (m *PushBlockRequest) GetSpaceId() string { + if m != nil { + return m.SpaceId + } + return "" +} + +func (m *PushBlockRequest) GetCid() []byte { + if m != nil { + return m.Cid + } + return nil +} + +func (m *PushBlockRequest) GetData() []byte { + if m != nil { + return m.Data + } + return nil +} + +type PushBlockResponse struct { +} + +func (m *PushBlockResponse) Reset() { *m = PushBlockResponse{} } +func (m *PushBlockResponse) String() string { return proto.CompactTextString(m) } +func (*PushBlockResponse) ProtoMessage() {} +func (*PushBlockResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{3} +} +func (m *PushBlockResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PushBlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PushBlockResponse.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 *PushBlockResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_PushBlockResponse.Merge(m, src) +} +func (m *PushBlockResponse) XXX_Size() int { + return m.Size() +} +func (m *PushBlockResponse) XXX_DiscardUnknown() { + xxx_messageInfo_PushBlockResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_PushBlockResponse proto.InternalMessageInfo + +type DeleteBlocksRequest struct { + SpaceId string `protobuf:"bytes,1,opt,name=spaceId,proto3" json:"spaceId,omitempty"` + Cid [][]byte `protobuf:"bytes,2,rep,name=cid,proto3" json:"cid,omitempty"` +} + +func (m *DeleteBlocksRequest) Reset() { *m = DeleteBlocksRequest{} } +func (m *DeleteBlocksRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteBlocksRequest) ProtoMessage() {} +func (*DeleteBlocksRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{4} +} +func (m *DeleteBlocksRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DeleteBlocksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DeleteBlocksRequest.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 *DeleteBlocksRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteBlocksRequest.Merge(m, src) +} +func (m *DeleteBlocksRequest) XXX_Size() int { + return m.Size() +} +func (m *DeleteBlocksRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteBlocksRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteBlocksRequest proto.InternalMessageInfo + +func (m *DeleteBlocksRequest) GetSpaceId() string { + if m != nil { + return m.SpaceId + } + return "" +} + +func (m *DeleteBlocksRequest) GetCid() [][]byte { + if m != nil { + return m.Cid + } + return nil +} + +type DeleteBlocksResponse struct { +} + +func (m *DeleteBlocksResponse) Reset() { *m = DeleteBlocksResponse{} } +func (m *DeleteBlocksResponse) String() string { return proto.CompactTextString(m) } +func (*DeleteBlocksResponse) ProtoMessage() {} +func (*DeleteBlocksResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{5} +} +func (m *DeleteBlocksResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DeleteBlocksResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DeleteBlocksResponse.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 *DeleteBlocksResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteBlocksResponse.Merge(m, src) +} +func (m *DeleteBlocksResponse) XXX_Size() int { + return m.Size() +} +func (m *DeleteBlocksResponse) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteBlocksResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteBlocksResponse proto.InternalMessageInfo + +type CheckRequest struct { +} + +func (m *CheckRequest) Reset() { *m = CheckRequest{} } +func (m *CheckRequest) String() string { return proto.CompactTextString(m) } +func (*CheckRequest) ProtoMessage() {} +func (*CheckRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{6} +} +func (m *CheckRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckRequest.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 *CheckRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckRequest.Merge(m, src) +} +func (m *CheckRequest) XXX_Size() int { + return m.Size() +} +func (m *CheckRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CheckRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckRequest proto.InternalMessageInfo + +type CheckResponse struct { + SpaceIds []string `protobuf:"bytes,1,rep,name=spaceIds,proto3" json:"spaceIds,omitempty"` +} + +func (m *CheckResponse) Reset() { *m = CheckResponse{} } +func (m *CheckResponse) String() string { return proto.CompactTextString(m) } +func (*CheckResponse) ProtoMessage() {} +func (*CheckResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fd665a7e11c833d5, []int{7} +} +func (m *CheckResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckResponse.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 *CheckResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckResponse.Merge(m, src) +} +func (m *CheckResponse) XXX_Size() int { + return m.Size() +} +func (m *CheckResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CheckResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckResponse proto.InternalMessageInfo + +func (m *CheckResponse) GetSpaceIds() []string { + if m != nil { + return m.SpaceIds + } + return nil +} + +func init() { + proto.RegisterEnum("anySpace.ErrCodes", ErrCodes_name, ErrCodes_value) + proto.RegisterEnum("anySpace.CIDError", CIDError_name, CIDError_value) + proto.RegisterType((*GetBlockRequest)(nil), "anySpace.GetBlockRequest") + proto.RegisterType((*GetBlockResponse)(nil), "anySpace.GetBlockResponse") + proto.RegisterType((*PushBlockRequest)(nil), "anySpace.PushBlockRequest") + proto.RegisterType((*PushBlockResponse)(nil), "anySpace.PushBlockResponse") + proto.RegisterType((*DeleteBlocksRequest)(nil), "anySpace.DeleteBlocksRequest") + proto.RegisterType((*DeleteBlocksResponse)(nil), "anySpace.DeleteBlocksResponse") + proto.RegisterType((*CheckRequest)(nil), "anySpace.CheckRequest") + proto.RegisterType((*CheckResponse)(nil), "anySpace.CheckResponse") +} + +func init() { + proto.RegisterFile("commonfile/fileproto/protos/file.proto", fileDescriptor_fd665a7e11c833d5) +} + +var fileDescriptor_fd665a7e11c833d5 = []byte{ + // 456 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, + 0x10, 0xf6, 0xc6, 0x01, 0x92, 0x69, 0x48, 0x97, 0x69, 0x14, 0x8c, 0x11, 0x56, 0xe4, 0x43, 0x65, + 0x15, 0x29, 0x45, 0xe5, 0xc2, 0xa5, 0x07, 0x9a, 0x34, 0x90, 0x03, 0x14, 0x19, 0x71, 0xe1, 0x44, + 0xb0, 0x27, 0x6a, 0xd4, 0xd4, 0x1b, 0xbc, 0x1b, 0x09, 0xde, 0x82, 0x17, 0xe0, 0x7d, 0x7a, 0xec, + 0x91, 0x23, 0x4a, 0x5e, 0x04, 0x65, 0xe3, 0xb5, 0x4d, 0x31, 0x07, 0x7a, 0x59, 0xcf, 0xef, 0x37, + 0xe3, 0xef, 0xdb, 0x85, 0xfd, 0x48, 0x5c, 0x5e, 0x8a, 0x64, 0x3a, 0x9b, 0xd3, 0xe1, 0xe6, 0x58, + 0xa4, 0x42, 0x89, 0x43, 0x7d, 0x4a, 0x1d, 0xe8, 0x6b, 0x1b, 0x1b, 0x93, 0xe4, 0xdb, 0xfb, 0xc5, + 0x24, 0x22, 0xff, 0x18, 0x76, 0x5f, 0x91, 0x3a, 0x99, 0x8b, 0xe8, 0x22, 0xa4, 0x2f, 0x4b, 0x92, + 0x0a, 0x1d, 0xb8, 0x27, 0x37, 0xb9, 0x71, 0xec, 0xb0, 0x1e, 0x0b, 0x9a, 0xa1, 0x71, 0x91, 0x83, + 0x1d, 0xcd, 0x62, 0xa7, 0xd6, 0x63, 0x41, 0x2b, 0xdc, 0x98, 0xfe, 0x27, 0xe0, 0x45, 0xbb, 0x5c, + 0x88, 0x44, 0x92, 0xa9, 0x62, 0x79, 0x15, 0x22, 0xd4, 0xe3, 0x89, 0x9a, 0x64, 0x8d, 0xda, 0xc6, + 0x7d, 0xa8, 0x47, 0x22, 0x26, 0xc7, 0xee, 0xb1, 0xa0, 0x7d, 0x84, 0x7d, 0xb3, 0x51, 0x7f, 0x30, + 0x1e, 0x9e, 0xa6, 0xa9, 0x48, 0x43, 0x9d, 0xf7, 0x43, 0xe0, 0xef, 0x96, 0xf2, 0xfc, 0xb6, 0x1b, + 0xe6, 0xb3, 0xed, 0x62, 0xb6, 0xbf, 0x07, 0x0f, 0x4a, 0x98, 0xdb, 0xb5, 0xfd, 0x97, 0xb0, 0x37, + 0xa4, 0x39, 0x29, 0xd2, 0x61, 0xf9, 0x1f, 0xb3, 0x6c, 0xc3, 0x46, 0x17, 0x3a, 0x7f, 0x42, 0x64, + 0xd0, 0x6d, 0x68, 0x0d, 0xce, 0x29, 0xdf, 0xdf, 0x7f, 0x0a, 0xf7, 0x33, 0x3f, 0xa3, 0xcc, 0x85, + 0x46, 0x86, 0x2a, 0x1d, 0xd6, 0xb3, 0x83, 0x66, 0x98, 0xfb, 0x07, 0xc7, 0xd0, 0x38, 0x4d, 0xd3, + 0x81, 0x88, 0x49, 0x62, 0x1b, 0xe0, 0x43, 0x42, 0x5f, 0x17, 0x14, 0x29, 0x8a, 0xb9, 0x85, 0xbb, + 0xb0, 0x33, 0x18, 0x0f, 0xdf, 0x0a, 0x35, 0x12, 0xcb, 0x24, 0xe6, 0x0c, 0x39, 0xec, 0x68, 0xf2, + 0xce, 0xa6, 0x53, 0x49, 0x8a, 0x5f, 0xb1, 0x83, 0xd7, 0xd0, 0x30, 0x8c, 0x6e, 0xda, 0x8d, 0x7d, + 0x76, 0xc1, 0x2d, 0xec, 0x00, 0x37, 0x7e, 0x09, 0xa3, 0x0b, 0x68, 0xa2, 0xa5, 0x61, 0xb5, 0xa3, + 0x1f, 0x35, 0xa8, 0x8f, 0x66, 0x73, 0xc2, 0x11, 0x34, 0x8d, 0xe8, 0x12, 0x1f, 0x15, 0xca, 0xdd, + 0xb8, 0x48, 0xae, 0x5b, 0x95, 0xda, 0xfe, 0x71, 0xc0, 0x9e, 0x31, 0x1c, 0x42, 0x33, 0x97, 0x01, + 0x4b, 0xc5, 0x37, 0xf5, 0x76, 0x1f, 0x57, 0xe6, 0x32, 0xee, 0xde, 0x40, 0xab, 0x4c, 0x3a, 0x3e, + 0x29, 0x8a, 0x2b, 0xf4, 0x74, 0xbd, 0x7f, 0xa5, 0x33, 0xb8, 0x17, 0x70, 0x47, 0x6b, 0x83, 0xdd, + 0xd2, 0x95, 0x2c, 0x89, 0xe7, 0x3e, 0xfc, 0x2b, 0xbe, 0xed, 0x3c, 0xe9, 0x5f, 0xad, 0x3c, 0x76, + 0xbd, 0xf2, 0xd8, 0xaf, 0x95, 0xc7, 0xbe, 0xaf, 0x3d, 0xeb, 0x7a, 0xed, 0x59, 0x3f, 0xd7, 0x9e, + 0xf5, 0xb1, 0x53, 0xf5, 0x2c, 0x3f, 0xdf, 0xd5, 0x9f, 0xe7, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, + 0x6e, 0xf3, 0x34, 0x71, 0xb5, 0x03, 0x00, 0x00, +} + +func (m *GetBlockRequest) 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 *GetBlockRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetBlockRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Cid) > 0 { + i -= len(m.Cid) + copy(dAtA[i:], m.Cid) + i = encodeVarintFile(dAtA, i, uint64(len(m.Cid))) + i-- + dAtA[i] = 0x12 + } + if len(m.SpaceId) > 0 { + i -= len(m.SpaceId) + copy(dAtA[i:], m.SpaceId) + i = encodeVarintFile(dAtA, i, uint64(len(m.SpaceId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetBlockResponse) 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 *GetBlockResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetBlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Code != 0 { + i = encodeVarintFile(dAtA, i, uint64(m.Code)) + i-- + dAtA[i] = 0x18 + } + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintFile(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x12 + } + if len(m.Cid) > 0 { + i -= len(m.Cid) + copy(dAtA[i:], m.Cid) + i = encodeVarintFile(dAtA, i, uint64(len(m.Cid))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PushBlockRequest) 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 *PushBlockRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PushBlockRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = encodeVarintFile(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0x1a + } + if len(m.Cid) > 0 { + i -= len(m.Cid) + copy(dAtA[i:], m.Cid) + i = encodeVarintFile(dAtA, i, uint64(len(m.Cid))) + i-- + dAtA[i] = 0x12 + } + if len(m.SpaceId) > 0 { + i -= len(m.SpaceId) + copy(dAtA[i:], m.SpaceId) + i = encodeVarintFile(dAtA, i, uint64(len(m.SpaceId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PushBlockResponse) 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 *PushBlockResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PushBlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *DeleteBlocksRequest) 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 *DeleteBlocksRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DeleteBlocksRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Cid) > 0 { + for iNdEx := len(m.Cid) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Cid[iNdEx]) + copy(dAtA[i:], m.Cid[iNdEx]) + i = encodeVarintFile(dAtA, i, uint64(len(m.Cid[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.SpaceId) > 0 { + i -= len(m.SpaceId) + copy(dAtA[i:], m.SpaceId) + i = encodeVarintFile(dAtA, i, uint64(len(m.SpaceId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DeleteBlocksResponse) 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 *DeleteBlocksResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DeleteBlocksResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *CheckRequest) 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 *CheckRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CheckRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *CheckResponse) 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 *CheckResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CheckResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SpaceIds) > 0 { + for iNdEx := len(m.SpaceIds) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.SpaceIds[iNdEx]) + copy(dAtA[i:], m.SpaceIds[iNdEx]) + i = encodeVarintFile(dAtA, i, uint64(len(m.SpaceIds[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintFile(dAtA []byte, offset int, v uint64) int { + offset -= sovFile(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *GetBlockRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.SpaceId) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + l = len(m.Cid) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + return n +} + +func (m *GetBlockResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Cid) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + if m.Code != 0 { + n += 1 + sovFile(uint64(m.Code)) + } + return n +} + +func (m *PushBlockRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.SpaceId) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + l = len(m.Cid) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + l = len(m.Data) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + return n +} + +func (m *PushBlockResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *DeleteBlocksRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.SpaceId) + if l > 0 { + n += 1 + l + sovFile(uint64(l)) + } + if len(m.Cid) > 0 { + for _, b := range m.Cid { + l = len(b) + n += 1 + l + sovFile(uint64(l)) + } + } + return n +} + +func (m *DeleteBlocksResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *CheckRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *CheckResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.SpaceIds) > 0 { + for _, s := range m.SpaceIds { + l = len(s) + n += 1 + l + sovFile(uint64(l)) + } + } + return n +} + +func sovFile(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozFile(x uint64) (n int) { + return sovFile(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *GetBlockRequest) 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 ErrIntOverflowFile + } + 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: GetBlockRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetBlockRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpaceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + 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 ErrInvalidLengthFile + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpaceId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthFile + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cid = append(m.Cid[:0], dAtA[iNdEx:postIndex]...) + if m.Cid == nil { + m.Cid = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetBlockResponse) 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 ErrIntOverflowFile + } + 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: GetBlockResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetBlockResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthFile + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cid = append(m.Cid[:0], dAtA[iNdEx:postIndex]...) + if m.Cid == nil { + m.Cid = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthFile + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType) + } + m.Code = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Code |= CIDError(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PushBlockRequest) 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 ErrIntOverflowFile + } + 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: PushBlockRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PushBlockRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpaceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + 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 ErrInvalidLengthFile + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpaceId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthFile + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cid = append(m.Cid[:0], dAtA[iNdEx:postIndex]...) + if m.Cid == nil { + m.Cid = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthFile + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...) + if m.Data == nil { + m.Data = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PushBlockResponse) 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 ErrIntOverflowFile + } + 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: PushBlockResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PushBlockResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteBlocksRequest) 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 ErrIntOverflowFile + } + 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: DeleteBlocksRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteBlocksRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpaceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + 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 ErrInvalidLengthFile + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpaceId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthFile + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Cid = append(m.Cid, make([]byte, postIndex-iNdEx)) + copy(m.Cid[len(m.Cid)-1], dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteBlocksResponse) 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 ErrIntOverflowFile + } + 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: DeleteBlocksResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteBlocksResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CheckRequest) 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 ErrIntOverflowFile + } + 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: CheckRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CheckResponse) 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 ErrIntOverflowFile + } + 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: CheckResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpaceIds", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowFile + } + 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 ErrInvalidLengthFile + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthFile + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpaceIds = append(m.SpaceIds, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipFile(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthFile + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipFile(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, ErrIntOverflowFile + } + 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, ErrIntOverflowFile + } + 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, ErrIntOverflowFile + } + 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, ErrInvalidLengthFile + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupFile + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthFile + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthFile = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowFile = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupFile = fmt.Errorf("proto: unexpected end of group") +) diff --git a/common/commonfile/fileproto/file_drpc.pb.go b/common/commonfile/fileproto/file_drpc.pb.go new file mode 100644 index 00000000..1bc95763 --- /dev/null +++ b/common/commonfile/fileproto/file_drpc.pb.go @@ -0,0 +1,268 @@ +// Code generated by protoc-gen-go-drpc. DO NOT EDIT. +// protoc-gen-go-drpc version: v0.0.32 +// source: commonfile/fileproto/protos/file.proto + +package fileproto + +import ( + bytes "bytes" + context "context" + errors "errors" + jsonpb "github.com/gogo/protobuf/jsonpb" + proto "github.com/gogo/protobuf/proto" + drpc "storj.io/drpc" + drpcerr "storj.io/drpc/drpcerr" +) + +type drpcEncoding_File_commonfile_fileproto_protos_file_proto struct{} + +func (drpcEncoding_File_commonfile_fileproto_protos_file_proto) Marshal(msg drpc.Message) ([]byte, error) { + return proto.Marshal(msg.(proto.Message)) +} + +func (drpcEncoding_File_commonfile_fileproto_protos_file_proto) Unmarshal(buf []byte, msg drpc.Message) error { + return proto.Unmarshal(buf, msg.(proto.Message)) +} + +func (drpcEncoding_File_commonfile_fileproto_protos_file_proto) JSONMarshal(msg drpc.Message) ([]byte, error) { + var buf bytes.Buffer + err := new(jsonpb.Marshaler).Marshal(&buf, msg.(proto.Message)) + if err != nil { + return nil, err + } + return buf.Bytes(), nil +} + +func (drpcEncoding_File_commonfile_fileproto_protos_file_proto) JSONUnmarshal(buf []byte, msg drpc.Message) error { + return jsonpb.Unmarshal(bytes.NewReader(buf), msg.(proto.Message)) +} + +type DRPCFileClient interface { + DRPCConn() drpc.Conn + + GetBlocks(ctx context.Context) (DRPCFile_GetBlocksClient, error) + PushBlock(ctx context.Context, in *PushBlockRequest) (*PushBlockResponse, error) + DeleteBlocks(ctx context.Context, in *DeleteBlocksRequest) (*DeleteBlocksResponse, error) + Check(ctx context.Context, in *CheckRequest) (*CheckResponse, error) +} + +type drpcFileClient struct { + cc drpc.Conn +} + +func NewDRPCFileClient(cc drpc.Conn) DRPCFileClient { + return &drpcFileClient{cc} +} + +func (c *drpcFileClient) DRPCConn() drpc.Conn { return c.cc } + +func (c *drpcFileClient) GetBlocks(ctx context.Context) (DRPCFile_GetBlocksClient, error) { + stream, err := c.cc.NewStream(ctx, "/anySpace.File/GetBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) + if err != nil { + return nil, err + } + x := &drpcFile_GetBlocksClient{stream} + return x, nil +} + +type DRPCFile_GetBlocksClient interface { + drpc.Stream + Send(*GetBlockRequest) error + Recv() (*GetBlockResponse, error) +} + +type drpcFile_GetBlocksClient struct { + drpc.Stream +} + +func (x *drpcFile_GetBlocksClient) Send(m *GetBlockRequest) error { + return x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) +} + +func (x *drpcFile_GetBlocksClient) Recv() (*GetBlockResponse, error) { + m := new(GetBlockResponse) + if err := x.MsgRecv(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcFile_GetBlocksClient) RecvMsg(m *GetBlockResponse) error { + return x.MsgRecv(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) +} + +func (c *drpcFileClient) PushBlock(ctx context.Context, in *PushBlockRequest) (*PushBlockResponse, error) { + out := new(PushBlockResponse) + err := c.cc.Invoke(ctx, "/anySpace.File/PushBlock", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFileClient) DeleteBlocks(ctx context.Context, in *DeleteBlocksRequest) (*DeleteBlocksResponse, error) { + out := new(DeleteBlocksResponse) + err := c.cc.Invoke(ctx, "/anySpace.File/DeleteBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcFileClient) Check(ctx context.Context, in *CheckRequest) (*CheckResponse, error) { + out := new(CheckResponse) + err := c.cc.Invoke(ctx, "/anySpace.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +type DRPCFileServer interface { + GetBlocks(DRPCFile_GetBlocksStream) error + PushBlock(context.Context, *PushBlockRequest) (*PushBlockResponse, error) + DeleteBlocks(context.Context, *DeleteBlocksRequest) (*DeleteBlocksResponse, error) + Check(context.Context, *CheckRequest) (*CheckResponse, error) +} + +type DRPCFileUnimplementedServer struct{} + +func (s *DRPCFileUnimplementedServer) GetBlocks(DRPCFile_GetBlocksStream) error { + return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFileUnimplementedServer) PushBlock(context.Context, *PushBlockRequest) (*PushBlockResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFileUnimplementedServer) DeleteBlocks(context.Context, *DeleteBlocksRequest) (*DeleteBlocksResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCFileUnimplementedServer) Check(context.Context, *CheckRequest) (*CheckResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +type DRPCFileDescription struct{} + +func (DRPCFileDescription) NumMethods() int { return 4 } + +func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { + switch n { + case 0: + return "/anySpace.File/GetBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return nil, srv.(DRPCFileServer). + GetBlocks( + &drpcFile_GetBlocksStream{in1.(drpc.Stream)}, + ) + }, DRPCFileServer.GetBlocks, true + case 1: + return "/anySpace.File/PushBlock", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFileServer). + PushBlock( + ctx, + in1.(*PushBlockRequest), + ) + }, DRPCFileServer.PushBlock, true + case 2: + return "/anySpace.File/DeleteBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFileServer). + DeleteBlocks( + ctx, + in1.(*DeleteBlocksRequest), + ) + }, DRPCFileServer.DeleteBlocks, true + case 3: + return "/anySpace.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCFileServer). + Check( + ctx, + in1.(*CheckRequest), + ) + }, DRPCFileServer.Check, true + default: + return "", nil, nil, nil, false + } +} + +func DRPCRegisterFile(mux drpc.Mux, impl DRPCFileServer) error { + return mux.Register(impl, DRPCFileDescription{}) +} + +type DRPCFile_GetBlocksStream interface { + drpc.Stream + Send(*GetBlockResponse) error + Recv() (*GetBlockRequest, error) +} + +type drpcFile_GetBlocksStream struct { + drpc.Stream +} + +func (x *drpcFile_GetBlocksStream) Send(m *GetBlockResponse) error { + return x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) +} + +func (x *drpcFile_GetBlocksStream) Recv() (*GetBlockRequest, error) { + m := new(GetBlockRequest) + if err := x.MsgRecv(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil { + return nil, err + } + return m, nil +} + +func (x *drpcFile_GetBlocksStream) RecvMsg(m *GetBlockRequest) error { + return x.MsgRecv(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) +} + +type DRPCFile_PushBlockStream interface { + drpc.Stream + SendAndClose(*PushBlockResponse) error +} + +type drpcFile_PushBlockStream struct { + drpc.Stream +} + +func (x *drpcFile_PushBlockStream) SendAndClose(m *PushBlockResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFile_DeleteBlocksStream interface { + drpc.Stream + SendAndClose(*DeleteBlocksResponse) error +} + +type drpcFile_DeleteBlocksStream struct { + drpc.Stream +} + +func (x *drpcFile_DeleteBlocksStream) SendAndClose(m *DeleteBlocksResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCFile_CheckStream interface { + drpc.Stream + SendAndClose(*CheckResponse) error +} + +type drpcFile_CheckStream struct { + drpc.Stream +} + +func (x *drpcFile_CheckStream) SendAndClose(m *CheckResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil { + return err + } + return x.CloseSend() +} diff --git a/common/commonfile/fileproto/protos/file.proto b/common/commonfile/fileproto/protos/file.proto new file mode 100644 index 00000000..62dfc5e8 --- /dev/null +++ b/common/commonfile/fileproto/protos/file.proto @@ -0,0 +1,60 @@ +syntax = "proto3"; +package anySpace; + +option go_package = "commonfile/fileproto"; + +enum ErrCodes { + Unexpected = 0; + CIDNotFound = 1; + ErrorOffset = 200; +} + +service File { + // GetBlocks streams ipfs blocks from server to client + rpc GetBlocks(stream GetBlockRequest) returns (stream GetBlockResponse); + // PushBlock pushes one block to server + rpc PushBlock(PushBlockRequest) returns (PushBlockResponse); + // DeleteBlock deletes block from space + rpc DeleteBlocks(DeleteBlocksRequest) returns (DeleteBlocksResponse); + // Ping checks the connection + rpc Check(CheckRequest) returns (CheckResponse); +} + +message GetBlockRequest { + string spaceId = 1; + bytes cid = 2; +} + +message GetBlockResponse { + bytes cid = 1; + bytes data = 2; + CIDError code = 3; +} + +message PushBlockRequest { + string spaceId = 1; + bytes cid = 2; + bytes data = 3; +} + +message PushBlockResponse {} + +message DeleteBlocksRequest { + string spaceId = 1; + repeated bytes cid = 2; +} + +message DeleteBlocksResponse {} + +message CheckRequest {} + +message CheckResponse { + repeated string spaceIds = 1; +} + + +enum CIDError { + CIDErrorOk = 0; + CIDErrorNotFound = 1; + CIDErrorUnexpected = 2; +} \ No newline at end of file diff --git a/common/commonfile/ipfsstore/cachestore.go b/common/commonfile/ipfsstore/cachestore.go index 44e5439f..d509589f 100644 --- a/common/commonfile/ipfsstore/cachestore.go +++ b/common/commonfile/ipfsstore/cachestore.go @@ -8,8 +8,13 @@ import ( "go.uber.org/zap" ) +type IPFSStoreExistsCIDs interface { + IPFSStore + ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) +} + type CacheStore struct { - Cache IPFSStore + Cache IPFSStoreExistsCIDs Origin IPFSStore } @@ -90,10 +95,6 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl return results } -func (c *CacheStore) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) { - return c.Cache.ExistsCids(ctx, ks) -} - func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { if localErr := c.Cache.Add(ctx, b); localErr != nil { log.Error("cache add error", zap.Error(localErr)) diff --git a/common/commonfile/ipfsstore/ipfsstore.go b/common/commonfile/ipfsstore/ipfsstore.go index 8921658a..9765540b 100644 --- a/common/commonfile/ipfsstore/ipfsstore.go +++ b/common/commonfile/ipfsstore/ipfsstore.go @@ -12,7 +12,6 @@ var log = logger.NewNamed("filenode.ipfsstore") type IPFSStore interface { Get(ctx context.Context, k cid.Cid) (blocks.Block, error) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block - ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) Add(ctx context.Context, b []blocks.Block) error Delete(ctx context.Context, c cid.Cid) error Close() (err error) diff --git a/common/commonfile/rpcstore/client.go b/common/commonfile/rpcstore/client.go new file mode 100644 index 00000000..e467f2f5 --- /dev/null +++ b/common/commonfile/rpcstore/client.go @@ -0,0 +1,275 @@ +package rpcstore + +import ( + "context" + "errors" + "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/slice" + "github.com/cheggaaa/mb/v3" + "github.com/ipfs/go-cid" + "go.uber.org/zap" + "sync" + "time" +) + +var ( + ErrCIDNotFound = errors.New("CID not found") + ErrCIDUnexpected = errors.New("CID unexpected error") + ErrClientClosed = errors.New("file client closed") +) + +const defaultMaxInFlightCIDs = 10 + +func newClient(ctx context.Context, s *service, peerId string, tq *mb.MB[*task]) (*client, error) { + c := &client{ + peerId: peerId, + taskQueue: tq, + waitCIDs: map[string]*task{}, + waitCIDCap: make(chan struct{}, defaultMaxInFlightCIDs), + opLoopDone: make(chan struct{}), + stat: newStat(), + s: s, + } + if err := c.checkConnectivity(ctx); err != nil { + return nil, err + } + var runCtx context.Context + runCtx, c.opLoopCtxCancel = context.WithCancel(context.Background()) + go c.opLoop(runCtx) + return c, nil +} + +// client gets and executes tasks from taskQueue +// it has an internal queue for a waiting CIDs +type client struct { + peerId string + spaceIds []string + taskQueue *mb.MB[*task] + blocksStream fileproto.DRPCFile_GetBlocksClient + blocksStreamMu sync.Mutex + waitCIDs map[string]*task + waitCIDCap chan struct{} + waitCIDMu sync.Mutex + opLoopDone chan struct{} + opLoopCtxCancel context.CancelFunc + stat *stat + s *service +} + +// opLoop gets tasks from taskQueue +func (c *client) opLoop(ctx context.Context) { + defer close(c.opLoopDone) + c.waitCIDMu.Lock() + spaceIds := c.spaceIds + c.waitCIDMu.Unlock() + cond := c.taskQueue.NewCond().WithFilter(func(t *task) bool { + if slice.FindPos(t.denyPeerIds, c.peerId) != -1 { + return false + } + if len(spaceIds) > 0 && slice.FindPos(spaceIds, t.spaceId) == -1 { + return false + } + return true + }) + for { + t, err := cond.WithPriority(c.stat.Score()).WaitOne(ctx) + if err != nil { + return + } + t.peerId = c.peerId + switch t.op { + case taskOpGet: + err = c.get(ctx, t) + case taskOpDelete: + err = c.delete(ctx, t) + case taskOpPut: + err = c.put(ctx, t) + default: + err = fmt.Errorf("unexpected task op type: %v", t.op) + } + if err != nil { + t.err = err + t.ready <- t + } + } +} + +func (c *client) delete(ctx context.Context, t *task) (err error) { + p, err := c.s.pool.Get(ctx, c.peerId) + if err != nil { + return + } + if _, err = fileproto.NewDRPCFileClient(p).DeleteBlocks(ctx, &fileproto.DeleteBlocksRequest{ + SpaceId: t.spaceId, + Cid: [][]byte{t.cid.Bytes()}, + }); err != nil { + return + } + t.ready <- t + c.stat.UpdateLastUsage() + return +} + +func (c *client) put(ctx context.Context, t *task) (err error) { + p, err := c.s.pool.Get(ctx, c.peerId) + if err != nil { + return + } + st := time.Now() + if _, err = fileproto.NewDRPCFileClient(p).PushBlock(ctx, &fileproto.PushBlockRequest{ + SpaceId: t.spaceId, + Cid: t.cid.Bytes(), + Data: t.data, + }); err != nil { + return + } + t.ready <- t + c.stat.Add(st, len(t.data)) + return +} + +// get sends the get request to the stream and adds task to waiting list +func (c *client) get(ctx context.Context, t *task) (err error) { + select { + case <-ctx.Done(): + return ctx.Err() + case c.waitCIDCap <- struct{}{}: + } + c.waitCIDMu.Lock() + t.startTime = time.Now() + c.waitCIDs[t.cid.String()] = t + c.waitCIDMu.Unlock() + + defer func() { + if err != nil { + c.waitCIDMu.Lock() + delete(c.waitCIDs, t.cid.String()) + c.waitCIDMu.Unlock() + <-c.waitCIDCap + } + }() + + bs, err := c.getStream(ctx) + if err != nil { + return + } + if err = bs.Send(&fileproto.GetBlockRequest{ + SpaceId: t.spaceId, + Cid: t.cid.Bytes(), + }); err != nil { + return + } + return +} + +func (c *client) readStream() { + var err error + defer func() { + log.Info("readStream closed", zap.String("peerId", c.peerId), zap.Error(err)) + c.waitCIDMu.Lock() + c.blocksStream = nil + c.waitCIDMu.Unlock() + }() + for { + var resp *fileproto.GetBlockResponse + resp, err = c.blocksStream.Recv() + if err != nil { + return + } + var t *task + t, err = c.receiveCID(resp) + if err != nil { + log.Warn("cid receive error", zap.Error(err)) + } else { + t.ready <- t + } + } +} + +// receiveCID handles stream response, finds cid in waiting list and sets data to task +func (c *client) receiveCID(resp *fileproto.GetBlockResponse) (t *task, err error) { + _, rCid, err := cid.CidFromBytes(resp.Cid) + if err != nil { + return nil, fmt.Errorf("got invalid CID from node: %v", err) + } + c.waitCIDMu.Lock() + defer c.waitCIDMu.Unlock() + t, ok := c.waitCIDs[rCid.String()] + if !ok { + return nil, fmt.Errorf("got unexpected CID from node: %v", rCid.String()) + } + switch resp.Code { + case fileproto.CIDError_CIDErrorOk: + t.data = resp.Data + t.err = nil + case fileproto.CIDError_CIDErrorNotFound: + t.err = ErrCIDNotFound + default: + t.err = ErrCIDUnexpected + } + delete(c.waitCIDs, rCid.String()) + if t.err == nil { + c.stat.Add(t.startTime, len(t.data)) + } + <-c.waitCIDCap + return +} + +func (c *client) getStream(ctx context.Context) (fileproto.DRPCFile_GetBlocksClient, error) { + c.blocksStreamMu.Lock() + defer c.blocksStreamMu.Unlock() + if c.blocksStream != nil { + return c.blocksStream, nil + } + peer, err := c.s.pool.Dial(ctx, c.peerId) + if err != nil { + return nil, err + } + if c.blocksStream, err = fileproto.NewDRPCFileClient(peer).GetBlocks(context.Background()); err != nil { + return nil, err + } + go c.readStream() + return c.blocksStream, nil +} + +func (c *client) checkConnectivity(ctx context.Context) (err error) { + p, err := c.s.pool.Get(ctx, c.peerId) + if err != nil { + return + } + resp, err := fileproto.NewDRPCFileClient(p).Check(ctx, &fileproto.CheckRequest{}) + if err != nil { + return + } + c.waitCIDMu.Lock() + defer c.waitCIDMu.Unlock() + c.spaceIds = resp.SpaceIds + return +} + +func (c *client) LastUsage() time.Time { + return c.stat.LastUsage() +} + +func (c *client) Close() error { + // stop receiving tasks + c.opLoopCtxCancel() + <-c.opLoopDone + c.blocksStreamMu.Lock() + // close stream + if c.blocksStream != nil { + _ = c.blocksStream.CloseSend() + c.blocksStream = nil + } + c.blocksStreamMu.Unlock() + // cleanup waiting list + c.waitCIDMu.Lock() + for id, t := range c.waitCIDs { + t.err = ErrClientClosed + t.ready <- t + delete(c.waitCIDs, id) + } + c.waitCIDMu.Unlock() + return nil +} diff --git a/common/commonfile/rpcstore/clientmgr.go b/common/commonfile/rpcstore/clientmgr.go new file mode 100644 index 00000000..528db372 --- /dev/null +++ b/common/commonfile/rpcstore/clientmgr.go @@ -0,0 +1,110 @@ +package rpcstore + +import ( + "context" + "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ocache" + "github.com/cheggaaa/mb/v3" + "go.uber.org/zap" + "math/rand" + "sync" + "time" +) + +const ( + maxConnections = 10 + maxTasks = 1000 +) + +var ( + clientCreateTimeout = time.Second * 10 +) + +func newClientManager(s *service) *clientManager { + cm := &clientManager{ + mb: mb.New[*task](maxTasks), + ocache: ocache.New( + func(ctx context.Context, id string) (value ocache.Object, err error) { + return nil, fmt.Errorf("load func shouldn't be used") + }, + ocache.WithTTL(time.Minute*5), + ocache.WithRefCounter(false), + ocache.WithLogger(log.Sugar()), + ocache.WithGCPeriod(0), + ), + s: s, + } + cm.ctx, cm.ctxCancel = context.WithCancel(context.Background()) + go cm.checkPeerLoop() + return cm +} + +// clientManager manages clients, removes unused ones, and adds new ones if necessary +type clientManager struct { + mb *mb.MB[*task] + ctx context.Context + ctxCancel context.CancelFunc + ocache ocache.OCache + + s *service + mu sync.RWMutex +} + +func (m *clientManager) Add(ctx context.Context, ts ...*task) (err error) { + return m.mb.Add(ctx, ts...) +} + +func (m *clientManager) checkPeerLoop() { + m.checkPeers() + ticker := time.NewTicker(time.Minute) + defer ticker.Stop() + for { + select { + case <-m.ctx.Done(): + return + case <-ticker.C: + m.checkPeers() + } + } +} + +func (m *clientManager) checkPeers() { + // start GC to remove unused clients + m.ocache.GC() + if m.ocache.Len() >= maxConnections { + // reached connection limit, can't add new peers + return + } + if m.ocache.Len() != 0 && m.mb.Len() == 0 { + // has empty queue, no need new peers + return + } + + // try to add new peers + peerIds := m.s.filePeers() + rand.Shuffle(len(peerIds), func(i, j int) { + peerIds[i], peerIds[j] = peerIds[j], peerIds[i] + }) + for _, peerId := range peerIds { + if _, cerr := m.ocache.Pick(m.ctx, peerId); cerr == ocache.ErrNotExists { + ctx, cancel := context.WithTimeout(m.ctx, clientCreateTimeout) + cl, err := newClient(ctx, m.s, peerId, m.mb) + if err != nil { + log.Info("can't create client", zap.Error(err)) + cancel() + continue + } + _ = m.ocache.Add(peerId, cl) + cancel() + return + } + } +} + +func (m *clientManager) Close() (err error) { + m.ctxCancel() + if err = m.mb.Close(); err != nil { + log.Error("mb close error", zap.Error(err)) + } + return m.ocache.Close() +} diff --git a/common/commonfile/rpcstore/service.go b/common/commonfile/rpcstore/service.go new file mode 100644 index 00000000..6222721c --- /dev/null +++ b/common/commonfile/rpcstore/service.go @@ -0,0 +1,49 @@ +package rpcstore + +import ( + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/ipfsstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/pool" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf" +) + +const CName = "common.commonfile.rpcstore" + +var log = logger.NewNamed(CName) + +func New() Service { + return &service{} +} + +type Service interface { + NewStore() ipfsstore.IPFSStore + app.Component +} + +type service struct { + pool pool.Pool + nodeconf nodeconf.Service +} + +func (s *service) Init(a *app.App) (err error) { + s.pool = a.MustComponent(pool.CName).(pool.Pool) + s.nodeconf = a.MustComponent(nodeconf.CName).(nodeconf.Service) + return +} + +func (s *service) Name() (name string) { + return CName +} + +func (s *service) NewStore() ipfsstore.IPFSStore { + cm := newClientManager(s) + return &store{ + s: s, + cm: cm, + } +} + +func (s *service) filePeers() []string { + return s.nodeconf.GetLast().FilePeers() +} diff --git a/common/commonfile/rpcstore/stat.go b/common/commonfile/rpcstore/stat.go new file mode 100644 index 00000000..b72cf840 --- /dev/null +++ b/common/commonfile/rpcstore/stat.go @@ -0,0 +1,55 @@ +package rpcstore + +import ( + "github.com/VividCortex/ewma" + "sync" + "time" +) + +// defaultSpeedScore - initial value in Kb/s, it should be relatively high to test fresh client soon +const defaultSpeedScore = 10 * 1024 + +func newStat() *stat { + s := &stat{ + ewma: &ewma.SimpleEWMA{}, + lastUsage: time.Now(), + } + s.ewma.Set(float64(defaultSpeedScore)) + return s +} + +// stat calculates EWMA download/upload speed +type stat struct { + // TODO: rewrite to atomics + ewma *ewma.SimpleEWMA + mu sync.Mutex + lastUsage time.Time +} + +// Score returns average download/upload speed in Kb/s +func (s *stat) Score() float64 { + s.mu.Lock() + defer s.mu.Unlock() + return s.ewma.Value() +} + +// Add adds new sample to the stat +func (s *stat) Add(startTime time.Time, byteLen int) { + s.mu.Lock() + defer s.mu.Unlock() + dur := time.Since(startTime).Seconds() + s.ewma.Add(float64(byteLen) / 1024 / dur) + s.lastUsage = time.Now() +} + +func (s *stat) LastUsage() time.Time { + s.mu.Lock() + defer s.mu.Unlock() + return s.lastUsage +} + +func (s *stat) UpdateLastUsage() { + s.mu.Lock() + defer s.mu.Unlock() + s.lastUsage = time.Now() +} diff --git a/common/commonfile/rpcstore/store.go b/common/commonfile/rpcstore/store.go new file mode 100644 index 00000000..89cf2592 --- /dev/null +++ b/common/commonfile/rpcstore/store.go @@ -0,0 +1,99 @@ +package rpcstore + +import ( + "context" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + "go.uber.org/multierr" + "go.uber.org/zap" + "sync" +) + +var closedBlockChan chan blocks.Block + +func init() { + closedBlockChan = make(chan blocks.Block) + close(closedBlockChan) +} + +type store struct { + s *service + cm *clientManager + mu sync.RWMutex +} + +func (s *store) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { + t := newTask(ctx, taskOpGet, k, nil) + if err = s.cm.Add(ctx, t); err != nil { + return + } + <-t.ready + if err = t.Validate(); err != nil { + return + } + return t.Block() +} + +func (s *store) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + var readyCh = make(chan *task) + var tasks = make([]*task, len(ks)) + for i, k := range ks { + tasks[i] = newTask(ctx, taskOpGet, k, readyCh) + } + if err := s.cm.Add(ctx, tasks...); err != nil { + log.Error("getMany: can't add tasks", zap.Error(err)) + return closedBlockChan + } + var result = make(chan blocks.Block) + go func() { + defer close(result) + for i := 0; i < len(tasks); i++ { + var t *task + select { + case <-ctx.Done(): + return + case t = <-readyCh: + } + if err := t.Validate(); err != nil { + // TODO: fallback + log.Warn("received not valid block", zap.Error(err)) + } + b, _ := t.Block() + result <- b + } + }() + return result +} + +func (s *store) Add(ctx context.Context, bs []blocks.Block) error { + var readyCh = make(chan *task) + var tasks = make([]*task, len(bs)) + for i, b := range bs { + tasks[i] = newTask(ctx, taskOpPut, b.Cid(), readyCh) + tasks[i].data = b.RawData() + } + if err := s.cm.Add(ctx, tasks...); err != nil { + return err + } + var errs []error + for i := 0; i < len(tasks); i++ { + t := <-readyCh + if t.err != nil { + errs = append(errs, t.err) + } + } + return multierr.Combine(errs...) +} + +func (s *store) Delete(ctx context.Context, c cid.Cid) error { + t := newTask(ctx, taskOpDelete, c, nil) + if err := s.cm.Add(ctx, t); err != nil { + return err + } + <-t.ready + return t.err +} + +func (s *store) Close() (err error) { + return s.cm.Close() +} diff --git a/common/commonfile/rpcstore/store_test.go b/common/commonfile/rpcstore/store_test.go new file mode 100644 index 00000000..9ae4d289 --- /dev/null +++ b/common/commonfile/rpcstore/store_test.go @@ -0,0 +1,190 @@ +package rpcstore + +import ( + "context" + "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/rpctest" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "sort" + "sync" + "testing" +) + +var ctx = context.Background() + +func TestStore_Put(t *testing.T) { + fx := newFixture(t) + defer fx.Finish(t) + + bs := []blocks.Block{ + blocks.NewBlock([]byte{'1'}), + blocks.NewBlock([]byte{'2'}), + blocks.NewBlock([]byte{'3'}), + } + err := fx.Add(ctx, bs) + assert.NoError(t, err) + for _, b := range bs { + assert.NotNil(t, fx.serv.data[string(b.Cid().Bytes())]) + } + +} + +func TestStore_Delete(t *testing.T) { + fx := newFixture(t) + defer fx.Finish(t) + bs := []blocks.Block{ + blocks.NewBlock([]byte{'1'}), + } + err := fx.Add(ctx, bs) + require.NoError(t, err) + assert.Len(t, fx.serv.data, 1) + require.NoError(t, fx.Delete(ctx, bs[0].Cid())) + assert.Len(t, fx.serv.data, 0) +} + +func TestStore_Get(t *testing.T) { + t.Run("success", func(t *testing.T) { + fx := newFixture(t) + defer fx.Finish(t) + bs := []blocks.Block{ + blocks.NewBlock([]byte{'1'}), + } + err := fx.Add(ctx, bs) + require.NoError(t, err) + b, err := fx.Get(ctx, bs[0].Cid()) + require.NoError(t, err) + assert.Equal(t, []byte{'1'}, b.RawData()) + }) + t.Run("not found", func(t *testing.T) { + fx := newFixture(t) + defer fx.Finish(t) + bs := []blocks.Block{ + blocks.NewBlock([]byte{'1'}), + } + b, err := fx.Get(ctx, bs[0].Cid()) + assert.Nil(t, b) + assert.ErrorIs(t, err, ErrCIDNotFound) + }) +} + +func TestStore_GetMany(t *testing.T) { + fx := newFixture(t) + defer fx.Finish(t) + + bs := []blocks.Block{ + blocks.NewBlock([]byte{'1'}), + blocks.NewBlock([]byte{'2'}), + blocks.NewBlock([]byte{'3'}), + } + err := fx.Add(ctx, bs) + assert.NoError(t, err) + + res := fx.GetMany(ctx, []cid.Cid{ + bs[0].Cid(), + bs[1].Cid(), + bs[2].Cid(), + }) + var resBlocks []blocks.Block + for b := range res { + resBlocks = append(resBlocks, b) + } + require.Len(t, resBlocks, 3) + sort.Slice(resBlocks, func(i, j int) bool { + return string(resBlocks[i].RawData()) < string(resBlocks[j].RawData()) + }) + assert.Equal(t, bs, resBlocks) +} + +func newFixture(t *testing.T) *fixture { + fx := &fixture{ + a: new(app.App), + s: New().(*service), + serv: &testServer{ + data: make(map[string][]byte), + }, + } + + conf := &config.Config{} + + for i := 0; i < 11; i++ { + conf.Nodes = append(conf.Nodes, config.Node{ + PeerId: fmt.Sprint(i), + Types: []config.NodeType{config.NodeTypeFile}, + }) + } + rserv := rpctest.NewTestServer() + require.NoError(t, fileproto.DRPCRegisterFile(rserv.Mux, fx.serv)) + fx.a.Register(fx.s). + Register(rpctest.NewTestPool().WithServer(rserv)). + Register(nodeconf.New()). + Register(conf) + require.NoError(t, fx.a.Start(ctx)) + fx.store = fx.s.NewStore().(*store) + return fx +} + +type fixture struct { + *store + s *service + a *app.App + serv *testServer +} + +func (fx *fixture) Finish(t *testing.T) { + assert.NoError(t, fx.store.Close()) + assert.NoError(t, fx.a.Close(ctx)) +} + +type testServer struct { + mu sync.Mutex + data map[string][]byte +} + +func (t *testServer) GetBlocks(stream fileproto.DRPCFile_GetBlocksStream) error { + for { + req, err := stream.Recv() + if err != nil { + return err + } + t.mu.Lock() + resp := &fileproto.GetBlockResponse{ + Cid: req.Cid, + } + if data, ok := t.data[string(req.Cid)]; ok { + resp.Data = data + } else { + resp.Code = fileproto.CIDError_CIDErrorNotFound + } + t.mu.Unlock() + if err = stream.Send(resp); err != nil { + return err + } + } +} + +func (t *testServer) PushBlock(ctx context.Context, req *fileproto.PushBlockRequest) (*fileproto.PushBlockResponse, error) { + t.mu.Lock() + defer t.mu.Unlock() + t.data[string(req.Cid)] = req.Data + return &fileproto.PushBlockResponse{}, nil +} + +func (t *testServer) DeleteBlocks(ctx context.Context, req *fileproto.DeleteBlocksRequest) (*fileproto.DeleteBlocksResponse, error) { + t.mu.Lock() + defer t.mu.Unlock() + for _, c := range req.Cid { + delete(t.data, string(c)) + } + return &fileproto.DeleteBlocksResponse{}, nil +} + +func (t *testServer) Check(ctx context.Context, req *fileproto.CheckRequest) (*fileproto.CheckResponse, error) { + return &fileproto.CheckResponse{}, nil +} diff --git a/common/commonfile/rpcstore/task.go b/common/commonfile/rpcstore/task.go new file mode 100644 index 00000000..ae82574d --- /dev/null +++ b/common/commonfile/rpcstore/task.go @@ -0,0 +1,60 @@ +package rpcstore + +import ( + "context" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + "time" +) + +type taskOp uint + +const ( + taskOpGet taskOp = iota + taskOpPut + taskOpDelete +) + +func newTask(ctx context.Context, op taskOp, c cid.Cid, readyCh chan *task) *task { + t := &task{ + cid: c, + ctx: ctx, + ready: readyCh, + op: op, + } + if t.ready == nil { + t.ready = make(chan *task) + } + return t +} + +type task struct { + op taskOp + ctx context.Context + cid cid.Cid + data []byte + peerId string + spaceId string + denyPeerIds []string + ready chan *task + startTime time.Time + err error +} + +func (t *task) Validate() error { + if t.err != nil { + return t.err + } + chkc, err := t.cid.Prefix().Sum(t.data) + if err != nil { + return err + } + if !chkc.Equals(t.cid) { + return blocks.ErrWrongHash + } + return nil +} + +func (t *task) Block() (blocks.Block, error) { + return blocks.NewBlockWithCid(t.data, t.cid) +} diff --git a/common/config/nodes.go b/common/config/nodes.go index 9583d833..ae6217f3 100644 --- a/common/config/nodes.go +++ b/common/config/nodes.go @@ -1,9 +1,26 @@ package config +type NodeType string + +const ( + NodeTypeTree NodeType = "tree" + NodeTypeConsensus NodeType = "consensus" + NodeTypeFile NodeType = "file" +) + type Node struct { - PeerId string `yaml:"peerId"` - Address string `yaml:"address"` - SigningKey string `yaml:"signingKey,omitempty"` - EncryptionKey string `yaml:"encryptionKey,omitempty"` - IsConsensus bool `yaml:"isConsensus,omitempty"` + PeerId string `yaml:"peerId"` + Address string `yaml:"address"` + SigningKey string `yaml:"signingKey,omitempty"` + EncryptionKey string `yaml:"encryptionKey,omitempty"` + Types []NodeType `yaml:"types,omitempty"` +} + +func (n Node) HasType(t NodeType) bool { + for _, nt := range n.Types { + if nt == t { + return true + } + } + return false } diff --git a/common/go.mod b/common/go.mod index bb81243d..929d6866 100644 --- a/common/go.mod +++ b/common/go.mod @@ -29,8 +29,11 @@ require ( ) require ( + github.com/VividCortex/ewma v1.2.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cheggaaa/mb/v2 v2.1.0-alpha // indirect + github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/fogleman/gg v1.3.0 // indirect diff --git a/common/go.sum b/common/go.sum index 048f6b05..1bbe5618 100644 --- a/common/go.sum +++ b/common/go.sum @@ -35,6 +35,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= 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/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= +github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= 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= @@ -58,6 +60,14 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/mb/v2 v2.1.0-alpha h1:GN2R1eUrImfd8lwmx6VfX6E4RqXoOjUBdZLo9aqw87o= +github.com/cheggaaa/mb/v2 v2.1.0-alpha/go.mod h1:XGeZw20Iqgjky26KL0mvCwk3+4NyZCUbshSo6ALne+c= +github.com/cheggaaa/mb/v3 v3.0.0-20221116073802-28877f0c7d6c h1:qgBgvJEmHz9Jhe2Aso0y1djx9RpQo6AiC1k1ScCyQTc= +github.com/cheggaaa/mb/v3 v3.0.0-20221116073802-28877f0c7d6c/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= +github.com/cheggaaa/mb/v3 v3.0.0-20221116093702-e509afb93b07 h1:iApZflWEqUGURwq88cOgAA5+I686xFabUj4YvPCKfUo= +github.com/cheggaaa/mb/v3 v3.0.0-20221116093702-e509afb93b07/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= +github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c h1:+bD75daSbsxyTzkKpNplC4xls+7/tGwty+zruzOnOmk= +github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= diff --git a/common/nodeconf/configuration.go b/common/nodeconf/configuration.go index eecc53c3..9e27742b 100644 --- a/common/nodeconf/configuration.go +++ b/common/nodeconf/configuration.go @@ -5,10 +5,6 @@ import ( "github.com/anytypeio/go-chash" ) -func New() Service { - return new(service) -} - type Configuration interface { // Id returns current nodeconf id Id() string @@ -16,12 +12,18 @@ type Configuration interface { NodeIds(spaceId string) []string // IsResponsible checks if current account responsible for given spaceId IsResponsible(spaceId string) bool + // FilePeers returns list of filenodes + FilePeers() []string + // ConsensusPeers returns list of consensusnodes + ConsensusPeers() []string } type configuration struct { - id string - accountId string - chash chash.CHash + id string + accountId string + filePeers []string + consensusPeers []string + chash chash.CHash } func (c *configuration) Id() string { @@ -47,3 +49,11 @@ func (c *configuration) IsResponsible(spaceId string) bool { } return false } + +func (c *configuration) FilePeers() []string { + return c.filePeers +} + +func (c *configuration) ConsensusPeers() []string { + return c.consensusPeers +} diff --git a/common/nodeconf/mock_nodeconf/mock_nodeconf.go b/common/nodeconf/mock_nodeconf/mock_nodeconf.go index 206c2528..9e3ad580 100644 --- a/common/nodeconf/mock_nodeconf/mock_nodeconf.go +++ b/common/nodeconf/mock_nodeconf/mock_nodeconf.go @@ -37,20 +37,6 @@ func (m *MockService) EXPECT() *MockServiceMockRecorder { return m.recorder } -// ConsensusPeers mocks base method. -func (m *MockService) ConsensusPeers() []string { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "ConsensusPeers") - ret0, _ := ret[0].([]string) - return ret0 -} - -// ConsensusPeers indicates an expected call of ConsensusPeers. -func (mr *MockServiceMockRecorder) ConsensusPeers() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConsensusPeers", reflect.TypeOf((*MockService)(nil).ConsensusPeers)) -} - // GetById mocks base method. func (m *MockService) GetById(arg0 string) nodeconf.Configuration { m.ctrl.T.Helper() @@ -130,6 +116,34 @@ func (m *MockConfiguration) EXPECT() *MockConfigurationMockRecorder { return m.recorder } +// ConsensusPeers mocks base method. +func (m *MockConfiguration) ConsensusPeers() []string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "ConsensusPeers") + ret0, _ := ret[0].([]string) + return ret0 +} + +// ConsensusPeers indicates an expected call of ConsensusPeers. +func (mr *MockConfigurationMockRecorder) ConsensusPeers() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ConsensusPeers", reflect.TypeOf((*MockConfiguration)(nil).ConsensusPeers)) +} + +// FilePeers mocks base method. +func (m *MockConfiguration) FilePeers() []string { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "FilePeers") + ret0, _ := ret[0].([]string) + return ret0 +} + +// FilePeers indicates an expected call of FilePeers. +func (mr *MockConfigurationMockRecorder) FilePeers() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FilePeers", reflect.TypeOf((*MockConfiguration)(nil).FilePeers)) +} + // Id mocks base method. func (m *MockConfiguration) Id() string { m.ctrl.T.Helper() diff --git a/common/nodeconf/service.go b/common/nodeconf/service.go index babf13ba..29fef97f 100644 --- a/common/nodeconf/service.go +++ b/common/nodeconf/service.go @@ -19,18 +19,19 @@ const ( var log = logger.NewNamed(CName) +func New() Service { + return new(service) +} + type Service interface { GetLast() Configuration GetById(id string) Configuration - ConsensusPeers() []string app.Component } type service struct { accountId string - - consensusPeers []string - last Configuration + last Configuration } type Node struct { @@ -52,11 +53,11 @@ func (s *service) Init(a *app.App) (err error) { conf := a.MustComponent(config.CName).(*config.Config) s.accountId = conf.Account.PeerId - config := &configuration{ + fileConfig := &configuration{ id: "config", accountId: s.accountId, } - if config.chash, err = chash.New(chash.Config{ + if fileConfig.chash, err = chash.New(chash.Config{ PartitionCount: partitionCount, ReplicationFactor: replicationFactor, }); err != nil { @@ -64,21 +65,28 @@ func (s *service) Init(a *app.App) (err error) { } members := make([]chash.Member, 0, len(conf.Nodes)) for _, n := range conf.Nodes { - if n.IsConsensus { - s.consensusPeers = append(s.consensusPeers, n.PeerId) + if n.HasType(config.NodeTypeTree) { + var member *Node + member, err = nodeFromConfigNode(n) + if err != nil { + return + } + members = append(members, member) + } + if n.PeerId == s.accountId { continue } - var member *Node - member, err = nodeFromConfigNode(n) - if err != nil { - return + if n.HasType(config.NodeTypeConsensus) { + fileConfig.consensusPeers = append(fileConfig.consensusPeers, n.PeerId) + } + if n.HasType(config.NodeTypeFile) { + fileConfig.filePeers = append(fileConfig.filePeers, n.PeerId) } - members = append(members, member) } - if err = config.chash.AddMembers(members...); err != nil { + if err = fileConfig.chash.AddMembers(members...); err != nil { return } - s.last = config + s.last = fileConfig return } @@ -95,10 +103,6 @@ func (s *service) GetById(id string) Configuration { panic("implement me") } -func (s *service) ConsensusPeers() []string { - return s.consensusPeers -} - func nodeFromConfigNode( n config.Node) (*Node, error) { decodedSigningKey, err := keys.DecodeKeyFromString( diff --git a/common/pkg/ocache/ocache.go b/common/pkg/ocache/ocache.go index 629a5864..31a788ce 100644 --- a/common/pkg/ocache/ocache.go +++ b/common/pkg/ocache/ocache.go @@ -63,7 +63,7 @@ func New(loadFunc LoadFunc, opts ...Option) OCache { for _, o := range opts { o(c) } - if c.ttl != 0 { + if c.ttl != 0 && c.gc != 0 { go c.ticker() } return c diff --git a/consensus/consensusclient/client.go b/consensus/consensusclient/client.go index 48576dd4..fe4be257 100644 --- a/consensus/consensusclient/client.go +++ b/consensus/consensusclient/client.go @@ -75,7 +75,7 @@ func (s *service) Run(_ context.Context) error { } func (s *service) getClient(ctx context.Context) (consensusproto.DRPCConsensusClient, error) { - peer, err := s.pool.GetOneOf(ctx, s.nodeconf.ConsensusPeers()) + peer, err := s.pool.GetOneOf(ctx, s.nodeconf.GetLast().ConsensusPeers()) if err != nil { return nil, err } @@ -83,7 +83,7 @@ func (s *service) getClient(ctx context.Context) (consensusproto.DRPCConsensusCl } func (s *service) dialClient(ctx context.Context) (consensusproto.DRPCConsensusClient, error) { - peer, err := s.pool.DialOneOf(ctx, s.nodeconf.ConsensusPeers()) + peer, err := s.pool.DialOneOf(ctx, s.nodeconf.GetLast().ConsensusPeers()) if err != nil { return nil, err } diff --git a/consensus/consensusclient/client_test.go b/consensus/consensusclient/client_test.go index e7557d0d..8ca61f51 100644 --- a/consensus/consensusclient/client_test.go +++ b/consensus/consensusclient/client_test.go @@ -4,10 +4,10 @@ import ( "context" "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/pool" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/rpctest" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf/mock_nodeconf" "github.com/anytypeio/go-anytype-infrastructure-experiments/consensus/consensusproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/consensus/consensusproto/consensuserr" "github.com/golang/mock/gomock" @@ -131,22 +131,34 @@ func newFixture(t *testing.T) *fixture { stream: make(chan consensusproto.DRPCConsensus_WatchLogStream), releaseStream: make(chan error), }, + nodeconf: nodeconf.New(), } - fx.nodeconf = mock_nodeconf.NewMockService(fx.ctrl) - fx.nodeconf.EXPECT().Init(gomock.Any()) - fx.nodeconf.EXPECT().Name().Return(nodeconf.CName).AnyTimes() - fx.nodeconf.EXPECT().ConsensusPeers().Return([]string{"c1", "c2"}).AnyTimes() + fx.drpcTS = rpctest.NewTestServer() require.NoError(t, consensusproto.DRPCRegisterConsensus(fx.drpcTS.Mux, fx.testServer)) fx.a.Register(fx.Service). Register(fx.nodeconf). - Register(rpctest.NewTestPool().WithServer(fx.drpcTS)) + Register(rpctest.NewTestPool().WithServer(fx.drpcTS)). + Register(&config.Config{Nodes: []config.Node{ + { + PeerId: "c1", + Types: []config.NodeType{config.NodeTypeConsensus}, + }, + { + PeerId: "c2", + Types: []config.NodeType{config.NodeTypeConsensus}, + }, + { + PeerId: "c3", + Types: []config.NodeType{config.NodeTypeConsensus}, + }, + }}) return fx } type fixture struct { Service - nodeconf *mock_nodeconf.MockService + nodeconf nodeconf.Service a *app.App ctrl *gomock.Controller testServer *testServer diff --git a/consensus/consensusclient/stream.go b/consensus/consensusclient/stream.go index d2865326..91f49207 100644 --- a/consensus/consensusclient/stream.go +++ b/consensus/consensusclient/stream.go @@ -1,15 +1,16 @@ package consensusclient import ( + "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/consensus/consensusproto" - "github.com/cheggaaa/mb/v2" + "github.com/cheggaaa/mb/v3" "sync" ) func runStream(rpcStream consensusproto.DRPCConsensus_WatchLogClient) *stream { st := &stream{ rpcStream: rpcStream, - mb: mb.New((*consensusproto.WatchLogEvent)(nil), 100), + mb: mb.New[*consensusproto.WatchLogEvent](100), } go st.readStream() return st @@ -35,7 +36,8 @@ func (s *stream) UnwatchIds(logIds [][]byte) (err error) { } func (s *stream) WaitLogs() []*consensusproto.WatchLogEvent { - return s.mb.Wait() + events, _ := s.mb.Wait(context.TODO()) + return events } func (s *stream) Err() error { @@ -54,7 +56,7 @@ func (s *stream) readStream() { s.mu.Unlock() return } - if err = s.mb.Add(event); err != nil { + if err = s.mb.Add(s.rpcStream.Context(), event); err != nil { return } } diff --git a/consensus/stream/service.go b/consensus/stream/service.go index c659786a..e16da5ef 100644 --- a/consensus/stream/service.go +++ b/consensus/stream/service.go @@ -8,7 +8,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/ocache" "github.com/anytypeio/go-anytype-infrastructure-experiments/consensus" "github.com/anytypeio/go-anytype-infrastructure-experiments/consensus/db" - "github.com/cheggaaa/mb/v2" + "github.com/cheggaaa/mb/v3" "github.com/mr-tron/base58" "go.uber.org/zap" "sync/atomic" @@ -72,7 +72,7 @@ func (s *service) NewStream() *Stream { return &Stream{ id: atomic.AddUint64(&s.lastStreamId, 1), logIds: make(map[string]struct{}), - mb: mb.New(consensus.Log{}, 100), + mb: mb.New[consensus.Log](100), s: s, } } diff --git a/consensus/stream/stream.go b/consensus/stream/stream.go index 83684677..b7e58e16 100644 --- a/consensus/stream/stream.go +++ b/consensus/stream/stream.go @@ -3,7 +3,7 @@ package stream import ( "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/consensus" - "github.com/cheggaaa/mb/v2" + "github.com/cheggaaa/mb/v3" "go.uber.org/zap" "sync" ) @@ -30,13 +30,14 @@ func (s *Stream) LogIds() [][]byte { // AddRecords adds new records to stream, called by objects func (s *Stream) AddRecords(logId []byte, records []consensus.Record) (err error) { - return s.mb.Add(consensus.Log{Id: logId, Records: records}) + return s.mb.Add(context.TODO(), consensus.Log{Id: logId, Records: records}) } // WaitLogs wait for new log records // empty returned slice means that stream is closed func (s *Stream) WaitLogs() []consensus.Log { - return s.mb.Wait() + logs, _ := s.mb.Wait(context.TODO()) + return logs } // WatchIds adds given ids to subscription @@ -49,7 +50,7 @@ func (s *Stream) WatchIds(ctx context.Context, logIds [][]byte) { s.logIds[logIdKey] = struct{}{} if addErr := s.s.AddStream(ctx, logId, s); addErr != nil { log.Info("can't add stream for log", zap.Binary("logId", logId), zap.Error(addErr)) - _ = s.mb.Add(consensus.Log{ + _ = s.mb.Add(ctx, consensus.Log{ Id: logId, Err: addErr, }) diff --git a/etc/configs/client1.yml b/etc/configs/client1.yml index 92f7461f..f07243e6 100755 --- a/etc/configs/client1.yml +++ b/etc/configs/client1.yml @@ -16,14 +16,17 @@ nodes: address: 127.0.0.1:4430 signingKey: 3mzfKBWtn7mitFEgq8u4eysWOJ6ySbUs49irfHwcuOmi1YMpobz9anoqd4yaT1owZiRPYXqx5k2Z4sNVRE3kXA== encryptionKey: MIIEpQIBAAKCAQEA3U7b4w9JTKE3TLM1WQ5iqdLbvUuozMp/hDEg7S15Gr6wrtLomMSBkfmVQ3Cu+CHdxAFqUFClItYlSFgtZWIFiSiQxCeaN2dmgczd9T4TlRAw6y6uJXtT9r7FIgizPP4B0/tnzPI6yYgpdwzCV2nRSjw3mMr5Nav3QYs18kYrJ1/Np2Wob5HOoRTUD++pPrToevTb7GNL/irrC8wXSE7oU6S7ix6Nh9vzEHg/V5FONBF/wWD/ri7Gy0j0qgUQ+gjxLWKr8xPDnRAve13zzo+54lGCyVvlm/rwCY9Jx378V1IuRx+S8F/GFuVozHD4XVaoSTtpCWPBQNSKDXgaIIKDowIDAQABAoIBACpMXj6ht1LMJXOldPbWhwkKYjFl+pdZxNGRSkfKvzDbbY2chhRcyp8J4vuG2ApY/rftxVIgd8+Wun1/TP3ppEE43aKAJzubqb35WBr9iGSfOZpZy7MiRUQN5kPBAfEQY20OyiIj0hSez74PVD283eGgbMfpU4Rsn8+JOgBaZPkbPViJLJY8PyHU6vwWw60dye1iJTz9yuBtoEqY0XKxnLaVXTQaWx0Te+VYU8twxDgXFWRaXtHuk7xnxOkCZDLrzIvuOYa5lsLoT8K62LDeXbyHBPhbdW0j4ZYzAOTsaUWpjuJzef9aj3JJdfyADiqb5iu6HHksvKzkZEau34zjilECgYEA/c8ZJm62uJMHNssTJYiLRw89l5hYwIZ/1TXdFRF8+xrTin5opYjpscSTO5bY2IYqLx2xuPiJCY1eGGB9L/RtkaVh51ySzq0d+4zpPIRKFcOOgdxHwlgoCgIhQECyfJZNMFGBUIlPXZ/phvXOXRvWFzDPhqThenVG2QzF+wLP0AUCgYEA3zfviQFJ1FOKJMozYO3tUZFmsIrAcO9hfuE7uuWz0Fw2m1XiwxjuOr1RbsSsh/lKke2h4tiGrlfiFhwCpIp91NkVTFrtFOQxbDxkYLkFiWkZDkOaK9YhKMa2cgEm3p+RGawokjbm51LKf+cbYN9xGaAe3y2WzIE4kNpfWE4SXYcCgYEAoagcrrvpqZoMCDxED63ud+4fHsUsEkQYe6Z5EAg5gH5PqnBlGrofjthTpqqnpxGdILFbFyNFtU3TVtduJPMcLp4Vw5TU9MqSxDu1+pOP1FjgFZpGImSf6+/7Wb9bb7sToujm4nLymAFYblt1exxVuiOeqnWuH58+5tQZ7YyW7DkCgYEAl7WuqZEkmpiEpWh/7vsGdo+6GXbUQG2R9+gg7m+7/HsP6hc/XZYOJAIT3JLzKB84nWHCyyiasNeuI5S5/xbZWtaH8TNDOxW0uXl6R3q41qGFk/pCSFTqiIo16dn6jwgoWCh4EpgZ61KLqs5p/zcd6Wq4ULrtaOTSizC/6IZ3WPUCgYEA6xCJy3+ICCgr8/c7hfd2Ylb3aOsXIffdgALhXjDcrNUCqgB4R+S3WReAwrABemQGl4tySQE/1f3Ru7SzMMciFogGyJ/YSXqSi6Y8oDD7MqlKPiWlN6WY1nSRMlLbkUOqpA5JaDM0kcmXjZpBBQr277GOnh9uKN8zUy5xoptctxI= + types : ["tree", "file"] - peerId: 12D3KooWLtuKtCPBYrFJV1NdejiCr2s614ppe9rmUXnkTHtAUD5U address: 127.0.0.1:4431 signingKey: 07JMoW5cQUtGO9nNIGQo9e99b7Wf/4YvTtNEA0lt4gCkmhwB1EB9ay+kitxVJJgmdyGLxbUUlGqwXsAj0zlHWw== encryptionKey: MIIEpAIBAAKCAQEA7cA6J/icl8wseeXkt8oJr5AeYadUAG5EdCOdHj4S/Z7ivff4MOIKAeQITpq+rqhmXxOePYXSpQXE20Y9PW9tuw4gzOuq1ylSG/MWMcLDH1eIxg66rnmUqUbdiW4GGJjVjc9jvN0Up+MfSrUF6fM0jWTFoXVJQIeQQGERCIYjFzjfBl1xYvPghdxNgei/K5ZGYRggT28143XdIH4KTXGtp51hAKoyY9eCqYMtm9wvjxazhPVxO2CsYaqMxBLshY3jfHNqJnx8u6+h4Bl4uUcdbLNUgMcEgk7ehbQp2K0CqNoKXxbCTI6V57UVcJHDIaO5B6FyR6BguzHHNPJ4yd3q9wIDAQABAoIBAQCm2Mf3VRlPzhFIWnVwJXE2q8Umcu8Yfkm712Jj3twk8GPfPS4H4Bl1yjmqMB6xI6zz/CiItGlnNe04lMpVWuV+6CNMq/ZwmKbuxmFE+pFEZYGuvJd16gzR3tGJqJTOnjMAGhK8b8oXJ+TF4NQNooe20ol/DXgiuQAargPuH3RwzjYmF3N8VI4KUc3LaG4TwVXn4LwPOxrQSnfwJlZwLml1HAKOV0qcG0mXX6ZXOpoVhEoRPdQyUHc8ZW+53Agbtind7bYh5TsMVDFUrcgNwnwTOsWjil049la1IJO2uMRluacKlrtyzEp6zqrW8ZJO7mYAO69x4WyGqf2ZgIdA6djBAoGBAPqRHWAIgPa80eXbwCYkRtUG/ONBsQGi7+wm6nyhkXvNXJeokgH2DCgLH2+fW2scfOJuZc9r5WftEjOBvNfr2LDcwdyTSTh21WYcPSZx9HDf2d5/SWTcjNcyU0b5qfWIUKi/Zm9UY7r3X7yMA5dUD/cvu1PBJ5NWFrK1Gm2ph44dAoGBAPLn+LkHweU0fbxQq/76T5yVVpMKUaE9xwrJlUxEDPAQGnLPbFg4JeUt/YPhsOV85W4c4oQE+uFZrF0uf+1fEnS6MOJ+sq668upzC2hBp1B5138wM7615v1rvXVVH6qXfFop67FdBzPHt1NAN43mEIBZHTQ5hSVXFlYSZp9mxuEjAoGBAKCzUVO2IIAeub/iIGpV+dfGk4ptJ0kVZyreCqXEObpdC3V496uqUkGcYJ0GZ2ta6f2PMFzHpmnw8it2mdchu+gyrWL6U4uTK2pB0jZF/7Ak4WaB3GCD0xBxhleO6CJBOvn/R4M/bHcNEKmsYuE7WMIAKvScfPVR0VzsKfcLM5VBAoGAVvWg32zdh1bBZLdku8WU1rPH6KAbFSRuq3f7UPBTyWWaclu7p+GB/4f1aE9V6vJJmKASn7zArAhUYo+REMOmcc9uTMea5F7dM/23qb1HTtIvycLR44ZviW4Wx3iP+5x70jOLw1VQjMME6HLm8I/afHhqshWdiv6ganPv9UTwEg0CgYBSDi2dqg8F7ij5CN+LMDLSn3b8GCw+7efGIt7imm/O2V/FlHD40IA6qGg6DXNQrnoZQt94nMb1cZEvm1dxi6rmQNrhCyoMogAaPqgFhZGq1OjmhVZiXFUWy4WAcjdzFc9wZd3/XtaofRKHLK+ngTFhhVApKypLk3Rg9bCAAjzyVg== + types : ["tree", "file"] - peerId: 12D3KooWDCypXSyN6ppuMZGxVnBd1ZQCMV4y7Bn187S4duYmf8rA address: 127.0.0.1:4432 signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== + types : ["tree", "file"] space: gcTTL: 60 syncPeriod: 10 diff --git a/etc/configs/client2.yml b/etc/configs/client2.yml index bb8d6fbd..29fb3d85 100755 --- a/etc/configs/client2.yml +++ b/etc/configs/client2.yml @@ -16,14 +16,17 @@ nodes: address: 127.0.0.1:4430 signingKey: 3mzfKBWtn7mitFEgq8u4eysWOJ6ySbUs49irfHwcuOmi1YMpobz9anoqd4yaT1owZiRPYXqx5k2Z4sNVRE3kXA== encryptionKey: MIIEpQIBAAKCAQEA3U7b4w9JTKE3TLM1WQ5iqdLbvUuozMp/hDEg7S15Gr6wrtLomMSBkfmVQ3Cu+CHdxAFqUFClItYlSFgtZWIFiSiQxCeaN2dmgczd9T4TlRAw6y6uJXtT9r7FIgizPP4B0/tnzPI6yYgpdwzCV2nRSjw3mMr5Nav3QYs18kYrJ1/Np2Wob5HOoRTUD++pPrToevTb7GNL/irrC8wXSE7oU6S7ix6Nh9vzEHg/V5FONBF/wWD/ri7Gy0j0qgUQ+gjxLWKr8xPDnRAve13zzo+54lGCyVvlm/rwCY9Jx378V1IuRx+S8F/GFuVozHD4XVaoSTtpCWPBQNSKDXgaIIKDowIDAQABAoIBACpMXj6ht1LMJXOldPbWhwkKYjFl+pdZxNGRSkfKvzDbbY2chhRcyp8J4vuG2ApY/rftxVIgd8+Wun1/TP3ppEE43aKAJzubqb35WBr9iGSfOZpZy7MiRUQN5kPBAfEQY20OyiIj0hSez74PVD283eGgbMfpU4Rsn8+JOgBaZPkbPViJLJY8PyHU6vwWw60dye1iJTz9yuBtoEqY0XKxnLaVXTQaWx0Te+VYU8twxDgXFWRaXtHuk7xnxOkCZDLrzIvuOYa5lsLoT8K62LDeXbyHBPhbdW0j4ZYzAOTsaUWpjuJzef9aj3JJdfyADiqb5iu6HHksvKzkZEau34zjilECgYEA/c8ZJm62uJMHNssTJYiLRw89l5hYwIZ/1TXdFRF8+xrTin5opYjpscSTO5bY2IYqLx2xuPiJCY1eGGB9L/RtkaVh51ySzq0d+4zpPIRKFcOOgdxHwlgoCgIhQECyfJZNMFGBUIlPXZ/phvXOXRvWFzDPhqThenVG2QzF+wLP0AUCgYEA3zfviQFJ1FOKJMozYO3tUZFmsIrAcO9hfuE7uuWz0Fw2m1XiwxjuOr1RbsSsh/lKke2h4tiGrlfiFhwCpIp91NkVTFrtFOQxbDxkYLkFiWkZDkOaK9YhKMa2cgEm3p+RGawokjbm51LKf+cbYN9xGaAe3y2WzIE4kNpfWE4SXYcCgYEAoagcrrvpqZoMCDxED63ud+4fHsUsEkQYe6Z5EAg5gH5PqnBlGrofjthTpqqnpxGdILFbFyNFtU3TVtduJPMcLp4Vw5TU9MqSxDu1+pOP1FjgFZpGImSf6+/7Wb9bb7sToujm4nLymAFYblt1exxVuiOeqnWuH58+5tQZ7YyW7DkCgYEAl7WuqZEkmpiEpWh/7vsGdo+6GXbUQG2R9+gg7m+7/HsP6hc/XZYOJAIT3JLzKB84nWHCyyiasNeuI5S5/xbZWtaH8TNDOxW0uXl6R3q41qGFk/pCSFTqiIo16dn6jwgoWCh4EpgZ61KLqs5p/zcd6Wq4ULrtaOTSizC/6IZ3WPUCgYEA6xCJy3+ICCgr8/c7hfd2Ylb3aOsXIffdgALhXjDcrNUCqgB4R+S3WReAwrABemQGl4tySQE/1f3Ru7SzMMciFogGyJ/YSXqSi6Y8oDD7MqlKPiWlN6WY1nSRMlLbkUOqpA5JaDM0kcmXjZpBBQr277GOnh9uKN8zUy5xoptctxI= + types : ["tree", "file"] - peerId: 12D3KooWLtuKtCPBYrFJV1NdejiCr2s614ppe9rmUXnkTHtAUD5U address: 127.0.0.1:4431 signingKey: 07JMoW5cQUtGO9nNIGQo9e99b7Wf/4YvTtNEA0lt4gCkmhwB1EB9ay+kitxVJJgmdyGLxbUUlGqwXsAj0zlHWw== encryptionKey: MIIEpAIBAAKCAQEA7cA6J/icl8wseeXkt8oJr5AeYadUAG5EdCOdHj4S/Z7ivff4MOIKAeQITpq+rqhmXxOePYXSpQXE20Y9PW9tuw4gzOuq1ylSG/MWMcLDH1eIxg66rnmUqUbdiW4GGJjVjc9jvN0Up+MfSrUF6fM0jWTFoXVJQIeQQGERCIYjFzjfBl1xYvPghdxNgei/K5ZGYRggT28143XdIH4KTXGtp51hAKoyY9eCqYMtm9wvjxazhPVxO2CsYaqMxBLshY3jfHNqJnx8u6+h4Bl4uUcdbLNUgMcEgk7ehbQp2K0CqNoKXxbCTI6V57UVcJHDIaO5B6FyR6BguzHHNPJ4yd3q9wIDAQABAoIBAQCm2Mf3VRlPzhFIWnVwJXE2q8Umcu8Yfkm712Jj3twk8GPfPS4H4Bl1yjmqMB6xI6zz/CiItGlnNe04lMpVWuV+6CNMq/ZwmKbuxmFE+pFEZYGuvJd16gzR3tGJqJTOnjMAGhK8b8oXJ+TF4NQNooe20ol/DXgiuQAargPuH3RwzjYmF3N8VI4KUc3LaG4TwVXn4LwPOxrQSnfwJlZwLml1HAKOV0qcG0mXX6ZXOpoVhEoRPdQyUHc8ZW+53Agbtind7bYh5TsMVDFUrcgNwnwTOsWjil049la1IJO2uMRluacKlrtyzEp6zqrW8ZJO7mYAO69x4WyGqf2ZgIdA6djBAoGBAPqRHWAIgPa80eXbwCYkRtUG/ONBsQGi7+wm6nyhkXvNXJeokgH2DCgLH2+fW2scfOJuZc9r5WftEjOBvNfr2LDcwdyTSTh21WYcPSZx9HDf2d5/SWTcjNcyU0b5qfWIUKi/Zm9UY7r3X7yMA5dUD/cvu1PBJ5NWFrK1Gm2ph44dAoGBAPLn+LkHweU0fbxQq/76T5yVVpMKUaE9xwrJlUxEDPAQGnLPbFg4JeUt/YPhsOV85W4c4oQE+uFZrF0uf+1fEnS6MOJ+sq668upzC2hBp1B5138wM7615v1rvXVVH6qXfFop67FdBzPHt1NAN43mEIBZHTQ5hSVXFlYSZp9mxuEjAoGBAKCzUVO2IIAeub/iIGpV+dfGk4ptJ0kVZyreCqXEObpdC3V496uqUkGcYJ0GZ2ta6f2PMFzHpmnw8it2mdchu+gyrWL6U4uTK2pB0jZF/7Ak4WaB3GCD0xBxhleO6CJBOvn/R4M/bHcNEKmsYuE7WMIAKvScfPVR0VzsKfcLM5VBAoGAVvWg32zdh1bBZLdku8WU1rPH6KAbFSRuq3f7UPBTyWWaclu7p+GB/4f1aE9V6vJJmKASn7zArAhUYo+REMOmcc9uTMea5F7dM/23qb1HTtIvycLR44ZviW4Wx3iP+5x70jOLw1VQjMME6HLm8I/afHhqshWdiv6ganPv9UTwEg0CgYBSDi2dqg8F7ij5CN+LMDLSn3b8GCw+7efGIt7imm/O2V/FlHD40IA6qGg6DXNQrnoZQt94nMb1cZEvm1dxi6rmQNrhCyoMogAaPqgFhZGq1OjmhVZiXFUWy4WAcjdzFc9wZd3/XtaofRKHLK+ngTFhhVApKypLk3Rg9bCAAjzyVg== + types : ["tree", "file"] - peerId: 12D3KooWDCypXSyN6ppuMZGxVnBd1ZQCMV4y7Bn187S4duYmf8rA address: 127.0.0.1:4432 signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== + types : ["tree", "file"] space: gcTTL: 60 syncPeriod: 10 diff --git a/etc/configs/node1.yml b/etc/configs/node1.yml index 431d2b09..87732b6e 100755 --- a/etc/configs/node1.yml +++ b/etc/configs/node1.yml @@ -16,14 +16,17 @@ nodes: address: 127.0.0.1:4430 signingKey: 3mzfKBWtn7mitFEgq8u4eysWOJ6ySbUs49irfHwcuOmi1YMpobz9anoqd4yaT1owZiRPYXqx5k2Z4sNVRE3kXA== encryptionKey: MIIEpQIBAAKCAQEA3U7b4w9JTKE3TLM1WQ5iqdLbvUuozMp/hDEg7S15Gr6wrtLomMSBkfmVQ3Cu+CHdxAFqUFClItYlSFgtZWIFiSiQxCeaN2dmgczd9T4TlRAw6y6uJXtT9r7FIgizPP4B0/tnzPI6yYgpdwzCV2nRSjw3mMr5Nav3QYs18kYrJ1/Np2Wob5HOoRTUD++pPrToevTb7GNL/irrC8wXSE7oU6S7ix6Nh9vzEHg/V5FONBF/wWD/ri7Gy0j0qgUQ+gjxLWKr8xPDnRAve13zzo+54lGCyVvlm/rwCY9Jx378V1IuRx+S8F/GFuVozHD4XVaoSTtpCWPBQNSKDXgaIIKDowIDAQABAoIBACpMXj6ht1LMJXOldPbWhwkKYjFl+pdZxNGRSkfKvzDbbY2chhRcyp8J4vuG2ApY/rftxVIgd8+Wun1/TP3ppEE43aKAJzubqb35WBr9iGSfOZpZy7MiRUQN5kPBAfEQY20OyiIj0hSez74PVD283eGgbMfpU4Rsn8+JOgBaZPkbPViJLJY8PyHU6vwWw60dye1iJTz9yuBtoEqY0XKxnLaVXTQaWx0Te+VYU8twxDgXFWRaXtHuk7xnxOkCZDLrzIvuOYa5lsLoT8K62LDeXbyHBPhbdW0j4ZYzAOTsaUWpjuJzef9aj3JJdfyADiqb5iu6HHksvKzkZEau34zjilECgYEA/c8ZJm62uJMHNssTJYiLRw89l5hYwIZ/1TXdFRF8+xrTin5opYjpscSTO5bY2IYqLx2xuPiJCY1eGGB9L/RtkaVh51ySzq0d+4zpPIRKFcOOgdxHwlgoCgIhQECyfJZNMFGBUIlPXZ/phvXOXRvWFzDPhqThenVG2QzF+wLP0AUCgYEA3zfviQFJ1FOKJMozYO3tUZFmsIrAcO9hfuE7uuWz0Fw2m1XiwxjuOr1RbsSsh/lKke2h4tiGrlfiFhwCpIp91NkVTFrtFOQxbDxkYLkFiWkZDkOaK9YhKMa2cgEm3p+RGawokjbm51LKf+cbYN9xGaAe3y2WzIE4kNpfWE4SXYcCgYEAoagcrrvpqZoMCDxED63ud+4fHsUsEkQYe6Z5EAg5gH5PqnBlGrofjthTpqqnpxGdILFbFyNFtU3TVtduJPMcLp4Vw5TU9MqSxDu1+pOP1FjgFZpGImSf6+/7Wb9bb7sToujm4nLymAFYblt1exxVuiOeqnWuH58+5tQZ7YyW7DkCgYEAl7WuqZEkmpiEpWh/7vsGdo+6GXbUQG2R9+gg7m+7/HsP6hc/XZYOJAIT3JLzKB84nWHCyyiasNeuI5S5/xbZWtaH8TNDOxW0uXl6R3q41qGFk/pCSFTqiIo16dn6jwgoWCh4EpgZ61KLqs5p/zcd6Wq4ULrtaOTSizC/6IZ3WPUCgYEA6xCJy3+ICCgr8/c7hfd2Ylb3aOsXIffdgALhXjDcrNUCqgB4R+S3WReAwrABemQGl4tySQE/1f3Ru7SzMMciFogGyJ/YSXqSi6Y8oDD7MqlKPiWlN6WY1nSRMlLbkUOqpA5JaDM0kcmXjZpBBQr277GOnh9uKN8zUy5xoptctxI= + types : ["tree", "file"] - peerId: 12D3KooWLtuKtCPBYrFJV1NdejiCr2s614ppe9rmUXnkTHtAUD5U address: 127.0.0.1:4431 signingKey: 07JMoW5cQUtGO9nNIGQo9e99b7Wf/4YvTtNEA0lt4gCkmhwB1EB9ay+kitxVJJgmdyGLxbUUlGqwXsAj0zlHWw== encryptionKey: MIIEpAIBAAKCAQEA7cA6J/icl8wseeXkt8oJr5AeYadUAG5EdCOdHj4S/Z7ivff4MOIKAeQITpq+rqhmXxOePYXSpQXE20Y9PW9tuw4gzOuq1ylSG/MWMcLDH1eIxg66rnmUqUbdiW4GGJjVjc9jvN0Up+MfSrUF6fM0jWTFoXVJQIeQQGERCIYjFzjfBl1xYvPghdxNgei/K5ZGYRggT28143XdIH4KTXGtp51hAKoyY9eCqYMtm9wvjxazhPVxO2CsYaqMxBLshY3jfHNqJnx8u6+h4Bl4uUcdbLNUgMcEgk7ehbQp2K0CqNoKXxbCTI6V57UVcJHDIaO5B6FyR6BguzHHNPJ4yd3q9wIDAQABAoIBAQCm2Mf3VRlPzhFIWnVwJXE2q8Umcu8Yfkm712Jj3twk8GPfPS4H4Bl1yjmqMB6xI6zz/CiItGlnNe04lMpVWuV+6CNMq/ZwmKbuxmFE+pFEZYGuvJd16gzR3tGJqJTOnjMAGhK8b8oXJ+TF4NQNooe20ol/DXgiuQAargPuH3RwzjYmF3N8VI4KUc3LaG4TwVXn4LwPOxrQSnfwJlZwLml1HAKOV0qcG0mXX6ZXOpoVhEoRPdQyUHc8ZW+53Agbtind7bYh5TsMVDFUrcgNwnwTOsWjil049la1IJO2uMRluacKlrtyzEp6zqrW8ZJO7mYAO69x4WyGqf2ZgIdA6djBAoGBAPqRHWAIgPa80eXbwCYkRtUG/ONBsQGi7+wm6nyhkXvNXJeokgH2DCgLH2+fW2scfOJuZc9r5WftEjOBvNfr2LDcwdyTSTh21WYcPSZx9HDf2d5/SWTcjNcyU0b5qfWIUKi/Zm9UY7r3X7yMA5dUD/cvu1PBJ5NWFrK1Gm2ph44dAoGBAPLn+LkHweU0fbxQq/76T5yVVpMKUaE9xwrJlUxEDPAQGnLPbFg4JeUt/YPhsOV85W4c4oQE+uFZrF0uf+1fEnS6MOJ+sq668upzC2hBp1B5138wM7615v1rvXVVH6qXfFop67FdBzPHt1NAN43mEIBZHTQ5hSVXFlYSZp9mxuEjAoGBAKCzUVO2IIAeub/iIGpV+dfGk4ptJ0kVZyreCqXEObpdC3V496uqUkGcYJ0GZ2ta6f2PMFzHpmnw8it2mdchu+gyrWL6U4uTK2pB0jZF/7Ak4WaB3GCD0xBxhleO6CJBOvn/R4M/bHcNEKmsYuE7WMIAKvScfPVR0VzsKfcLM5VBAoGAVvWg32zdh1bBZLdku8WU1rPH6KAbFSRuq3f7UPBTyWWaclu7p+GB/4f1aE9V6vJJmKASn7zArAhUYo+REMOmcc9uTMea5F7dM/23qb1HTtIvycLR44ZviW4Wx3iP+5x70jOLw1VQjMME6HLm8I/afHhqshWdiv6ganPv9UTwEg0CgYBSDi2dqg8F7ij5CN+LMDLSn3b8GCw+7efGIt7imm/O2V/FlHD40IA6qGg6DXNQrnoZQt94nMb1cZEvm1dxi6rmQNrhCyoMogAaPqgFhZGq1OjmhVZiXFUWy4WAcjdzFc9wZd3/XtaofRKHLK+ngTFhhVApKypLk3Rg9bCAAjzyVg== + types : ["tree", "file"] - peerId: 12D3KooWDCypXSyN6ppuMZGxVnBd1ZQCMV4y7Bn187S4duYmf8rA address: 127.0.0.1:4432 signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== + types : ["tree", "file"] space: gcTTL: 60 syncPeriod: 10 diff --git a/etc/configs/node2.yml b/etc/configs/node2.yml index dabf73a2..c3d2eb63 100755 --- a/etc/configs/node2.yml +++ b/etc/configs/node2.yml @@ -16,14 +16,17 @@ nodes: address: 127.0.0.1:4430 signingKey: 3mzfKBWtn7mitFEgq8u4eysWOJ6ySbUs49irfHwcuOmi1YMpobz9anoqd4yaT1owZiRPYXqx5k2Z4sNVRE3kXA== encryptionKey: MIIEpQIBAAKCAQEA3U7b4w9JTKE3TLM1WQ5iqdLbvUuozMp/hDEg7S15Gr6wrtLomMSBkfmVQ3Cu+CHdxAFqUFClItYlSFgtZWIFiSiQxCeaN2dmgczd9T4TlRAw6y6uJXtT9r7FIgizPP4B0/tnzPI6yYgpdwzCV2nRSjw3mMr5Nav3QYs18kYrJ1/Np2Wob5HOoRTUD++pPrToevTb7GNL/irrC8wXSE7oU6S7ix6Nh9vzEHg/V5FONBF/wWD/ri7Gy0j0qgUQ+gjxLWKr8xPDnRAve13zzo+54lGCyVvlm/rwCY9Jx378V1IuRx+S8F/GFuVozHD4XVaoSTtpCWPBQNSKDXgaIIKDowIDAQABAoIBACpMXj6ht1LMJXOldPbWhwkKYjFl+pdZxNGRSkfKvzDbbY2chhRcyp8J4vuG2ApY/rftxVIgd8+Wun1/TP3ppEE43aKAJzubqb35WBr9iGSfOZpZy7MiRUQN5kPBAfEQY20OyiIj0hSez74PVD283eGgbMfpU4Rsn8+JOgBaZPkbPViJLJY8PyHU6vwWw60dye1iJTz9yuBtoEqY0XKxnLaVXTQaWx0Te+VYU8twxDgXFWRaXtHuk7xnxOkCZDLrzIvuOYa5lsLoT8K62LDeXbyHBPhbdW0j4ZYzAOTsaUWpjuJzef9aj3JJdfyADiqb5iu6HHksvKzkZEau34zjilECgYEA/c8ZJm62uJMHNssTJYiLRw89l5hYwIZ/1TXdFRF8+xrTin5opYjpscSTO5bY2IYqLx2xuPiJCY1eGGB9L/RtkaVh51ySzq0d+4zpPIRKFcOOgdxHwlgoCgIhQECyfJZNMFGBUIlPXZ/phvXOXRvWFzDPhqThenVG2QzF+wLP0AUCgYEA3zfviQFJ1FOKJMozYO3tUZFmsIrAcO9hfuE7uuWz0Fw2m1XiwxjuOr1RbsSsh/lKke2h4tiGrlfiFhwCpIp91NkVTFrtFOQxbDxkYLkFiWkZDkOaK9YhKMa2cgEm3p+RGawokjbm51LKf+cbYN9xGaAe3y2WzIE4kNpfWE4SXYcCgYEAoagcrrvpqZoMCDxED63ud+4fHsUsEkQYe6Z5EAg5gH5PqnBlGrofjthTpqqnpxGdILFbFyNFtU3TVtduJPMcLp4Vw5TU9MqSxDu1+pOP1FjgFZpGImSf6+/7Wb9bb7sToujm4nLymAFYblt1exxVuiOeqnWuH58+5tQZ7YyW7DkCgYEAl7WuqZEkmpiEpWh/7vsGdo+6GXbUQG2R9+gg7m+7/HsP6hc/XZYOJAIT3JLzKB84nWHCyyiasNeuI5S5/xbZWtaH8TNDOxW0uXl6R3q41qGFk/pCSFTqiIo16dn6jwgoWCh4EpgZ61KLqs5p/zcd6Wq4ULrtaOTSizC/6IZ3WPUCgYEA6xCJy3+ICCgr8/c7hfd2Ylb3aOsXIffdgALhXjDcrNUCqgB4R+S3WReAwrABemQGl4tySQE/1f3Ru7SzMMciFogGyJ/YSXqSi6Y8oDD7MqlKPiWlN6WY1nSRMlLbkUOqpA5JaDM0kcmXjZpBBQr277GOnh9uKN8zUy5xoptctxI= + types : ["tree", "file"] - peerId: 12D3KooWLtuKtCPBYrFJV1NdejiCr2s614ppe9rmUXnkTHtAUD5U address: 127.0.0.1:4431 signingKey: 07JMoW5cQUtGO9nNIGQo9e99b7Wf/4YvTtNEA0lt4gCkmhwB1EB9ay+kitxVJJgmdyGLxbUUlGqwXsAj0zlHWw== encryptionKey: MIIEpAIBAAKCAQEA7cA6J/icl8wseeXkt8oJr5AeYadUAG5EdCOdHj4S/Z7ivff4MOIKAeQITpq+rqhmXxOePYXSpQXE20Y9PW9tuw4gzOuq1ylSG/MWMcLDH1eIxg66rnmUqUbdiW4GGJjVjc9jvN0Up+MfSrUF6fM0jWTFoXVJQIeQQGERCIYjFzjfBl1xYvPghdxNgei/K5ZGYRggT28143XdIH4KTXGtp51hAKoyY9eCqYMtm9wvjxazhPVxO2CsYaqMxBLshY3jfHNqJnx8u6+h4Bl4uUcdbLNUgMcEgk7ehbQp2K0CqNoKXxbCTI6V57UVcJHDIaO5B6FyR6BguzHHNPJ4yd3q9wIDAQABAoIBAQCm2Mf3VRlPzhFIWnVwJXE2q8Umcu8Yfkm712Jj3twk8GPfPS4H4Bl1yjmqMB6xI6zz/CiItGlnNe04lMpVWuV+6CNMq/ZwmKbuxmFE+pFEZYGuvJd16gzR3tGJqJTOnjMAGhK8b8oXJ+TF4NQNooe20ol/DXgiuQAargPuH3RwzjYmF3N8VI4KUc3LaG4TwVXn4LwPOxrQSnfwJlZwLml1HAKOV0qcG0mXX6ZXOpoVhEoRPdQyUHc8ZW+53Agbtind7bYh5TsMVDFUrcgNwnwTOsWjil049la1IJO2uMRluacKlrtyzEp6zqrW8ZJO7mYAO69x4WyGqf2ZgIdA6djBAoGBAPqRHWAIgPa80eXbwCYkRtUG/ONBsQGi7+wm6nyhkXvNXJeokgH2DCgLH2+fW2scfOJuZc9r5WftEjOBvNfr2LDcwdyTSTh21WYcPSZx9HDf2d5/SWTcjNcyU0b5qfWIUKi/Zm9UY7r3X7yMA5dUD/cvu1PBJ5NWFrK1Gm2ph44dAoGBAPLn+LkHweU0fbxQq/76T5yVVpMKUaE9xwrJlUxEDPAQGnLPbFg4JeUt/YPhsOV85W4c4oQE+uFZrF0uf+1fEnS6MOJ+sq668upzC2hBp1B5138wM7615v1rvXVVH6qXfFop67FdBzPHt1NAN43mEIBZHTQ5hSVXFlYSZp9mxuEjAoGBAKCzUVO2IIAeub/iIGpV+dfGk4ptJ0kVZyreCqXEObpdC3V496uqUkGcYJ0GZ2ta6f2PMFzHpmnw8it2mdchu+gyrWL6U4uTK2pB0jZF/7Ak4WaB3GCD0xBxhleO6CJBOvn/R4M/bHcNEKmsYuE7WMIAKvScfPVR0VzsKfcLM5VBAoGAVvWg32zdh1bBZLdku8WU1rPH6KAbFSRuq3f7UPBTyWWaclu7p+GB/4f1aE9V6vJJmKASn7zArAhUYo+REMOmcc9uTMea5F7dM/23qb1HTtIvycLR44ZviW4Wx3iP+5x70jOLw1VQjMME6HLm8I/afHhqshWdiv6ganPv9UTwEg0CgYBSDi2dqg8F7ij5CN+LMDLSn3b8GCw+7efGIt7imm/O2V/FlHD40IA6qGg6DXNQrnoZQt94nMb1cZEvm1dxi6rmQNrhCyoMogAaPqgFhZGq1OjmhVZiXFUWy4WAcjdzFc9wZd3/XtaofRKHLK+ngTFhhVApKypLk3Rg9bCAAjzyVg== + types : ["tree", "file"] - peerId: 12D3KooWDCypXSyN6ppuMZGxVnBd1ZQCMV4y7Bn187S4duYmf8rA address: 127.0.0.1:4432 signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== + types : ["tree", "file"] space: gcTTL: 60 syncPeriod: 10 diff --git a/etc/configs/node3.yml b/etc/configs/node3.yml index a809a72b..a0025685 100755 --- a/etc/configs/node3.yml +++ b/etc/configs/node3.yml @@ -16,14 +16,17 @@ nodes: address: 127.0.0.1:4430 signingKey: 3mzfKBWtn7mitFEgq8u4eysWOJ6ySbUs49irfHwcuOmi1YMpobz9anoqd4yaT1owZiRPYXqx5k2Z4sNVRE3kXA== encryptionKey: MIIEpQIBAAKCAQEA3U7b4w9JTKE3TLM1WQ5iqdLbvUuozMp/hDEg7S15Gr6wrtLomMSBkfmVQ3Cu+CHdxAFqUFClItYlSFgtZWIFiSiQxCeaN2dmgczd9T4TlRAw6y6uJXtT9r7FIgizPP4B0/tnzPI6yYgpdwzCV2nRSjw3mMr5Nav3QYs18kYrJ1/Np2Wob5HOoRTUD++pPrToevTb7GNL/irrC8wXSE7oU6S7ix6Nh9vzEHg/V5FONBF/wWD/ri7Gy0j0qgUQ+gjxLWKr8xPDnRAve13zzo+54lGCyVvlm/rwCY9Jx378V1IuRx+S8F/GFuVozHD4XVaoSTtpCWPBQNSKDXgaIIKDowIDAQABAoIBACpMXj6ht1LMJXOldPbWhwkKYjFl+pdZxNGRSkfKvzDbbY2chhRcyp8J4vuG2ApY/rftxVIgd8+Wun1/TP3ppEE43aKAJzubqb35WBr9iGSfOZpZy7MiRUQN5kPBAfEQY20OyiIj0hSez74PVD283eGgbMfpU4Rsn8+JOgBaZPkbPViJLJY8PyHU6vwWw60dye1iJTz9yuBtoEqY0XKxnLaVXTQaWx0Te+VYU8twxDgXFWRaXtHuk7xnxOkCZDLrzIvuOYa5lsLoT8K62LDeXbyHBPhbdW0j4ZYzAOTsaUWpjuJzef9aj3JJdfyADiqb5iu6HHksvKzkZEau34zjilECgYEA/c8ZJm62uJMHNssTJYiLRw89l5hYwIZ/1TXdFRF8+xrTin5opYjpscSTO5bY2IYqLx2xuPiJCY1eGGB9L/RtkaVh51ySzq0d+4zpPIRKFcOOgdxHwlgoCgIhQECyfJZNMFGBUIlPXZ/phvXOXRvWFzDPhqThenVG2QzF+wLP0AUCgYEA3zfviQFJ1FOKJMozYO3tUZFmsIrAcO9hfuE7uuWz0Fw2m1XiwxjuOr1RbsSsh/lKke2h4tiGrlfiFhwCpIp91NkVTFrtFOQxbDxkYLkFiWkZDkOaK9YhKMa2cgEm3p+RGawokjbm51LKf+cbYN9xGaAe3y2WzIE4kNpfWE4SXYcCgYEAoagcrrvpqZoMCDxED63ud+4fHsUsEkQYe6Z5EAg5gH5PqnBlGrofjthTpqqnpxGdILFbFyNFtU3TVtduJPMcLp4Vw5TU9MqSxDu1+pOP1FjgFZpGImSf6+/7Wb9bb7sToujm4nLymAFYblt1exxVuiOeqnWuH58+5tQZ7YyW7DkCgYEAl7WuqZEkmpiEpWh/7vsGdo+6GXbUQG2R9+gg7m+7/HsP6hc/XZYOJAIT3JLzKB84nWHCyyiasNeuI5S5/xbZWtaH8TNDOxW0uXl6R3q41qGFk/pCSFTqiIo16dn6jwgoWCh4EpgZ61KLqs5p/zcd6Wq4ULrtaOTSizC/6IZ3WPUCgYEA6xCJy3+ICCgr8/c7hfd2Ylb3aOsXIffdgALhXjDcrNUCqgB4R+S3WReAwrABemQGl4tySQE/1f3Ru7SzMMciFogGyJ/YSXqSi6Y8oDD7MqlKPiWlN6WY1nSRMlLbkUOqpA5JaDM0kcmXjZpBBQr277GOnh9uKN8zUy5xoptctxI= + types : ["tree", "file"] - peerId: 12D3KooWLtuKtCPBYrFJV1NdejiCr2s614ppe9rmUXnkTHtAUD5U address: 127.0.0.1:4431 signingKey: 07JMoW5cQUtGO9nNIGQo9e99b7Wf/4YvTtNEA0lt4gCkmhwB1EB9ay+kitxVJJgmdyGLxbUUlGqwXsAj0zlHWw== encryptionKey: MIIEpAIBAAKCAQEA7cA6J/icl8wseeXkt8oJr5AeYadUAG5EdCOdHj4S/Z7ivff4MOIKAeQITpq+rqhmXxOePYXSpQXE20Y9PW9tuw4gzOuq1ylSG/MWMcLDH1eIxg66rnmUqUbdiW4GGJjVjc9jvN0Up+MfSrUF6fM0jWTFoXVJQIeQQGERCIYjFzjfBl1xYvPghdxNgei/K5ZGYRggT28143XdIH4KTXGtp51hAKoyY9eCqYMtm9wvjxazhPVxO2CsYaqMxBLshY3jfHNqJnx8u6+h4Bl4uUcdbLNUgMcEgk7ehbQp2K0CqNoKXxbCTI6V57UVcJHDIaO5B6FyR6BguzHHNPJ4yd3q9wIDAQABAoIBAQCm2Mf3VRlPzhFIWnVwJXE2q8Umcu8Yfkm712Jj3twk8GPfPS4H4Bl1yjmqMB6xI6zz/CiItGlnNe04lMpVWuV+6CNMq/ZwmKbuxmFE+pFEZYGuvJd16gzR3tGJqJTOnjMAGhK8b8oXJ+TF4NQNooe20ol/DXgiuQAargPuH3RwzjYmF3N8VI4KUc3LaG4TwVXn4LwPOxrQSnfwJlZwLml1HAKOV0qcG0mXX6ZXOpoVhEoRPdQyUHc8ZW+53Agbtind7bYh5TsMVDFUrcgNwnwTOsWjil049la1IJO2uMRluacKlrtyzEp6zqrW8ZJO7mYAO69x4WyGqf2ZgIdA6djBAoGBAPqRHWAIgPa80eXbwCYkRtUG/ONBsQGi7+wm6nyhkXvNXJeokgH2DCgLH2+fW2scfOJuZc9r5WftEjOBvNfr2LDcwdyTSTh21WYcPSZx9HDf2d5/SWTcjNcyU0b5qfWIUKi/Zm9UY7r3X7yMA5dUD/cvu1PBJ5NWFrK1Gm2ph44dAoGBAPLn+LkHweU0fbxQq/76T5yVVpMKUaE9xwrJlUxEDPAQGnLPbFg4JeUt/YPhsOV85W4c4oQE+uFZrF0uf+1fEnS6MOJ+sq668upzC2hBp1B5138wM7615v1rvXVVH6qXfFop67FdBzPHt1NAN43mEIBZHTQ5hSVXFlYSZp9mxuEjAoGBAKCzUVO2IIAeub/iIGpV+dfGk4ptJ0kVZyreCqXEObpdC3V496uqUkGcYJ0GZ2ta6f2PMFzHpmnw8it2mdchu+gyrWL6U4uTK2pB0jZF/7Ak4WaB3GCD0xBxhleO6CJBOvn/R4M/bHcNEKmsYuE7WMIAKvScfPVR0VzsKfcLM5VBAoGAVvWg32zdh1bBZLdku8WU1rPH6KAbFSRuq3f7UPBTyWWaclu7p+GB/4f1aE9V6vJJmKASn7zArAhUYo+REMOmcc9uTMea5F7dM/23qb1HTtIvycLR44ZviW4Wx3iP+5x70jOLw1VQjMME6HLm8I/afHhqshWdiv6ganPv9UTwEg0CgYBSDi2dqg8F7ij5CN+LMDLSn3b8GCw+7efGIt7imm/O2V/FlHD40IA6qGg6DXNQrnoZQt94nMb1cZEvm1dxi6rmQNrhCyoMogAaPqgFhZGq1OjmhVZiXFUWy4WAcjdzFc9wZd3/XtaofRKHLK+ngTFhhVApKypLk3Rg9bCAAjzyVg== + types : ["tree", "file"] - peerId: 12D3KooWDCypXSyN6ppuMZGxVnBd1ZQCMV4y7Bn187S4duYmf8rA address: 127.0.0.1:4432 signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== + types : ["tree", "file"] space: gcTTL: 60 syncPeriod: 10 diff --git a/filenode/fileservice/blockservice.go b/filenode/fileservice/blockservice.go new file mode 100644 index 00000000..cd3e8fd6 --- /dev/null +++ b/filenode/fileservice/blockservice.go @@ -0,0 +1,46 @@ +package fileservice + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/ipfsstore" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + blockstore "github.com/ipfs/go-ipfs-blockstore" + exchange "github.com/ipfs/go-ipfs-exchange-interface" +) + +type blockService struct { + store ipfsstore.IPFSStore +} + +func (bs *blockService) GetBlock(ctx context.Context, c cid.Cid) (blocks.Block, error) { + return bs.store.Get(ctx, c) +} + +func (bs *blockService) GetBlocks(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + return bs.store.GetMany(ctx, ks) +} + +func (bs *blockService) Blockstore() blockstore.Blockstore { + return nil +} + +func (bs *blockService) Exchange() exchange.Interface { + return nil +} + +func (bs *blockService) AddBlock(ctx context.Context, b blocks.Block) error { + return bs.store.Add(ctx, []blocks.Block{b}) +} + +func (bs *blockService) AddBlocks(ctx context.Context, b []blocks.Block) error { + return bs.store.Add(ctx, b) +} + +func (bs *blockService) DeleteBlock(ctx context.Context, c cid.Cid) error { + return bs.store.Delete(ctx, c) +} + +func (bs *blockService) Close() error { + return bs.store.Close() +} diff --git a/filenode/fileservice/fileservice.go b/filenode/fileservice/fileservice.go new file mode 100644 index 00000000..6ed6de9e --- /dev/null +++ b/filenode/fileservice/fileservice.go @@ -0,0 +1,36 @@ +package fileservice + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + ipld "github.com/ipfs/go-ipld-format" + "github.com/ipfs/go-merkledag" +) + +const CName = "filenode.fileservice" + +type FileService interface { + app.ComponentRunnable +} + +type fileService struct { + blockService *blockService + dagService ipld.DAGService +} + +func (fs *fileService) Init(a *app.App) (err error) { + fs.dagService = merkledag.NewDAGService(fs.blockService) + return +} + +func (fs *fileService) Name() string { + return CName +} + +func (fs *fileService) Run(ctx context.Context) (err error) { + return +} + +func (fs *fileService) Close(ctx context.Context) (err error) { + return +} diff --git a/filenode/go.mod b/filenode/go.mod new file mode 100644 index 00000000..53c9191f --- /dev/null +++ b/filenode/go.mod @@ -0,0 +1,54 @@ +module github.com/anytypeio/go-anytype-infrastructure-experiments/filenode + +go 1.19 + +replace github.com/anytypeio/go-anytype-infrastructure-experiments/common => ../common + +require github.com/anytypeio/go-anytype-infrastructure-experiments/common v0.0.0-00010101000000-000000000000 + +require ( + github.com/gogo/protobuf v1.3.2 // indirect + github.com/google/uuid v1.2.0 // indirect + github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/ipfs/bbloom v0.0.4 // indirect + github.com/ipfs/go-block-format v0.0.3 // indirect + github.com/ipfs/go-blockservice v0.3.0 // indirect + github.com/ipfs/go-cid v0.3.2 // indirect + github.com/ipfs/go-datastore v0.5.0 // indirect + github.com/ipfs/go-ipfs-blockstore v1.2.0 // indirect + github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect + github.com/ipfs/go-ipfs-exchange-interface v0.1.0 // indirect + github.com/ipfs/go-ipfs-util v0.0.2 // indirect + github.com/ipfs/go-ipld-cbor v0.0.5 // indirect + github.com/ipfs/go-ipld-format v0.4.0 // indirect + github.com/ipfs/go-ipld-legacy v0.1.0 // indirect + github.com/ipfs/go-log v1.0.5 // indirect + github.com/ipfs/go-log/v2 v2.5.1 // indirect + github.com/ipfs/go-merkledag v0.8.0 // indirect + github.com/ipfs/go-metrics-interface v0.0.1 // indirect + github.com/ipfs/go-verifcid v0.0.1 // indirect + github.com/ipld/go-codec-dagpb v1.3.1 // indirect + github.com/ipld/go-ipld-prime v0.16.0 // indirect + github.com/jbenet/goprocess v0.1.4 // indirect + github.com/klauspost/cpuid/v2 v2.1.1 // indirect + github.com/mattn/go-isatty v0.0.16 // indirect + github.com/minio/sha256-simd v1.0.0 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.1.0 // indirect + github.com/multiformats/go-multibase v0.1.1 // indirect + github.com/multiformats/go-multihash v0.2.1 // indirect + github.com/multiformats/go-varint v0.0.6 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158 // indirect + go.uber.org/atomic v1.10.0 // indirect + go.uber.org/multierr v1.8.0 // indirect + go.uber.org/zap v1.23.0 // indirect + golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect + golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + google.golang.org/protobuf v1.28.1 // indirect + lukechampine.com/blake3 v1.1.7 // indirect +) diff --git a/filenode/go.sum b/filenode/go.sum new file mode 100644 index 00000000..560bd46a --- /dev/null +++ b/filenode/go.sum @@ -0,0 +1,1115 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.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.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= +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/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +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/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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +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-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-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +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/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= +github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= +github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= +github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= +github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= +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/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/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +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/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +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/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +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-semver v0.3.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 v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +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/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= +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/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= +github.com/dgraph-io/badger v1.6.0-rc1/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= +github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +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/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/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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +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.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= +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/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +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-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-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +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-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +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.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +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.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/snappy v0.0.0-20180518054509-2e65f85255db/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/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.5.0/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.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +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 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +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/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/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/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= +github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= +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-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/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-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +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-version v1.2.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.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +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/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.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= +github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= +github.com/ipfs/go-bitswap v0.6.0/go.mod h1:Hj3ZXdOC5wBJvENtdqsixmzzRukqd8EHLxZLZc3mzRA= +github.com/ipfs/go-block-format v0.0.2 h1:qPDvcP19izTjU8rgo6p7gTXZlkMkF5bz5G3fqIsSCPE= +github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= +github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= +github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-blockservice v0.3.0 h1:cDgcZ+0P0Ih3sl8+qjFr2sVaMdysg/YZpLj5WJ8kiiw= +github.com/ipfs/go-blockservice v0.3.0/go.mod h1:P5ppi8IHDC7O+pA0AlGTF09jruB2h+oP3wVVaZl8sfk= +github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= +github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= +github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o= +github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= +github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= +github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= +github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= +github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= +github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= +github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= +github.com/ipfs/go-datastore v0.4.5/go.mod h1:eXTcaaiN6uOlVCLS9GjJUJtlvJfM3xk23w3fyfrmmJs= +github.com/ipfs/go-datastore v0.5.0 h1:rQicVCEacWyk4JZ6G5bD9TKR7lZEG1MWcG7UdWYrFAU= +github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= +github.com/ipfs/go-ds-badger v0.0.5/go.mod h1:g5AuuCGmr7efyzQhLL8MzwqcauPojGPUaHzfGTzuE3s= +github.com/ipfs/go-ds-badger v0.2.1/go.mod h1:Tx7l3aTph3FMFrRS838dcSJh+jjA7cX9DrGVwx/NOwE= +github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= +github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= +github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= +github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= +github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw= +github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE= +github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= +github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs= +github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= +github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= +github.com/ipfs/go-ipfs-exchange-interface v0.1.0 h1:TiMekCrOGQuWYtZO3mf4YJXDIdNgnKWZ9IE3fGlnWfo= +github.com/ipfs/go-ipfs-exchange-interface v0.1.0/go.mod h1:ych7WPlyHqFvCi/uQI48zLZuAWVP5iTQPXEfVaw5WEI= +github.com/ipfs/go-ipfs-exchange-offline v0.2.0/go.mod h1:HjwBeW0dvZvfOMwDP0TSKXIHf2s+ksdP4E3MLDRtLKY= +github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= +github.com/ipfs/go-ipfs-routing v0.2.1/go.mod h1:xiNNiwgjmLqPS1cimvAw6EyB9rkVDbiocA4yY+wRNLM= +github.com/ipfs/go-ipfs-util v0.0.1 h1:Wz9bL2wB2YBJqggkA4dD7oSmqB4cAnpNbGrlHJulv50= +github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= +github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= +github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-ipld-cbor v0.0.5 h1:ovz4CHKogtG2KB/h1zUp5U0c/IzZrL435rCh5+K/5G8= +github.com/ipfs/go-ipld-cbor v0.0.5/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= +github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= +github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= +github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= +github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ= +github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= +github.com/ipfs/go-ipld-legacy v0.1.0 h1:wxkkc4k8cnvIGIjPO0waJCe7SHEyFgl+yQdafdjGrpA= +github.com/ipfs/go-ipld-legacy v0.1.0/go.mod h1:86f5P/srAmh9GcIcWQR9lfFLZPrIyyXQeVlOWeeWEuI= +github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= +github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= +github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs= +github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= +github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= +github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= +github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= +github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= +github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= +github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= +github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/ipfs/go-merkledag v0.8.0 h1:ZUda+sh/MGZX4Z13DE/VQT4GmKWm4H95Nje4qcL/yPE= +github.com/ipfs/go-merkledag v0.8.0/go.mod h1:/RmH1kOs7qDMNtGKPh4d/UErNMVuAMpPS/tP57a3aoY= +github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= +github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= +github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU= +github.com/ipfs/go-verifcid v0.0.1 h1:m2HI7zIuR5TFyQ1b79Da5N9dnnCP1vcu2QqawmWlK2E= +github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= +github.com/ipld/go-codec-dagpb v1.3.1 h1:yVNlWRQexCa54ln3MSIiUN++ItH7pdhBFhh0hSgZu1w= +github.com/ipld/go-codec-dagpb v1.3.1/go.mod h1:ErNNglIi5KMur/MfFE/svtgQthzVvf+43MrzLbpcIZY= +github.com/ipld/go-ipld-prime v0.9.1-0.20210324083106-dc342a9917db/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= +github.com/ipld/go-ipld-prime v0.16.0 h1:RS5hhjB/mcpeEPJvfyj0qbOj/QL+/j05heZ0qa97dVo= +github.com/ipld/go-ipld-prime v0.16.0/go.mod h1:axSCuOCBPqrH+gvXr2w9uAOulJqBPhHPT2PjoiiU1qA= +github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= +github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= +github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= +github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +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/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +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/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +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/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0= +github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +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/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= +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.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/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/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= +github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= +github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= +github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= +github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= +github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= +github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70= +github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4= +github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8= +github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= +github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= +github.com/libp2p/go-libp2p v0.6.1/go.mod h1:CTFnWXogryAHjXAKEbOf1OWY+VeAP3lDMZkfEI5sT54= +github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xSU1ivxn0k= +github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw= +github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o= +github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= +github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE= +github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQdNbfzE1C718tcViI= +github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI= +github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A= +github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= +github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= +github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU= +github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ= +github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= +github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= +github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= +github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= +github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= +github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= +github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= +github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= +github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= +github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= +github.com/libp2p/go-libp2p-core v0.3.1/go.mod h1:thvWy0hvaSBhnVBaW37BvzgVV68OUhgJJLAa6almrII= +github.com/libp2p/go-libp2p-core v0.4.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= +github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= +github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= +github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= +github.com/libp2p/go-libp2p-core v0.5.5/go.mod h1:vj3awlOr9+GMZJFH9s4mpt9RHHgGqeHCopzbYKZdRjM= +github.com/libp2p/go-libp2p-core v0.5.6/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= +github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= +github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= +github.com/libp2p/go-libp2p-core v0.7.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= +github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= +github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg= +github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw= +github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug= +github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= +github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= +github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= +github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo= +github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= +github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw= +github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= +github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= +github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw= +github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= +github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q= +github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= +github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= +github.com/libp2p/go-libp2p-peerstore v0.1.3/go.mod h1:BJ9sHlm59/80oSkpWgr1MyY1ciXAXV397W6h1GH/uKI= +github.com/libp2p/go-libp2p-peerstore v0.2.0/go.mod h1:N2l3eVIeAitSg3Pi2ipSrJYnqhVnMNQZo9nkSCuAbnQ= +github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= +github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= +github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= +github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= +github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= +github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA= +github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= +github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= +github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g= +github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8= +github.com/libp2p/go-libp2p-secio v0.2.2/go.mod h1:wP3bS+m5AUnFA+OFO7Er03uO1mncHG0uVwGrwvjYlNY= +github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= +github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaTNyBcHImCxRpPKU= +github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM= +github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM= +github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= +github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4= +github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-testing v0.0.4/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= +github.com/libp2p/go-libp2p-testing v0.1.0/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= +github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= +github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc= +github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g= +github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= +github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M= +github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= +github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns= +github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= +github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk= +github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= +github.com/libp2p/go-libp2p-yamux v0.2.2/go.mod h1:lIohaR0pT6mOt0AZ0L2dFze9hds9Req3OfS+B+dv4qw= +github.com/libp2p/go-libp2p-yamux v0.2.5/go.mod h1:Zpgj6arbyQrmZ3wxSZxfBmbdnWtbZ48OpsfmQVTErwA= +github.com/libp2p/go-libp2p-yamux v0.2.7/go.mod h1:X28ENrBMU/nm4I3Nx4sZ4dgjZ6VhLEn0XhIoZ5viCwU= +github.com/libp2p/go-libp2p-yamux v0.2.8/go.mod h1:/t6tDqeuZf0INZMTgd0WxIRbtK2EzI2h7HbFm9eAKI4= +github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30= +github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= +github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3BuHoeTSqhcel1wsE= +github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= +github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= +github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= +github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= +github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= +github.com/libp2p/go-mplex v0.1.1/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= +github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= +github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= +github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= +github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= +github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= +github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= +github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= +github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU= +github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= +github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= +github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A= +github.com/libp2p/go-netroute v0.1.6/go.mod h1:AqhkMh0VuWmfgtxKPp3Oc1LdU5QSWS7wl0QLhSZqXxQ= +github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0= +github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= +github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= +github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ= +github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= +github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM= +github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw= +github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-sockaddr v0.1.1/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= +github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= +github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= +github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA= +github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= +github.com/libp2p/go-tcp-transport v0.1.1/go.mod h1:3HzGvLbx6etZjnFlERyakbaYPdfjg2pWP97dFZworkY= +github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= +github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= +github.com/libp2p/go-ws-transport v0.2.0/go.mod h1:9BHJz/4Q5A9ludYWKoGCFC5gUElzlHoKzu0yY9p/klM= +github.com/libp2p/go-ws-transport v0.3.0/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= +github.com/libp2p/go-ws-transport v0.4.0/go.mod h1:EcIEKqf/7GDjth6ksuS/6p7R49V4CBY6/E7R/iyhYUA= +github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= +github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= +github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= +github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= +github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= +github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= +github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= +github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ= +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/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +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/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= +github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= +github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +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.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.13/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 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +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/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +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/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/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= +github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.1.0/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= +github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= +github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= +github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= +github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= +github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= +github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= +github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= +github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= +github.com/multiformats/go-multiaddr-net v0.1.0/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= +github.com/multiformats/go-multiaddr-net v0.1.1/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= +github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y= +github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= +github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= +github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= +github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= +github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= +github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= +github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= +github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= +github.com/multiformats/go-multicodec v0.3.0/go.mod h1:qGGaQmioCDh+TeFOnxrbU0DaIPw8yFgAZgFG0V7p1qQ= +github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= +github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84= +github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= +github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= +github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38= +github.com/multiformats/go-multistream v0.2.1/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= +github.com/multiformats/go-multistream v0.2.2/go.mod h1:UIcnm7Zuo8HKG+HkWgfQsGL+/MIEhyTqbODbIUwSXKs= +github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= +github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +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/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +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/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +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.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +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/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.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +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.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +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/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/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/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +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/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e h1:ZOcivgkkFRnjfoTcGsDq3UQYiBmekwLA+qg0OjyB/ls= +github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +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.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= +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/common v0.0.0-20180801064454-c7de2306084e/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.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +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.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +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/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/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +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/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= +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/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= +github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= +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/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +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/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/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= +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/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/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0= +github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158 h1:WXhVOwj2USAXB5oMDwRl3piOux2XMV9TANaYxXHdkoE= +github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= +github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= +github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= +github.com/whyrusleeping/go-logging v0.0.1/go.mod h1:lDPYj54zutzG1XYfHAhcc7oNXEburHQBn+Iqd4yS4vE= +github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= +github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= +github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= +github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.27/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= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +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.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= +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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +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/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= +go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= +go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +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-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/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-20190313024323-a1f597ede03a/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-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/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-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +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-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +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-20181011144130-49bb7cea24b1/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-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/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-20190227160552-c95aed5357e7/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-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/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-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/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-20200520004742-59133d7f0dd7/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-20201021035429-f5854403a974/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-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-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +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-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/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-20181029174526-d69651ed3497/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-20190219092855-153ac476189d/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-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/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-20190526052359-791d8a0f4d09/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-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-20190924154521-2837fb4f24fe/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-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/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-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-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/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-20210426080607-c94f62235c83/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-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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/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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +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-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/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-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/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-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-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +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-20191108193012-7d206e10da11/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-20191216052735-49a3e744a425/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-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +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 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +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.3.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/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-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/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-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +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.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.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.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +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.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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/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/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= +gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +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.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/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= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +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-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= +lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +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.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/go.work b/go.work index 70bb12fa..99ac9c9f 100644 --- a/go.work +++ b/go.work @@ -1,9 +1,10 @@ go 1.19 use ( + ./client ./common ./consensus + ./filenode ./node - ./client ./util ) diff --git a/go.work.sum b/go.work.sum index b033a6bd..b156477e 100644 --- a/go.work.sum +++ b/go.work.sum @@ -7,8 +7,6 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUu github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= -github.com/akrylysov/pogreb v0.10.1 h1:FqlR8VR7uCbJdfUob916tPM+idpKgeESDXOA1K0DK4w= -github.com/akrylysov/pogreb v0.10.1/go.mod h1:pNs6QmpQ1UlTJKDezuRWmaqkgUE2TuU0YTWyqJZ7+lI= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= @@ -49,19 +47,19 @@ github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQy github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= -github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= diff --git a/service/file/filesync/protos/filesync.proto b/service/file/filesync/protos/filesync.proto index 99a00317..f081b332 100644 --- a/service/file/filesync/protos/filesync.proto +++ b/service/file/filesync/protos/filesync.proto @@ -10,16 +10,6 @@ message BlockSync { message Msg { -} - -service Space { - rpc Diff(Msg) returns (Msg); - - // subscription service: - // service.Broadcast(ss) - rpc ObjectSyncStream(stream Msg) returns (stream Msg); - - } service File { @@ -27,12 +17,3 @@ service File { rpc PushCID(Msg) returns (Msg); } -service StrongLog { // ACL Log - rpc PushACL(Msg) returns (Msg); - rpc StartTransaction(); -} - -service Replication { - // -} - diff --git a/service/space/context.go b/service/space/context.go deleted file mode 100644 index 50d076f1..00000000 --- a/service/space/context.go +++ /dev/null @@ -1,22 +0,0 @@ -package space - -import "context" - -type ctxKey int - -const ( - ctxKeySpaceId ctxKey = iota -) - -// CtxSpaceId gets spaceId from id. If spaceId is not found in context - it returns an empty string -func CtxSpaceId(ctx context.Context) (spaceId string) { - if val := ctx.Value(ctxKeySpaceId); val != nil { - return val.(string) - } - return -} - -// CtxWithSpaceId creates new context with spaceId value -func CtxWithSpaceId(ctx context.Context, spaceId string) context.Context { - return context.WithValue(ctx, ctxKeySpaceId, spaceId) -} From d0a4b0570695d05f5d9368e528b6a2d0f6665ec3 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Wed, 14 Dec 2022 16:37:59 +0300 Subject: [PATCH 05/10] file-node --- Makefile | 6 +- client/Makefile | 9 +- .../cachestore}/cachestore.go | 19 +- .../cachestore}/cachestore_test.go | 2 +- .../fileblockstore/fileblockstore.go | 44 + .../fileproto/fileprotoerr/fileprotoerr.go | 13 + common/commonfile/fileserver/fileserver.go | 31 + common/commonfile/fileserver/rpchandler.go | 73 ++ .../commonfile}/fileservice/blockservice.go | 9 +- common/commonfile/fileservice/fileservice.go | 31 + .../commonfile/fileservice/provider.go | 36 +- common/commonfile/ipfsstore/ipfsstore.go | 18 - common/commonfile/rpcstore/client.go | 17 +- common/commonfile/rpcstore/service.go | 6 +- common/commonfile/rpcstore/store_test.go | 3 +- common/config/filestore.go | 5 + common/go.mod | 54 +- common/go.sum | 205 ++- consensus/config/config.go | 20 +- etc/config.yml | 2 + filenode/Makefile | 9 + filenode/account/service.go | 70 ++ filenode/cmd/filenode.go | 93 ++ filenode/config/config.go | 53 + filenode/filepogreb/filepogreb.go | 94 ++ filenode/fileservice/fileservice.go | 36 - filenode/go.mod | 66 +- filenode/go.sum | 1095 +++++------------ go.work.sum | 355 +++++- service/file/blockservice.go | 57 - service/file/filesync/protos/filesync.proto | 19 - service/file/pogrebds/pogreb.go | 73 -- service/file/service.go | 251 ---- 33 files changed, 1476 insertions(+), 1398 deletions(-) rename common/commonfile/{ipfsstore => fileblockstore/cachestore}/cachestore.go (77%) rename common/commonfile/{ipfsstore => fileblockstore/cachestore}/cachestore_test.go (99%) create mode 100644 common/commonfile/fileblockstore/fileblockstore.go create mode 100644 common/commonfile/fileproto/fileprotoerr/fileprotoerr.go create mode 100644 common/commonfile/fileserver/fileserver.go create mode 100644 common/commonfile/fileserver/rpchandler.go rename {filenode => common/commonfile}/fileservice/blockservice.go (83%) create mode 100644 common/commonfile/fileservice/fileservice.go rename service/file/ipfs/ipfs.go => common/commonfile/fileservice/provider.go (89%) delete mode 100644 common/commonfile/ipfsstore/ipfsstore.go create mode 100644 common/config/filestore.go create mode 100644 filenode/Makefile create mode 100644 filenode/account/service.go create mode 100644 filenode/cmd/filenode.go create mode 100644 filenode/config/config.go create mode 100644 filenode/filepogreb/filepogreb.go delete mode 100644 filenode/fileservice/fileservice.go delete mode 100644 service/file/blockservice.go delete mode 100644 service/file/filesync/protos/filesync.proto delete mode 100644 service/file/pogrebds/pogreb.go delete mode 100644 service/file/service.go diff --git a/Makefile b/Makefile index f7e93f9d..e4763890 100644 --- a/Makefile +++ b/Makefile @@ -19,9 +19,13 @@ proto: build: $(MAKE) -C node build + $(MAKE) -C filenode build $(MAKE) -C consensus build + $(MAKE) -C client build test: $(MAKE) -C node test + $(MAKE) -C filenode test $(MAKE) -C consensus test - $(MAKE) -C common test \ No newline at end of file + $(MAKE) -C common test + $(MAKE) -C client test \ No newline at end of file diff --git a/client/Makefile b/client/Makefile index 0340fa3b..c7b9e16f 100644 --- a/client/Makefile +++ b/client/Makefile @@ -3,4 +3,11 @@ export GOPRIVATE=github.com/anytypeio proto: @$(eval GOGO_START := GOGO_NO_UNDERSCORE=1 GOGO_EXPORT_ONEOF_INTERFACE=1) - $(GOGO_START) protoc --gogofaster_out=:. --go-drpc_out=protolib=github.com/gogo/protobuf:. api/apiproto/protos/*.proto \ No newline at end of file + $(GOGO_START) protoc --gogofaster_out=:. --go-drpc_out=protolib=github.com/gogo/protobuf:. api/apiproto/protos/*.proto + +build: + @$(eval FLAGS := $$(shell govvv -flags -pkg github.com/anytypeio/go-anytype-infrastructure-experiments/client)) + go build -v -o ../bin/cient -ldflags "$(FLAGS)" github.com/anytypeio/go-anytype-infrastructure-experiments/client/cmd + +test: + go test ./... --cover diff --git a/common/commonfile/ipfsstore/cachestore.go b/common/commonfile/fileblockstore/cachestore/cachestore.go similarity index 77% rename from common/commonfile/ipfsstore/cachestore.go rename to common/commonfile/fileblockstore/cachestore/cachestore.go index d509589f..77609462 100644 --- a/common/commonfile/ipfsstore/cachestore.go +++ b/common/commonfile/fileblockstore/cachestore/cachestore.go @@ -1,7 +1,8 @@ -package ipfsstore +package cachestore import ( "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" blocks "github.com/ipfs/go-block-format" "github.com/ipfs/go-cid" format "github.com/ipfs/go-ipld-format" @@ -9,13 +10,13 @@ import ( ) type IPFSStoreExistsCIDs interface { - IPFSStore + fileblockstore.BlockStore ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) } type CacheStore struct { Cache IPFSStoreExistsCIDs - Origin IPFSStore + Origin fileblockstore.BlockStore } func (c *CacheStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { @@ -32,7 +33,7 @@ func (c *CacheStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err er return } if addErr := c.Cache.Add(ctx, []blocks.Block{b}); addErr != nil { - log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) + fileblockstore.log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) } return } @@ -41,7 +42,7 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl cachedCids, localErr := c.Cache.ExistsCids(ctx, ks) var originCids []cid.Cid if localErr != nil { - log.Error("hasCIDs error", zap.Error(localErr)) + fileblockstore.log.Error("hasCIDs error", zap.Error(localErr)) originCids = ks } else { if len(cachedCids) != len(ks) { @@ -79,7 +80,7 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl case ob, oOk = <-originResults: if oOk { if addErr := c.Cache.Add(ctx, []blocks.Block{ob}); addErr != nil { - log.Error("add block to cache error", zap.Error(addErr)) + fileblockstore.log.Error("add block to cache error", zap.Error(addErr)) } results <- ob } @@ -97,7 +98,7 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { if localErr := c.Cache.Add(ctx, b); localErr != nil { - log.Error("cache add error", zap.Error(localErr)) + fileblockstore.log.Error("cache add error", zap.Error(localErr)) } return c.Origin.Add(ctx, b) } @@ -105,7 +106,7 @@ func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { func (c *CacheStore) Delete(ctx context.Context, k cid.Cid) error { if localErr := c.Cache.Delete(ctx, k); localErr != nil { if !format.IsNotFound(localErr) { - log.Error("error while delete block", zap.Error(localErr)) + fileblockstore.log.Error("error while delete block", zap.Error(localErr)) } } return c.Origin.Delete(ctx, k) @@ -113,7 +114,7 @@ func (c *CacheStore) Delete(ctx context.Context, k cid.Cid) error { func (c *CacheStore) Close() (err error) { if localErr := c.Cache.Close(); localErr != nil { - log.Error("error while closing cache store", zap.Error(localErr)) + fileblockstore.log.Error("error while closing cache store", zap.Error(localErr)) } return c.Origin.Close() } diff --git a/common/commonfile/ipfsstore/cachestore_test.go b/common/commonfile/fileblockstore/cachestore/cachestore_test.go similarity index 99% rename from common/commonfile/ipfsstore/cachestore_test.go rename to common/commonfile/fileblockstore/cachestore/cachestore_test.go index 63c9f4ff..a554052f 100644 --- a/common/commonfile/ipfsstore/cachestore_test.go +++ b/common/commonfile/fileblockstore/cachestore/cachestore_test.go @@ -1,4 +1,4 @@ -package ipfsstore +package cachestore import ( "context" diff --git a/common/commonfile/fileblockstore/fileblockstore.go b/common/commonfile/fileblockstore/fileblockstore.go new file mode 100644 index 00000000..bbaef490 --- /dev/null +++ b/common/commonfile/fileblockstore/fileblockstore.go @@ -0,0 +1,44 @@ +package fileblockstore + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto/fileprotoerr" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" +) + +var log = logger.NewNamed("filenode.fileblockstore") + +var ( + ErrCIDNotFound = fileprotoerr.ErrCIDNotFound + ErrCIDUnexpected = fileprotoerr.ErrUnexpected +) + +const CName = "common.commonfile.fileblockstore" + +type ctxKey uint + +const ( + ctxKeySpaceId ctxKey = iota +) + +type BlockStore interface { + Get(ctx context.Context, k cid.Cid) (blocks.Block, error) + GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block + Add(ctx context.Context, b []blocks.Block) error + Delete(ctx context.Context, c cid.Cid) error +} + +type BlockStoreSpaceIds interface { + SpaceIds() []string +} + +func CtxWithSpaceId(ctx context.Context, spaceId string) context.Context { + return context.WithValue(ctx, ctxKeySpaceId, spaceId) +} + +func CtxGetSpaceId(ctx context.Context) (spaceId string) { + spaceId, _ = ctx.Value(ctxKeySpaceId).(string) + return +} diff --git a/common/commonfile/fileproto/fileprotoerr/fileprotoerr.go b/common/commonfile/fileproto/fileprotoerr/fileprotoerr.go new file mode 100644 index 00000000..90b4fd82 --- /dev/null +++ b/common/commonfile/fileproto/fileprotoerr/fileprotoerr.go @@ -0,0 +1,13 @@ +package fileprotoerr + +import ( + "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/rpcerr" +) + +var ( + errGroup = rpcerr.ErrGroup(fileproto.ErrCodes_ErrorOffset) + ErrUnexpected = errGroup.Register(fmt.Errorf("unexpected fileproto error"), uint64(fileproto.ErrCodes_Unexpected)) + ErrCIDNotFound = errGroup.Register(fmt.Errorf("CID not found"), uint64(fileproto.ErrCodes_CIDNotFound)) +) diff --git a/common/commonfile/fileserver/fileserver.go b/common/commonfile/fileserver/fileserver.go new file mode 100644 index 00000000..d898c076 --- /dev/null +++ b/common/commonfile/fileserver/fileserver.go @@ -0,0 +1,31 @@ +package fileserver + +import ( + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/server" +) + +const CName = "common.commonfile.fileservice" + +func New() FileServer { + return &fileServer{} +} + +type FileServer interface { + app.Component +} + +type fileServer struct { + store fileblockstore.BlockStore +} + +func (f *fileServer) Init(a *app.App) (err error) { + f.store = a.MustComponent(fileblockstore.CName).(fileblockstore.BlockStore) + return fileproto.DRPCRegisterFile(a.MustComponent(server.CName).(server.DRPCServer), &rpcHandler{store: f.store}) +} + +func (f *fileServer) Name() (name string) { + return CName +} diff --git a/common/commonfile/fileserver/rpchandler.go b/common/commonfile/fileserver/rpchandler.go new file mode 100644 index 00000000..fac8b9bc --- /dev/null +++ b/common/commonfile/fileserver/rpchandler.go @@ -0,0 +1,73 @@ +package fileserver + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto/fileprotoerr" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" +) + +type rpcHandler struct { + store fileblockstore.BlockStore +} + +func (r *rpcHandler) GetBlocks(stream fileproto.DRPCFile_GetBlocksStream) error { + for { + req, err := stream.Recv() + if err != nil { + return err + } + resp := &fileproto.GetBlockResponse{ + Cid: req.Cid, + } + _, c, err := cid.CidFromBytes(req.Cid) + if err != nil { + resp.Code = fileproto.CIDError_CIDErrorUnexpected + } else { + b, err := r.store.Get(fileblockstore.CtxWithSpaceId(stream.Context(), req.SpaceId), c) + if err != nil { + if err == fileblockstore.ErrCIDNotFound { + resp.Code = fileproto.CIDError_CIDErrorNotFound + } else { + resp.Code = fileproto.CIDError_CIDErrorUnexpected + } + } else { + resp.Data = b.RawData() + } + } + if err = stream.Send(resp); err != nil { + return err + } + } +} + +func (r *rpcHandler) PushBlock(ctx context.Context, req *fileproto.PushBlockRequest) (*fileproto.PushBlockResponse, error) { + if err := r.store.Add(fileblockstore.CtxWithSpaceId(ctx, req.SpaceId), []blocks.Block{ + blocks.NewBlock(req.Data), + }); err != nil { + return nil, fileprotoerr.ErrUnexpected + } + return &fileproto.PushBlockResponse{}, nil +} + +func (r *rpcHandler) DeleteBlocks(ctx context.Context, req *fileproto.DeleteBlocksRequest) (*fileproto.DeleteBlocksResponse, error) { + for _, cd := range req.Cid { + _, c, err := cid.CidFromBytes(cd) + if err == nil { + if err = r.store.Delete(fileblockstore.CtxWithSpaceId(ctx, req.SpaceId), c); err != nil { + // TODO: log + } + } + } + return &fileproto.DeleteBlocksResponse{}, nil +} + +func (r *rpcHandler) Check(ctx context.Context, request *fileproto.CheckRequest) (*fileproto.CheckResponse, error) { + resp := &fileproto.CheckResponse{} + if withSpaceIds, ok := r.store.(fileblockstore.BlockStoreSpaceIds); ok { + resp.SpaceIds = withSpaceIds.SpaceIds() + } + return resp, nil +} diff --git a/filenode/fileservice/blockservice.go b/common/commonfile/fileservice/blockservice.go similarity index 83% rename from filenode/fileservice/blockservice.go rename to common/commonfile/fileservice/blockservice.go index cd3e8fd6..4eba3fed 100644 --- a/filenode/fileservice/blockservice.go +++ b/common/commonfile/fileservice/blockservice.go @@ -2,15 +2,20 @@ package fileservice import ( "context" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/ipfsstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-blockservice" "github.com/ipfs/go-cid" blockstore "github.com/ipfs/go-ipfs-blockstore" exchange "github.com/ipfs/go-ipfs-exchange-interface" ) +func newBlockService(store fileblockstore.BlockStore) blockservice.BlockService { + return &blockService{store: store} +} + type blockService struct { - store ipfsstore.IPFSStore + store fileblockstore.BlockStore } func (bs *blockService) GetBlock(ctx context.Context, c cid.Cid) (blocks.Block, error) { diff --git a/common/commonfile/fileservice/fileservice.go b/common/commonfile/fileservice/fileservice.go new file mode 100644 index 00000000..12a62c04 --- /dev/null +++ b/common/commonfile/fileservice/fileservice.go @@ -0,0 +1,31 @@ +package fileservice + +import ( + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" +) + +const CName = "common.commonfile.fileservice" + +func New() FileService { + return &fileService{} +} + +type FileService interface { + NewProvider(store fileblockstore.BlockStore) (Provider, error) + app.Component +} + +type fileService struct{} + +func (fs *fileService) Init(a *app.App) (err error) { + return +} + +func (fs *fileService) Name() string { + return CName +} + +func (fs *fileService) NewProvider(store fileblockstore.BlockStore) (Provider, error) { + return newProvider(newBlockService(store)) +} diff --git a/service/file/ipfs/ipfs.go b/common/commonfile/fileservice/provider.go similarity index 89% rename from service/file/ipfs/ipfs.go rename to common/commonfile/fileservice/provider.go index 55115d6b..562a898b 100644 --- a/service/file/ipfs/ipfs.go +++ b/common/commonfile/fileservice/provider.go @@ -1,4 +1,4 @@ -package ipfs +package fileservice import ( "context" @@ -22,11 +22,23 @@ func init() { ipld.Register(cid.DagCBOR, cbor.DecodeBlock) // need to decode CBOR } -// NewProvider creates IPFS provider with given blockstore -func NewProvider(bs blockservice.BlockService) Provider { +// newProvider creates IPFS provider with given blockstore +func newProvider(bs blockservice.BlockService) (Provider, error) { + prefix, err := merkledag.PrefixForCidVersion(1) + if err != nil { + return nil, fmt.Errorf("bad CID Version: %s", err) + } + + hashFunCode, ok := multihash.Names["sha2-256"] + if !ok { + return nil, fmt.Errorf("unrecognized hash function") + } + prefix.MhType = hashFunCode + prefix.MhLength = -1 return &provider{ merkledag: merkledag.NewDAGService(bs), - } + prefix: prefix, + }, nil } // Provider provides high level function for ipfs stack @@ -39,25 +51,14 @@ type Provider interface { type provider struct { merkledag ipld.DAGService + prefix cid.Prefix } func (p *provider) AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) { - prefix, err := merkledag.PrefixForCidVersion(1) - if err != nil { - return nil, fmt.Errorf("bad CID Version: %s", err) - } - - hashFunCode, ok := multihash.Names["sha2-256"] - if !ok { - return nil, fmt.Errorf("unrecognized hash function") - } - prefix.MhType = hashFunCode - prefix.MhLength = -1 - dbp := helpers.DagBuilderParams{ Dagserv: p.merkledag, Maxlinks: helpers.DefaultLinksPerBlock, - CidBuilder: &prefix, + CidBuilder: &p.prefix, } dbh, err := dbp.New(chunker.DefaultSplitter(r)) if err != nil { @@ -68,7 +69,6 @@ func (p *provider) AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) func (p *provider) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { n, err := p.merkledag.Get(ctx, c) - n.Links() if err != nil { return nil, err } diff --git a/common/commonfile/ipfsstore/ipfsstore.go b/common/commonfile/ipfsstore/ipfsstore.go deleted file mode 100644 index 9765540b..00000000 --- a/common/commonfile/ipfsstore/ipfsstore.go +++ /dev/null @@ -1,18 +0,0 @@ -package ipfsstore - -import ( - "context" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" - blocks "github.com/ipfs/go-block-format" - "github.com/ipfs/go-cid" -) - -var log = logger.NewNamed("filenode.ipfsstore") - -type IPFSStore interface { - Get(ctx context.Context, k cid.Cid) (blocks.Block, error) - GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block - Add(ctx context.Context, b []blocks.Block) error - Delete(ctx context.Context, c cid.Cid) error - Close() (err error) -} diff --git a/common/commonfile/rpcstore/client.go b/common/commonfile/rpcstore/client.go index e467f2f5..8a1841c3 100644 --- a/common/commonfile/rpcstore/client.go +++ b/common/commonfile/rpcstore/client.go @@ -4,7 +4,10 @@ import ( "context" "errors" "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" + _ "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto/fileprotoerr" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/rpcerr" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/slice" "github.com/cheggaaa/mb/v3" "github.com/ipfs/go-cid" @@ -14,9 +17,7 @@ import ( ) var ( - ErrCIDNotFound = errors.New("CID not found") - ErrCIDUnexpected = errors.New("CID unexpected error") - ErrClientClosed = errors.New("file client closed") + ErrClientClosed = errors.New("file client closed") ) const defaultMaxInFlightCIDs = 10 @@ -104,7 +105,7 @@ func (c *client) delete(ctx context.Context, t *task) (err error) { SpaceId: t.spaceId, Cid: [][]byte{t.cid.Bytes()}, }); err != nil { - return + return rpcerr.Unwrap(err) } t.ready <- t c.stat.UpdateLastUsage() @@ -122,7 +123,7 @@ func (c *client) put(ctx context.Context, t *task) (err error) { Cid: t.cid.Bytes(), Data: t.data, }); err != nil { - return + return rpcerr.Unwrap(err) } t.ready <- t c.stat.Add(st, len(t.data)) @@ -158,7 +159,7 @@ func (c *client) get(ctx context.Context, t *task) (err error) { SpaceId: t.spaceId, Cid: t.cid.Bytes(), }); err != nil { - return + return rpcerr.Unwrap(err) } return } @@ -204,9 +205,9 @@ func (c *client) receiveCID(resp *fileproto.GetBlockResponse) (t *task, err erro t.data = resp.Data t.err = nil case fileproto.CIDError_CIDErrorNotFound: - t.err = ErrCIDNotFound + t.err = fileblockstore.ErrCIDNotFound default: - t.err = ErrCIDUnexpected + t.err = fileblockstore.ErrCIDUnexpected } delete(c.waitCIDs, rCid.String()) if t.err == nil { diff --git a/common/commonfile/rpcstore/service.go b/common/commonfile/rpcstore/service.go index 6222721c..9a3803c8 100644 --- a/common/commonfile/rpcstore/service.go +++ b/common/commonfile/rpcstore/service.go @@ -3,7 +3,7 @@ package rpcstore import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/ipfsstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/pool" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf" ) @@ -17,7 +17,7 @@ func New() Service { } type Service interface { - NewStore() ipfsstore.IPFSStore + NewStore() fileblockstore.BlockStore app.Component } @@ -36,7 +36,7 @@ func (s *service) Name() (name string) { return CName } -func (s *service) NewStore() ipfsstore.IPFSStore { +func (s *service) NewStore() fileblockstore.BlockStore { cm := newClientManager(s) return &store{ s: s, diff --git a/common/commonfile/rpcstore/store_test.go b/common/commonfile/rpcstore/store_test.go index 9ae4d289..7ce43728 100644 --- a/common/commonfile/rpcstore/store_test.go +++ b/common/commonfile/rpcstore/store_test.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileproto" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/rpctest" @@ -70,7 +71,7 @@ func TestStore_Get(t *testing.T) { } b, err := fx.Get(ctx, bs[0].Cid()) assert.Nil(t, b) - assert.ErrorIs(t, err, ErrCIDNotFound) + assert.ErrorIs(t, err, fileblockstore.ErrCIDNotFound) }) } diff --git a/common/config/filestore.go b/common/config/filestore.go new file mode 100644 index 00000000..3ef0d1b9 --- /dev/null +++ b/common/config/filestore.go @@ -0,0 +1,5 @@ +package config + +type FileStorePogreb struct { + Path string `yaml:"path"` +} diff --git a/common/go.mod b/common/go.mod index 929d6866..45114b8e 100644 --- a/common/go.mod +++ b/common/go.mod @@ -3,45 +3,70 @@ module github.com/anytypeio/go-anytype-infrastructure-experiments/common go 1.19 require ( + github.com/VividCortex/ewma v1.2.0 github.com/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221107145605-92bdf7d57b48 github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 github.com/awalterschulze/gographviz v2.0.3+incompatible github.com/cespare/xxhash v1.1.0 + github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c github.com/goccy/go-graphviz v0.0.9 github.com/gogo/protobuf v1.3.2 github.com/golang/mock v1.6.0 github.com/huandu/skiplist v1.2.0 github.com/ipfs/go-block-format v0.0.3 + github.com/ipfs/go-blockservice v0.5.0 github.com/ipfs/go-cid v0.3.2 + github.com/ipfs/go-ipfs-blockstore v1.2.0 + github.com/ipfs/go-ipfs-chunker v0.0.5 + github.com/ipfs/go-ipfs-exchange-interface v0.2.0 + github.com/ipfs/go-ipld-cbor v0.0.6 github.com/ipfs/go-ipld-format v0.4.0 + github.com/ipfs/go-merkledag v0.8.1 + github.com/ipfs/go-unixfs v0.4.1 github.com/libp2p/go-libp2p v0.23.2 github.com/minio/sha256-simd v1.0.0 github.com/multiformats/go-multibase v0.1.1 github.com/multiformats/go-multihash v0.2.1 github.com/prometheus/client_golang v1.13.0 - github.com/stretchr/testify v1.8.0 + github.com/stretchr/testify v1.8.1 github.com/zeebo/blake3 v0.2.3 github.com/zeebo/errs v1.3.0 - go.uber.org/zap v1.23.0 + go.uber.org/multierr v1.9.0 + go.uber.org/zap v1.24.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 gopkg.in/yaml.v3 v3.0.1 storj.io/drpc v0.0.32 ) require ( - github.com/VividCortex/ewma v1.2.0 // indirect + github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/cheggaaa/mb/v2 v2.1.0-alpha // indirect - github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/fogleman/gg v1.3.0 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/protobuf v1.5.2 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/ipfs/bbloom v0.0.4 // indirect + github.com/ipfs/go-bitfield v1.0.0 // indirect + github.com/ipfs/go-datastore v0.6.0 // indirect + github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect + github.com/ipfs/go-ipfs-files v0.0.3 // indirect + github.com/ipfs/go-ipfs-posinfo v0.0.1 // indirect github.com/ipfs/go-ipfs-util v0.0.2 // indirect + github.com/ipfs/go-ipld-legacy v0.1.1 // indirect + github.com/ipfs/go-log v1.0.5 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect - github.com/klauspost/cpuid/v2 v2.1.1 // indirect + github.com/ipfs/go-metrics-interface v0.0.1 // indirect + github.com/ipfs/go-verifcid v0.0.2 // indirect + github.com/ipld/go-codec-dagpb v1.5.0 // indirect + github.com/ipld/go-ipld-prime v0.19.0 // indirect + github.com/jbenet/goprocess v0.1.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.2 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-openssl v0.1.0 // indirect github.com/mattn/go-isatty v0.0.16 // indirect @@ -49,22 +74,29 @@ require ( github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect github.com/multiformats/go-multiaddr v0.7.0 // indirect github.com/multiformats/go-multicodec v0.6.0 // indirect - github.com/multiformats/go-varint v0.0.6 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/whyrusleeping/cbor-gen v0.0.0-20221213004032-c09a31a7d5e8 // indirect + github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f // indirect + go.opentelemetry.io/otel v1.11.2 // indirect + go.opentelemetry.io/otel/trace v1.11.2 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect + golang.org/x/crypto v0.4.0 // indirect golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect - golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect + golang.org/x/sys v0.3.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/protobuf v1.28.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect ) diff --git a/common/go.sum b/common/go.sum index 1bbe5618..9f8b5b6f 100644 --- a/common/go.sum +++ b/common/go.sum @@ -42,6 +42,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy 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/alecthomas/units v0.0.0-20210927113745-59d0afb8317a h1:E/8AP5dFtMhl5KPJz66Kt9G0n+7Sn41Fy1wv9/jHOrc= +github.com/alecthomas/units v0.0.0-20210927113745-59d0afb8317a/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221107145605-92bdf7d57b48 h1:fCZ8db6yJBLPd6bP59zwfjuokL7SLbeTKrk3kBSy034= github.com/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221107145605-92bdf7d57b48/go.mod h1:w0i62cRB2jVpjFb2CpPNj5J+ihKqqmBBG9X2+Odekjw= github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 h1:kMPPZYmJgbs4AJfodbg2OCXg5cp+9LPAJcLZJqmcghk= @@ -60,12 +62,6 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/mb/v2 v2.1.0-alpha h1:GN2R1eUrImfd8lwmx6VfX6E4RqXoOjUBdZLo9aqw87o= -github.com/cheggaaa/mb/v2 v2.1.0-alpha/go.mod h1:XGeZw20Iqgjky26KL0mvCwk3+4NyZCUbshSo6ALne+c= -github.com/cheggaaa/mb/v3 v3.0.0-20221116073802-28877f0c7d6c h1:qgBgvJEmHz9Jhe2Aso0y1djx9RpQo6AiC1k1ScCyQTc= -github.com/cheggaaa/mb/v3 v3.0.0-20221116073802-28877f0c7d6c/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= -github.com/cheggaaa/mb/v3 v3.0.0-20221116093702-e509afb93b07 h1:iApZflWEqUGURwq88cOgAA5+I686xFabUj4YvPCKfUo= -github.com/cheggaaa/mb/v3 v3.0.0-20221116093702-e509afb93b07/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c h1:+bD75daSbsxyTzkKpNplC4xls+7/tGwty+zruzOnOmk= github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -75,6 +71,8 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/corona10/goimagehash v1.0.2 h1:pUfB0LnsJASMPGEZLj7tGY251vF+qLGqOgEP4rUs6kA= github.com/corona10/goimagehash v1.0.2/go.mod h1:/l9umBhvcHQXVtQO1V6Gp1yD20STawkhRnnX0D1bvVI= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cskr/pubsub v1.0.2 h1:vlOzMhl6PFn60gRlTQQsIfVwaPB/B/8MziK8FhEPt/0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -87,6 +85,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fogleman/gg v1.3.0 h1:/7zJX8F6AaYQc57WQCyN9cAIz+4bCJGO9B+dyW29am8= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= 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= @@ -98,10 +98,17 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9 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.5.1/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.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +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-yaml/yaml v2.1.0+incompatible/go.mod h1:w2MrLa16VYP0jy6N7M5kHaCkaLENm+P+Tv+MfurjSw0= github.com/goccy/go-graphviz v0.0.9 h1:s/FMMJ1Joj6La3S5ApO3Jk2cwM4LpXECC2muFx3IPQQ= github.com/goccy/go-graphviz v0.0.9/go.mod h1:wXVsXxmyMQU6TN3zGRttjNn3h+iCAS7xQFC6TlNvLhk= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g= @@ -147,8 +154,9 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.1/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.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= 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/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -159,32 +167,103 @@ github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hf 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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= 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.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= github.com/huandu/skiplist v1.2.0 h1:gox56QD77HzSC0w+Ws3MH3iie755GBJU1OER3h5VsYw= github.com/huandu/skiplist v1.2.0/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= +github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= +github.com/ipfs/go-bitfield v1.0.0 h1:y/XHm2GEmD9wKngheWNNCNL0pzrWXZwCdQGv1ikXknQ= +github.com/ipfs/go-bitfield v1.0.0/go.mod h1:N/UiujQy+K+ceU1EF5EkVd1TNqevLrCQMIcAEPrdtus= +github.com/ipfs/go-bitswap v0.11.0 h1:j1WVvhDX1yhG32NTC9xfxnqycqYIlhzEzLXG/cU1HyQ= github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= +github.com/ipfs/go-blockservice v0.5.0 h1:B2mwhhhVQl2ntW2EIpaWPwSCxSuqr5fFA93Ms4bYLEY= +github.com/ipfs/go-blockservice v0.5.0/go.mod h1:W6brZ5k20AehbmERplmERn8o2Ni3ZZubvAxaIUeaT6w= github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= +github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= +github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= +github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= +github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= +github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= +github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk= +github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= +github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw= +github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE= +github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ= +github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8= +github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8= +github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= +github.com/ipfs/go-ipfs-delay v0.0.1 h1:r/UXYyRcddO6thwOnhiznIAiSvxMECGgtv35Xs1IeRQ= +github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= +github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= +github.com/ipfs/go-ipfs-exchange-interface v0.2.0 h1:8lMSJmKogZYNo2jjhUs0izT+dck05pqUw4mWNW9Pw6Y= +github.com/ipfs/go-ipfs-exchange-interface v0.2.0/go.mod h1:z6+RhJuDQbqKguVyslSOuVDhqF9JtTrO3eptSAiW2/Y= +github.com/ipfs/go-ipfs-exchange-offline v0.3.0 h1:c/Dg8GDPzixGd0MC8Jh6mjOwU57uYokgWRFidfvEkuA= +github.com/ipfs/go-ipfs-files v0.0.3 h1:ME+QnC3uOyla1ciRPezDW0ynQYK2ikOh9OCKAEg4uUA= +github.com/ipfs/go-ipfs-files v0.0.3/go.mod h1:INEFm0LL2LWXBhNJ2PMIIb2w45hpXgPjNoE7yA8Y1d4= +github.com/ipfs/go-ipfs-posinfo v0.0.1 h1:Esoxj+1JgSjX0+ylc0hUmJCOv6V2vFoZiETLR6OtpRs= +github.com/ipfs/go-ipfs-posinfo v0.0.1/go.mod h1:SwyeVP+jCwiDu0C313l/8jg6ZxM0qqtlt2a0vILTc1A= +github.com/ipfs/go-ipfs-pq v0.0.2 h1:e1vOOW6MuOwG2lqxcLA+wEn93i/9laCY8sXAw76jFOY= +github.com/ipfs/go-ipfs-routing v0.3.0 h1:9W/W3N+g+y4ZDeffSgqhgo7BsBSJwPMcyssET9OWevc= github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= +github.com/ipfs/go-ipld-cbor v0.0.6 h1:pYuWHyvSpIsOOLw4Jy7NbBkCyzLDcl64Bf/LZW7eBQ0= +github.com/ipfs/go-ipld-cbor v0.0.6/go.mod h1:ssdxxaLJPXH7OjF5V4NSjBbcfh+evoR4ukuru0oPXMA= +github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= +github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= +github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ= github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= +github.com/ipfs/go-ipld-legacy v0.1.1 h1:BvD8PEuqwBHLTKqlGFTHSwrwFOMkVESEvwIYwR2cdcc= +github.com/ipfs/go-ipld-legacy v0.1.1/go.mod h1:8AyKFCjgRPsQFf15ZQgDB8Din4DML/fOmKZkkFkrIEg= +github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= +github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= +github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= +github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +github.com/ipfs/go-merkledag v0.8.1 h1:N3yrqSre/ffvdwtHL4MXy0n7XH+VzN8DlzDrJySPa94= +github.com/ipfs/go-merkledag v0.8.1/go.mod h1:uYUlWE34GhbcTjGuUDEcdPzsEtOdnOupL64NgSRjmWI= +github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= +github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= +github.com/ipfs/go-peertaskqueue v0.8.0 h1:JyNO144tfu9bx6Hpo119zvbEL9iQ760FHOiJYsUjqaU= +github.com/ipfs/go-unixfs v0.4.1 h1:nmJFKvF+khK03PIWyCxxydD/nkQX315NZDcgvRqMXf0= +github.com/ipfs/go-unixfs v0.4.1/go.mod h1:2SUDFhUSzrcL408B1qpIkJJ5HznnyTzweViPXUAvkNg= +github.com/ipfs/go-verifcid v0.0.2 h1:XPnUv0XmdH+ZIhLGKg6U2vaPaRDXb9urMyNVCE7uvTs= +github.com/ipfs/go-verifcid v0.0.2/go.mod h1:40cD9x1y4OWnFXbLNJYRe7MpNvWlMn3LZAG5Wb4xnPU= +github.com/ipld/go-codec-dagpb v1.5.0 h1:RspDRdsJpLfgCI0ONhTAnbHdySGD4t+LHSPK4X1+R0k= +github.com/ipld/go-codec-dagpb v1.5.0/go.mod h1:0yRIutEFD8o1DGVqw4RSHh+BUTlJA9XWldxaaWR/o4g= +github.com/ipld/go-ipld-prime v0.9.1-0.20210324083106-dc342a9917db/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= +github.com/ipld/go-ipld-prime v0.19.0 h1:5axC7rJmPc17Emw6TelxGwnzALk0PdupZ2oj2roDj04= +github.com/ipld/go-ipld-prime v0.19.0/go.mod h1:Q9j3BaVXwaA3o5JUDNvptDDr/x8+F7FG6XJ8WI3ILg4= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= +github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= +github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -193,29 +272,46 @@ github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ 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/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +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/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= 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/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= -github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0= -github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.2 h1:xPMwiykqNK9VK0NYC3+jTMYv9I6Vl3YdjZgPZKG3zO0= +github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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/koron/go-ssdp v0.0.3 h1:JivLMY45N76b4p/vsWGOKewBQu6uf39y8l+AQ7sDKx8= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= 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/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= 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/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= github.com/libp2p/go-libp2p v0.23.2 h1:yqyTeKQJyofWXxEv/eEVUvOrGdt/9x+0PIQ4N1kaxmE= github.com/libp2p/go-libp2p v0.23.2/go.mod h1:s9DEa5NLR4g+LZS+md5uGU4emjMWFiqkZr6hBTY8UxI= +github.com/libp2p/go-libp2p-asn-util v0.2.0 h1:rg3+Os8jbnO5DxkC7K/Utdi+DkY3q/d1/1q+8WeNAsw= +github.com/libp2p/go-libp2p-record v0.2.0 h1:oiNUOCWno2BFuxt3my4i1frNrt7PerzB3queqa1NkQ0= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-msgio v0.2.0 h1:W6shmB+FeynDrUVl2dgFQvzfBZcXiyqY4VmpQLu9FqU= +github.com/libp2p/go-nat v0.1.0 h1:MfVsH6DLcpa04Xr+p8hmVRG4juse0s3J8HyNWYHffXg= +github.com/libp2p/go-netroute v0.2.0 h1:0FpsbsvuSnAhXFnCY0VLFbJOzaK0VnP0r1QT/o4nWRE= github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -223,6 +319,7 @@ github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= @@ -234,16 +331,20 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc= github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= @@ -251,23 +352,34 @@ github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1 github.com/multiformats/go-multicodec v0.6.0 h1:KhH2kSuCARyuJraYMFxrNO3DqIaYhOdS039kbhgVwpE= github.com/multiformats/go-multicodec v0.6.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw= github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= +github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= +github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-multistream v0.3.3 h1:d5PZpjwRgVlbwfdTDjife7XszfZd8KYWfROYFlGcR8o= github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= 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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 h1:BvoENQQU+fZ9uukda/RzCAL/191HHwJA5b13R6diVlY= github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= 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 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= +github.com/polydawn/refmt v0.89.0 h1:ADJTApkvkeBZsN0tBTx8QjpD9JkmxbKp0cxfr9qszm4= +github.com/polydawn/refmt v0.89.0/go.mod h1:/zvteZs/GwLtCgZ4BL6CBsk9IKIlexP43ObX9AxTqTw= 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.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= @@ -294,9 +406,19 @@ github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +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/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= +github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= +github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= +github.com/smartystreets/goconvey v1.7.2/go.mod h1:Vw0tHAZW6lzCRk3xgdin6fKYcG+G3Pg9vgXWeJpQFMM= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -305,13 +427,27 @@ github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2 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/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.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 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/urfave/cli v1.22.10/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/warpfork/go-testmark v0.10.0 h1:E86YlUMYfwIacEsQGlnTvjk1IgYkyTGjPhF0RnwTCmw= +github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0 h1:GDDkbFiaK8jsSDJfjId/PEGEShv6ugrt4kYsC5UIDaQ= +github.com/warpfork/go-wish v0.0.0-20220906213052-39a1cc7a02d0/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= +github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= +github.com/whyrusleeping/cbor-gen v0.0.0-20221213004032-c09a31a7d5e8 h1:wGJHI5UqTlrtrgpA5kaQACNegkEHGhG/6Lmc7QORfqI= +github.com/whyrusleeping/cbor-gen v0.0.0-20221213004032-c09a31a7d5e8/go.mod h1:fgkXqYy7bV2cFeIEOkVTZS/WjXARfBqSH6Q2qHL33hQ= +github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f h1:jQa4QT2UP9WYv2nzyawpKMOCl+Z/jW7djv2/J50lj9E= +github.com/whyrusleeping/chunker v0.0.0-20181014151217-fe64bd25879f/go.mod h1:p9UJB6dDgdPgMJZs7UjUOdulKyRr9fqkS+6JKAInPy8= +github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= 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= @@ -330,17 +466,25 @@ 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.opentelemetry.io/otel v1.11.2 h1:YBZcQlsVekzFsFbjygXMOXSs6pialIZxcjfO/mBDmR0= +go.opentelemetry.io/otel v1.11.2/go.mod h1:7p4EUV+AqgdlNV9gL97IgUZiVR3yrFXYo53f9BM3tRI= +go.opentelemetry.io/otel/trace v1.11.2 h1:Xf7hWSF2Glv0DE3MH7fBHvtpSBsjcBUe5MYAmZM/+y0= +go.opentelemetry.io/otel/trace v1.11.2/go.mod h1:4N+yC7QEz7TTsG9BSRLNAa63eg5E06ObSbKPmxQ/pKA= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -350,8 +494,9 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= 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= @@ -385,11 +530,13 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB 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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= 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-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-20190227160552-c95aed5357e7/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= @@ -418,6 +565,7 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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.3.0 h1:VWL6FNY2bEEmsGVKabSlHu5Irp34xmMRoqb/9lF9lxk= 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= @@ -436,11 +584,15 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ 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-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 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-20181116152217-5ac8a444bdc5/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-20190219092855-153ac476189d/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-20190302025703-b6889370fb10/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= @@ -450,6 +602,7 @@ 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-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/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-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -471,6 +624,7 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w 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-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/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= @@ -480,8 +634,10 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -494,12 +650,14 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 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/tools v0.0.0-20180221164845-07fd8470d635/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-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= @@ -509,6 +667,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= @@ -538,10 +698,13 @@ golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= 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-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +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= diff --git a/consensus/config/config.go b/consensus/config/config.go index e50d92d5..80267ee1 100644 --- a/consensus/config/config.go +++ b/consensus/config/config.go @@ -2,12 +2,12 @@ package config import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" - config2 "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "gopkg.in/yaml.v3" "io/ioutil" ) -const CName = "config" +const CName = config.CName func NewFromFile(path string) (c *Config, err error) { c = &Config{} @@ -22,11 +22,11 @@ func NewFromFile(path string) (c *Config, err error) { } type Config struct { - GrpcServer config2.GrpcServer `yaml:"grpcServer"` - Account config2.Account `yaml:"account"` - Mongo Mongo `yaml:"mongo"` - Metric config2.Metric `yaml:"metric"` - Log config2.Log `yaml:"log"` + GrpcServer config.GrpcServer `yaml:"grpcServer"` + Account config.Account `yaml:"account"` + Mongo Mongo `yaml:"mongo"` + Metric config.Metric `yaml:"metric"` + Log config.Log `yaml:"log"` } func (c *Config) Init(a *app.App) (err error) { @@ -41,14 +41,14 @@ func (c Config) GetMongo() Mongo { return c.Mongo } -func (c Config) GetGRPCServer() config2.GrpcServer { +func (c Config) GetGRPCServer() config.GrpcServer { return c.GrpcServer } -func (c Config) GetAccount() config2.Account { +func (c Config) GetAccount() config.Account { return c.Account } -func (c Config) GetMetric() config2.Metric { +func (c Config) GetMetric() config.Metric { return c.Metric } diff --git a/etc/config.yml b/etc/config.yml index b74fd7b2..ec404dda 100644 --- a/etc/config.yml +++ b/etc/config.yml @@ -37,3 +37,5 @@ log: production: false defaultLevel: "" namedLevels: {} +fileStorePogreb: + path: /tmp/pogreb diff --git a/filenode/Makefile b/filenode/Makefile new file mode 100644 index 00000000..e98af4b3 --- /dev/null +++ b/filenode/Makefile @@ -0,0 +1,9 @@ +.PHONY: proto build test +export GOPRIVATE=github.com/anytypeio + +build: + @$(eval FLAGS := $$(shell govvv -flags -pkg github.com/anytypeio/go-anytype-infrastructure-experiments/filenode)) + go build -v -o ../bin/file-node -ldflags "$(FLAGS)" github.com/anytypeio/go-anytype-infrastructure-experiments/filenode/cmd + +test: + go test ./... --cover \ No newline at end of file diff --git a/filenode/account/service.go b/filenode/account/service.go new file mode 100644 index 00000000..91f237b4 --- /dev/null +++ b/filenode/account/service.go @@ -0,0 +1,70 @@ +package account + +import ( + commonaccount "github.com/anytypeio/go-anytype-infrastructure-experiments/common/account" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/pkg/acl/account" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/keys" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/keys/asymmetric/encryptionkey" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/keys/asymmetric/signingkey" +) + +type service struct { + accountData *account.AccountData + peerId string +} + +func (s *service) Account() *account.AccountData { + return s.accountData +} + +func New() app.Component { + return &service{} +} + +func (s *service) Init(a *app.App) (err error) { + acc := a.MustComponent(config.CName).(commonaccount.ConfigGetter).GetAccount() + + decodedEncryptionKey, err := keys.DecodeKeyFromString( + acc.EncryptionKey, + encryptionkey.NewEncryptionRsaPrivKeyFromBytes, + nil) + if err != nil { + return err + } + + decodedSigningKey, err := keys.DecodeKeyFromString( + acc.SigningKey, + signingkey.NewSigningEd25519PrivKeyFromBytes, + nil) + if err != nil { + return err + } + + decodedPeerKey, err := keys.DecodeKeyFromString( + acc.PeerKey, + signingkey.NewSigningEd25519PrivKeyFromBytes, + nil) + if err != nil { + return err + } + + identity, err := decodedSigningKey.GetPublic().Raw() + if err != nil { + return err + } + + s.accountData = &account.AccountData{ + Identity: identity, + PeerKey: decodedPeerKey, + SignKey: decodedSigningKey, + EncKey: decodedEncryptionKey, + } + + return nil +} + +func (s *service) Name() (name string) { + return commonaccount.CName +} diff --git a/filenode/cmd/filenode.go b/filenode/cmd/filenode.go new file mode 100644 index 00000000..296e9e72 --- /dev/null +++ b/filenode/cmd/filenode.go @@ -0,0 +1,93 @@ +package main + +import ( + "context" + "flag" + "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileserver" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/metric" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/server" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/secure" + "github.com/anytypeio/go-anytype-infrastructure-experiments/filenode/config" + "github.com/anytypeio/go-anytype-infrastructure-experiments/filenode/filepogreb" + "go.uber.org/zap" + "net/http" + _ "net/http/pprof" + "os" + "os/signal" + "syscall" + "time" +) + +var log = logger.NewNamed("main") + +var ( + flagConfigFile = flag.String("c", "etc/config.yml", "path to config file") + flagVersion = flag.Bool("v", false, "show version and exit") + flagHelp = flag.Bool("h", false, "show help and exit") +) + +func main() { + flag.Parse() + + if *flagVersion { + fmt.Println(app.VersionDescription()) + return + } + if *flagHelp { + flag.PrintDefaults() + return + } + + if debug, ok := os.LookupEnv("ANYPROF"); ok && debug != "" { + go func() { + http.ListenAndServe(debug, nil) + }() + } + + // create app + ctx := context.Background() + a := new(app.App) + + // open config file + conf, err := config.NewFromFile(*flagConfigFile) + if err != nil { + log.Fatal("can't open config file", zap.Error(err)) + } + + // bootstrap components + a.Register(conf) + Bootstrap(a) + + // start app + if err := a.Start(ctx); err != nil { + log.Fatal("can't start app", zap.Error(err)) + } + log.Info("app started", zap.String("version", a.Version())) + + // wait exit signal + exit := make(chan os.Signal, 1) + signal.Notify(exit, os.Interrupt, syscall.SIGKILL, syscall.SIGTERM, syscall.SIGQUIT) + sig := <-exit + log.Info("received exit signal, stop app...", zap.String("signal", fmt.Sprint(sig))) + + // close app + ctx, cancel := context.WithTimeout(ctx, time.Minute) + defer cancel() + if err := a.Close(ctx); err != nil { + log.Fatal("close error", zap.Error(err)) + } else { + log.Info("goodbye!") + } + time.Sleep(time.Second / 3) +} + +func Bootstrap(a *app.App) { + a.Register(secure.New()). + Register(server.New()). + Register(filepogreb.New()). + Register(fileserver.New()). + Register(metric.New()) +} diff --git a/filenode/config/config.go b/filenode/config/config.go new file mode 100644 index 00000000..479fea23 --- /dev/null +++ b/filenode/config/config.go @@ -0,0 +1,53 @@ +package config + +import ( + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" + "gopkg.in/yaml.v3" + "io/ioutil" +) + +const CName = config.CName + +func NewFromFile(path string) (c *Config, err error) { + c = &Config{} + data, err := ioutil.ReadFile(path) + if err != nil { + return nil, err + } + if err = yaml.Unmarshal(data, c); err != nil { + return nil, err + } + return +} + +type Config struct { + Account config.Account `yaml:"account"` + GrpcServer config.GrpcServer `yaml:"grpcServer"` + Metric config.Metric `yaml:"metric"` + FileStorePogreb config.FileStorePogreb `yaml:"fileStorePogreb"` +} + +func (c *Config) Init(a *app.App) (err error) { + return +} + +func (c Config) Name() (name string) { + return CName +} + +func (c Config) GetAccount() config.Account { + return c.Account +} + +func (c Config) GetFileStorePogreb() config.FileStorePogreb { + return c.FileStorePogreb +} + +func (c Config) GetGRPCServer() config.GrpcServer { + return c.GrpcServer +} + +func (c Config) GetMetric() config.Metric { + return c.Metric +} diff --git a/filenode/filepogreb/filepogreb.go b/filenode/filepogreb/filepogreb.go new file mode 100644 index 00000000..56996985 --- /dev/null +++ b/filenode/filepogreb/filepogreb.go @@ -0,0 +1,94 @@ +package filepogreb + +import ( + "context" + "github.com/akrylysov/pogreb" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" +) + +const CName = fileblockstore.CName + +func New() Store { + return &store{} +} + +type Store interface { + app.ComponentRunnable + fileblockstore.BlockStore +} + +type configSource interface { + GetFileStorePogreb() config.FileStorePogreb +} + +type store struct { + db *pogreb.DB + conf config.FileStorePogreb +} + +func (s *store) Init(a *app.App) (err error) { + s.conf = a.MustComponent("config").(configSource).GetFileStorePogreb() + return +} + +func (s *store) Name() (name string) { + return CName +} + +func (s *store) Run(ctx context.Context) (err error) { + if s.db, err = pogreb.Open(s.conf.Path, &pogreb.Options{}); err != nil { + return + } + return +} + +func (s *store) Get(ctx context.Context, k cid.Cid) (blocks.Block, error) { + val, err := s.db.Get(k.Bytes()) + if err != nil { + return nil, fileblockstore.ErrCIDNotFound + } + return blocks.NewBlock(val), nil +} + +func (s *store) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + var res = make(chan blocks.Block) + go func() { + defer close(res) + for _, k := range ks { + b, err := s.Get(ctx, k) + if err != nil { + continue + } + select { + case <-ctx.Done(): + return + case res <- b: + } + } + }() + return res +} + +func (s *store) Add(ctx context.Context, bs []blocks.Block) error { + for _, b := range bs { + if err := s.db.Put(b.Cid().Bytes(), b.RawData()); err != nil { + return err + } + } + return nil +} + +func (s *store) Delete(ctx context.Context, c cid.Cid) error { + return s.db.Delete(c.Bytes()) +} + +func (s *store) Close(ctx context.Context) (err error) { + if s.db != nil { + return s.db.Close() + } + return +} diff --git a/filenode/fileservice/fileservice.go b/filenode/fileservice/fileservice.go deleted file mode 100644 index 6ed6de9e..00000000 --- a/filenode/fileservice/fileservice.go +++ /dev/null @@ -1,36 +0,0 @@ -package fileservice - -import ( - "context" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" - ipld "github.com/ipfs/go-ipld-format" - "github.com/ipfs/go-merkledag" -) - -const CName = "filenode.fileservice" - -type FileService interface { - app.ComponentRunnable -} - -type fileService struct { - blockService *blockService - dagService ipld.DAGService -} - -func (fs *fileService) Init(a *app.App) (err error) { - fs.dagService = merkledag.NewDAGService(fs.blockService) - return -} - -func (fs *fileService) Name() string { - return CName -} - -func (fs *fileService) Run(ctx context.Context) (err error) { - return -} - -func (fs *fileService) Close(ctx context.Context) (err error) { - return -} diff --git a/filenode/go.mod b/filenode/go.mod index 53c9191f..3fe16ed8 100644 --- a/filenode/go.mod +++ b/filenode/go.mod @@ -4,51 +4,53 @@ go 1.19 replace github.com/anytypeio/go-anytype-infrastructure-experiments/common => ../common -require github.com/anytypeio/go-anytype-infrastructure-experiments/common v0.0.0-00010101000000-000000000000 +require ( + github.com/akrylysov/pogreb v0.10.1 + github.com/anytypeio/go-anytype-infrastructure-experiments/common v0.0.0-00010101000000-000000000000 + github.com/ipfs/go-block-format v0.0.3 + github.com/ipfs/go-cid v0.3.2 + go.uber.org/zap v1.24.0 + gopkg.in/yaml.v3 v3.0.1 +) require ( + github.com/beorn7/perks v1.0.1 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/uuid v1.2.0 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/ipfs/bbloom v0.0.4 // indirect - github.com/ipfs/go-block-format v0.0.3 // indirect - github.com/ipfs/go-blockservice v0.3.0 // indirect - github.com/ipfs/go-cid v0.3.2 // indirect - github.com/ipfs/go-datastore v0.5.0 // indirect - github.com/ipfs/go-ipfs-blockstore v1.2.0 // indirect - github.com/ipfs/go-ipfs-ds-help v1.1.0 // indirect - github.com/ipfs/go-ipfs-exchange-interface v0.1.0 // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/go-cmp v0.5.9 // indirect github.com/ipfs/go-ipfs-util v0.0.2 // indirect - github.com/ipfs/go-ipld-cbor v0.0.5 // indirect - github.com/ipfs/go-ipld-format v0.4.0 // indirect - github.com/ipfs/go-ipld-legacy v0.1.0 // indirect - github.com/ipfs/go-log v1.0.5 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect - github.com/ipfs/go-merkledag v0.8.0 // indirect - github.com/ipfs/go-metrics-interface v0.0.1 // indirect - github.com/ipfs/go-verifcid v0.0.1 // indirect - github.com/ipld/go-codec-dagpb v1.3.1 // indirect - github.com/ipld/go-ipld-prime v0.16.0 // indirect - github.com/jbenet/goprocess v0.1.4 // indirect - github.com/klauspost/cpuid/v2 v2.1.1 // indirect + github.com/klauspost/cpuid/v2 v2.2.2 // indirect + github.com/kr/pretty v0.3.0 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.23.2 // indirect + github.com/libp2p/go-openssl v0.1.0 // indirect github.com/mattn/go-isatty v0.0.16 // indirect + github.com/mattn/go-pointer v0.0.1 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect github.com/minio/sha256-simd v1.0.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.7.0 // indirect github.com/multiformats/go-multibase v0.1.1 // indirect + github.com/multiformats/go-multicodec v0.6.0 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect - github.com/multiformats/go-varint v0.0.6 // indirect - github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/prometheus/client_golang v1.13.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.37.0 // indirect + github.com/prometheus/procfs v0.8.0 // indirect + github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158 // indirect + github.com/zeebo/errs v1.3.0 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - go.uber.org/zap v1.23.0 // indirect - golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect - golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect - golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + go.uber.org/multierr v1.9.0 // indirect + golang.org/x/crypto v0.4.0 // indirect + golang.org/x/sys v0.3.0 // indirect google.golang.org/protobuf v1.28.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect + storj.io/drpc v0.0.32 // indirect ) diff --git a/filenode/go.sum b/filenode/go.sum index 560bd46a..a7f0ad57 100644 --- a/filenode/go.sum +++ b/filenode/go.sum @@ -1,155 +1,103 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.31.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.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= -dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= -dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= -dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= -dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= -git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= -github.com/AndreasBriese/bbloom v0.0.0-20180913140656-343706a395b7/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +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/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/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/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/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= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Kubuxu/go-os-helper v0.0.1/go.mod h1:N8B+I7vPCT80IcP58r50u4+gEEcsZETFUpAzWW2ep1Y= -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/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -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/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/akrylysov/pogreb v0.10.1 h1:FqlR8VR7uCbJdfUob916tPM+idpKgeESDXOA1K0DK4w= +github.com/akrylysov/pogreb v0.10.1/go.mod h1:pNs6QmpQ1UlTJKDezuRWmaqkgUE2TuU0YTWyqJZ7+lI= 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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= -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-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-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= 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/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= -github.com/btcsuite/btcd v0.0.0-20190213025234-306aecffea32/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= -github.com/btcsuite/btcd v0.0.0-20190523000118-16327141da8c/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.0.0-20190824003749-130ea5bddde3/go.mod h1:3J08xEfcugPacsc34/LKRU2yO7YmuT8yt28J8k2+rrI= -github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= -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/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/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -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/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= 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/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -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-semver v0.3.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 v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -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/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cskr/pubsub v1.0.2/go.mod h1:/8MzYXk/NJAz782G8RPkFzXTZVu63VotefPnR9TIRis= -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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4= -github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= -github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= -github.com/dgraph-io/badger v1.5.5-0.20190226225317-8115aed38f8f/go.mod h1:VZxzAIRPHRVNRKRo6AXrX9BJegn6il06VMTZVJYCIjQ= -github.com/dgraph-io/badger v1.6.0-rc1/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU= -github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20190104051053-3adb47b1fb0f/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -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/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/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/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +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/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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= -github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= -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.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= -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/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/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-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -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-20191027212112-611e8accdfc9/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/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= 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/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= @@ -159,770 +107,271 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD 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/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 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/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.3/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.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.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM= -github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= 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/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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -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 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= -github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= -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/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/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/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU= -github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48= -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-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/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-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -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-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +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/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.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -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/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.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= -github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/ipfs/bbloom v0.0.4 h1:Gi+8EGJ2y5qiD5FbsbpX/TMNcJw8gSqr7eyjHa4Fhvs= -github.com/ipfs/bbloom v0.0.4/go.mod h1:cS9YprKXpoZ9lT0n/Mw/a6/aFV6DTjTLYHeA+gyqMG0= -github.com/ipfs/go-bitswap v0.6.0/go.mod h1:Hj3ZXdOC5wBJvENtdqsixmzzRukqd8EHLxZLZc3mzRA= -github.com/ipfs/go-block-format v0.0.2 h1:qPDvcP19izTjU8rgo6p7gTXZlkMkF5bz5G3fqIsSCPE= -github.com/ipfs/go-block-format v0.0.2/go.mod h1:AWR46JfpcObNfg3ok2JHDUfdiHRgWhJgCQF+KIgOPJY= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ipfs/go-block-format v0.0.3 h1:r8t66QstRp/pd/or4dpnbVfXT5Gt7lOqRvC+/dDTpMc= github.com/ipfs/go-block-format v0.0.3/go.mod h1:4LmD4ZUw0mhO+JSKdpWwrzATiEfM7WWgQ8H5l6P8MVk= -github.com/ipfs/go-blockservice v0.3.0 h1:cDgcZ+0P0Ih3sl8+qjFr2sVaMdysg/YZpLj5WJ8kiiw= -github.com/ipfs/go-blockservice v0.3.0/go.mod h1:P5ppi8IHDC7O+pA0AlGTF09jruB2h+oP3wVVaZl8sfk= -github.com/ipfs/go-cid v0.0.1/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.2/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.3/go.mod h1:GHWU/WuQdMPmIosc4Yn1bcCT7dSeX4lBafM7iqUPQvM= -github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj6+M= -github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog= -github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I= -github.com/ipfs/go-cid v0.1.0/go.mod h1:rH5/Xv83Rfy8Rw6xG+id3DYAMUVmem1MowoKwdXmN2o= github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc= github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw= -github.com/ipfs/go-datastore v0.0.1/go.mod h1:d4KVXhMt913cLBEI/PXAy6ko+W7e9AhyAKBGh803qeE= -github.com/ipfs/go-datastore v0.1.1/go.mod h1:w38XXW9kVFNp57Zj5knbKWM2T+KOZCGDRVNdgPHtbHw= -github.com/ipfs/go-datastore v0.4.0/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA= -github.com/ipfs/go-datastore v0.4.5/go.mod h1:eXTcaaiN6uOlVCLS9GjJUJtlvJfM3xk23w3fyfrmmJs= -github.com/ipfs/go-datastore v0.5.0 h1:rQicVCEacWyk4JZ6G5bD9TKR7lZEG1MWcG7UdWYrFAU= -github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk= -github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps= -github.com/ipfs/go-ds-badger v0.0.2/go.mod h1:Y3QpeSFWQf6MopLTiZD+VT6IC1yZqaGmjvRcKeSGij8= -github.com/ipfs/go-ds-badger v0.0.5/go.mod h1:g5AuuCGmr7efyzQhLL8MzwqcauPojGPUaHzfGTzuE3s= -github.com/ipfs/go-ds-badger v0.2.1/go.mod h1:Tx7l3aTph3FMFrRS838dcSJh+jjA7cX9DrGVwx/NOwE= -github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk= -github.com/ipfs/go-ds-leveldb v0.0.1/go.mod h1:feO8V3kubwsEF22n0YRQCffeb79OOYIykR4L04tMOYc= -github.com/ipfs/go-ds-leveldb v0.4.1/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s= -github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw= -github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE= -github.com/ipfs/go-ipfs-blocksutil v0.0.1/go.mod h1:Yq4M86uIOmxmGPUHv/uI7uKqZNtLb449gwKqXjIsnRk= -github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-delay v0.0.1/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw= -github.com/ipfs/go-ipfs-ds-help v0.1.1/go.mod h1:SbBafGJuGsPI/QL3j9Fc5YPLeAu+SzOkI0gFwAg+mOs= -github.com/ipfs/go-ipfs-ds-help v1.1.0 h1:yLE2w9RAsl31LtfMt91tRZcrx+e61O5mDxFRR994w4Q= -github.com/ipfs/go-ipfs-ds-help v1.1.0/go.mod h1:YR5+6EaebOhfcqVCyqemItCLthrpVNot+rsOU/5IatU= -github.com/ipfs/go-ipfs-exchange-interface v0.1.0 h1:TiMekCrOGQuWYtZO3mf4YJXDIdNgnKWZ9IE3fGlnWfo= -github.com/ipfs/go-ipfs-exchange-interface v0.1.0/go.mod h1:ych7WPlyHqFvCi/uQI48zLZuAWVP5iTQPXEfVaw5WEI= -github.com/ipfs/go-ipfs-exchange-offline v0.2.0/go.mod h1:HjwBeW0dvZvfOMwDP0TSKXIHf2s+ksdP4E3MLDRtLKY= -github.com/ipfs/go-ipfs-pq v0.0.2/go.mod h1:LWIqQpqfRG3fNc5XsnIhz/wQ2XXGyugQwls7BgUmUfY= -github.com/ipfs/go-ipfs-routing v0.2.1/go.mod h1:xiNNiwgjmLqPS1cimvAw6EyB9rkVDbiocA4yY+wRNLM= -github.com/ipfs/go-ipfs-util v0.0.1 h1:Wz9bL2wB2YBJqggkA4dD7oSmqB4cAnpNbGrlHJulv50= -github.com/ipfs/go-ipfs-util v0.0.1/go.mod h1:spsl5z8KUnrve+73pOhSVZND1SIxPW5RyBCNzQxlJBc= github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8= github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ= -github.com/ipfs/go-ipld-cbor v0.0.5 h1:ovz4CHKogtG2KB/h1zUp5U0c/IzZrL435rCh5+K/5G8= -github.com/ipfs/go-ipld-cbor v0.0.5/go.mod h1:BkCduEx3XBCO6t2Sfo5BaHzuok7hbhdMm9Oh8B2Ftq4= -github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms= -github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs= -github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= -github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ= -github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM= -github.com/ipfs/go-ipld-legacy v0.1.0 h1:wxkkc4k8cnvIGIjPO0waJCe7SHEyFgl+yQdafdjGrpA= -github.com/ipfs/go-ipld-legacy v0.1.0/go.mod h1:86f5P/srAmh9GcIcWQR9lfFLZPrIyyXQeVlOWeeWEuI= -github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM= -github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk= -github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A= -github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs= -github.com/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8= -github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo= -github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= -github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0= -github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= -github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM= -github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g= -github.com/ipfs/go-log/v2 v2.3.0/go.mod h1:QqGoj30OTpnKaG/LKTGTxoP2mmQtjVMEnK72gynbe/g= github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= -github.com/ipfs/go-merkledag v0.8.0 h1:ZUda+sh/MGZX4Z13DE/VQT4GmKWm4H95Nje4qcL/yPE= -github.com/ipfs/go-merkledag v0.8.0/go.mod h1:/RmH1kOs7qDMNtGKPh4d/UErNMVuAMpPS/tP57a3aoY= -github.com/ipfs/go-metrics-interface v0.0.1 h1:j+cpbjYvu4R8zbleSs36gvB7jR+wsL2fGD6n0jO4kdg= -github.com/ipfs/go-metrics-interface v0.0.1/go.mod h1:6s6euYU4zowdslK0GKHmqaIZ3j/b/tL7HTWtJ4VPgWY= -github.com/ipfs/go-peertaskqueue v0.7.0/go.mod h1:M/akTIE/z1jGNXMU7kFB4TeSEFvj68ow0Rrb04donIU= -github.com/ipfs/go-verifcid v0.0.1 h1:m2HI7zIuR5TFyQ1b79Da5N9dnnCP1vcu2QqawmWlK2E= -github.com/ipfs/go-verifcid v0.0.1/go.mod h1:5Hrva5KBeIog4A+UpqlaIU+DEstipcJYQQZc0g37pY0= -github.com/ipld/go-codec-dagpb v1.3.1 h1:yVNlWRQexCa54ln3MSIiUN++ItH7pdhBFhh0hSgZu1w= -github.com/ipld/go-codec-dagpb v1.3.1/go.mod h1:ErNNglIi5KMur/MfFE/svtgQthzVvf+43MrzLbpcIZY= -github.com/ipld/go-ipld-prime v0.9.1-0.20210324083106-dc342a9917db/go.mod h1:KvBLMr4PX1gWptgkzRjVZCrLmSGcZCb/jioOQwCqZN8= -github.com/ipld/go-ipld-prime v0.16.0 h1:RS5hhjB/mcpeEPJvfyj0qbOj/QL+/j05heZ0qa97dVo= -github.com/ipld/go-ipld-prime v0.16.0/go.mod h1:axSCuOCBPqrH+gvXr2w9uAOulJqBPhHPT2PjoiiU1qA= -github.com/jackpal/gateway v1.0.5/go.mod h1:lTpwd4ACLXmpyiCTRtfiNyVnUmqT9RivzCDQetPfnjA= -github.com/jackpal/go-nat-pmp v1.0.1/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= -github.com/jbenet/go-cienv v0.0.0-20150120210510-1bb1476777ec/go.mod h1:rGaEvXB4uRSZMmzKNLoXvTu1sfx+1kv/DojUlPrSZGs= -github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA= -github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs= -github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= -github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY= -github.com/jbenet/goprocess v0.1.3/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= -github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= -github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= -github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= -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/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -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.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +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/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +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/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d/go.mod h1:P2viExyCEfeWGU259JnaQ34Inuec4R38JCyBx2edgD0= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= 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/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0= -github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.2 h1:xPMwiykqNK9VK0NYC3+jTMYv9I6Vl3YdjZgPZKG3zO0= +github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk= 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.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.3/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/libp2p/go-addr-util v0.0.1/go.mod h1:4ac6O7n9rIAKB1dnd+s8IbbMXkt+oBpzX4/+RACcnlQ= -github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E= -github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ= -github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= -github.com/libp2p/go-conn-security-multistream v0.1.0/go.mod h1:aw6eD7LOsHEX7+2hJkDxw1MteijaVcI+/eP2/x3J1xc= -github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU= -github.com/libp2p/go-conn-security-multistream v0.2.1/go.mod h1:cR1d8gA0Hr59Fj6NhaTpFhJZrjSYuNmhpT2r25zYR70= -github.com/libp2p/go-eventbus v0.1.0/go.mod h1:vROgu5cs5T7cv7POWlWxBaVLxfSegC5UGQf8A2eEmx4= -github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8= -github.com/libp2p/go-flow-metrics v0.0.1/go.mod h1:Iv1GH0sG8DtYN3SVJ2eG221wMiNpZxBdp967ls1g+k8= -github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs= -github.com/libp2p/go-libp2p v0.6.1/go.mod h1:CTFnWXogryAHjXAKEbOf1OWY+VeAP3lDMZkfEI5sT54= -github.com/libp2p/go-libp2p v0.7.0/go.mod h1:hZJf8txWeCduQRDC/WSqBGMxaTHCOYHt2xSU1ivxn0k= -github.com/libp2p/go-libp2p v0.7.4/go.mod h1:oXsBlTLF1q7pxr+9w6lqzS1ILpyHsaBPniVO7zIHGMw= -github.com/libp2p/go-libp2p v0.8.1/go.mod h1:QRNH9pwdbEBpx5DTJYg+qxcVaDMAz3Ee/qDKwXujH5o= -github.com/libp2p/go-libp2p v0.14.3/go.mod h1:d12V4PdKbpL0T1/gsUNN8DfgMuRPDX8bS2QxCZlwRH0= -github.com/libp2p/go-libp2p-autonat v0.1.1/go.mod h1:OXqkeGOY2xJVWKAGV2inNF5aKN/djNA3fdpCWloIudE= -github.com/libp2p/go-libp2p-autonat v0.2.0/go.mod h1:DX+9teU4pEEoZUqR1PiMlqliONQdNbfzE1C718tcViI= -github.com/libp2p/go-libp2p-autonat v0.2.1/go.mod h1:MWtAhV5Ko1l6QBsHQNSuM6b1sRkXrpk0/LqCr+vCVxI= -github.com/libp2p/go-libp2p-autonat v0.2.2/go.mod h1:HsM62HkqZmHR2k1xgX34WuWDzk/nBwNHoeyyT4IWV6A= -github.com/libp2p/go-libp2p-autonat v0.4.2/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk= -github.com/libp2p/go-libp2p-blankhost v0.1.1/go.mod h1:pf2fvdLJPsC1FsVrNP3DUUvMzUts2dsLLBEpo1vW1ro= -github.com/libp2p/go-libp2p-blankhost v0.1.4/go.mod h1:oJF0saYsAXQCSfDq254GMNmLNz6ZTHTOvtF4ZydUvwU= -github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ= -github.com/libp2p/go-libp2p-circuit v0.1.4/go.mod h1:CY67BrEjKNDhdTk8UgBX1Y/H5c3xkAcs3gnksxY7osU= -github.com/libp2p/go-libp2p-circuit v0.2.1/go.mod h1:BXPwYDN5A8z4OEY9sOfr2DUQMLQvKt/6oku45YUmjIo= -github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA= -github.com/libp2p/go-libp2p-core v0.0.1/go.mod h1:g/VxnTZ/1ygHxH3dKok7Vno1VfpvGcGip57wjTU4fco= -github.com/libp2p/go-libp2p-core v0.0.2/go.mod h1:9dAcntw/n46XycV4RnlBq3BpgrmyUi9LuoTNdPrbUco= -github.com/libp2p/go-libp2p-core v0.0.4/go.mod h1:jyuCQP356gzfCFtRKyvAbNkyeuxb7OlyhWZ3nls5d2I= -github.com/libp2p/go-libp2p-core v0.2.0/go.mod h1:X0eyB0Gy93v0DZtSYbEM7RnMChm9Uv3j7yRXjO77xSI= -github.com/libp2p/go-libp2p-core v0.2.2/go.mod h1:8fcwTbsG2B+lTgRJ1ICZtiM5GWCWZVoVrLaDRvIRng0= -github.com/libp2p/go-libp2p-core v0.2.4/go.mod h1:STh4fdfa5vDYr0/SzYYeqnt+E6KfEV5VxfIrm0bcI0g= -github.com/libp2p/go-libp2p-core v0.3.0/go.mod h1:ACp3DmS3/N64c2jDzcV429ukDpicbL6+TrrxANBjPGw= -github.com/libp2p/go-libp2p-core v0.3.1/go.mod h1:thvWy0hvaSBhnVBaW37BvzgVV68OUhgJJLAa6almrII= -github.com/libp2p/go-libp2p-core v0.4.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= -github.com/libp2p/go-libp2p-core v0.5.0/go.mod h1:49XGI+kc38oGVwqSBhDEwytaAxgZasHhFfQKibzTls0= -github.com/libp2p/go-libp2p-core v0.5.1/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.4/go.mod h1:uN7L2D4EvPCvzSH5SrhR72UWbnSGpt5/a35Sm4upn4Y= -github.com/libp2p/go-libp2p-core v0.5.5/go.mod h1:vj3awlOr9+GMZJFH9s4mpt9RHHgGqeHCopzbYKZdRjM= -github.com/libp2p/go-libp2p-core v0.5.6/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.5.7/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.6.0/go.mod h1:txwbVEhHEXikXn9gfC7/UDDw7rkxuX0bJvM49Ykaswo= -github.com/libp2p/go-libp2p-core v0.7.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.1/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.2/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-core v0.8.5/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8= -github.com/libp2p/go-libp2p-crypto v0.1.0/go.mod h1:sPUokVISZiy+nNuTTH/TY+leRSxnFj/2GLjtOTW90hI= -github.com/libp2p/go-libp2p-discovery v0.2.0/go.mod h1:s4VGaxYMbw4+4+tsoQTqh7wfxg97AEdo4GYBt6BadWg= -github.com/libp2p/go-libp2p-discovery v0.3.0/go.mod h1:o03drFnz9BVAZdzC/QUQ+NeQOu38Fu7LJGEOK2gQltw= -github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug= -github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90= -github.com/libp2p/go-libp2p-mplex v0.2.0/go.mod h1:Ejl9IyjvXJ0T9iqUTE1jpYATQ9NM3g+OtR+EMMODbKo= -github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE= -github.com/libp2p/go-libp2p-mplex v0.2.2/go.mod h1:74S9eum0tVQdAfFiKxAyKzNdSuLqw5oadDq7+L/FELo= -github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek= -github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw= -github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g= -github.com/libp2p/go-libp2p-nat v0.0.5/go.mod h1:1qubaE5bTZMJE+E/uu2URroMbzdubFz1ChgiN79yKPE= -github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw= -github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU= -github.com/libp2p/go-libp2p-noise v0.2.0/go.mod h1:IEbYhBBzGyvdLBoxxULL/SGbJARhUeqlO8lVSREYu2Q= -github.com/libp2p/go-libp2p-peer v0.2.0/go.mod h1:RCffaCvUyW2CJmG2gAWVqwePwW7JMgxjsHm7+J5kjWY= -github.com/libp2p/go-libp2p-peerstore v0.1.0/go.mod h1:2CeHkQsr8svp4fZ+Oi9ykN1HBb6u0MOvdJ7YIsmcwtY= -github.com/libp2p/go-libp2p-peerstore v0.1.3/go.mod h1:BJ9sHlm59/80oSkpWgr1MyY1ciXAXV397W6h1GH/uKI= -github.com/libp2p/go-libp2p-peerstore v0.2.0/go.mod h1:N2l3eVIeAitSg3Pi2ipSrJYnqhVnMNQZo9nkSCuAbnQ= -github.com/libp2p/go-libp2p-peerstore v0.2.1/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= -github.com/libp2p/go-libp2p-peerstore v0.2.2/go.mod h1:NQxhNjWxf1d4w6PihR8btWIRjwRLBr4TYKfNgrUkOPA= -github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= -github.com/libp2p/go-libp2p-peerstore v0.2.7/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s= -github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA= -github.com/libp2p/go-libp2p-quic-transport v0.10.0/go.mod h1:RfJbZ8IqXIhxBRm5hqUEJqjiiY8xmEuq3HUDS993MkA= -github.com/libp2p/go-libp2p-record v0.1.0/go.mod h1:ujNc8iuE5dlKWVy6wuL6dd58t0n7xI4hAIl8pE6wu5Q= -github.com/libp2p/go-libp2p-secio v0.1.0/go.mod h1:tMJo2w7h3+wN4pgU2LSYeiKPrfqBgkOsdiKK77hE7c8= -github.com/libp2p/go-libp2p-secio v0.2.0/go.mod h1:2JdZepB8J5V9mBp79BmwsaPQhRPNN2NrnB2lKQcdy6g= -github.com/libp2p/go-libp2p-secio v0.2.1/go.mod h1:cWtZpILJqkqrSkiYcDBh5lA3wbT2Q+hz3rJQq3iftD8= -github.com/libp2p/go-libp2p-secio v0.2.2/go.mod h1:wP3bS+m5AUnFA+OFO7Er03uO1mncHG0uVwGrwvjYlNY= -github.com/libp2p/go-libp2p-swarm v0.1.0/go.mod h1:wQVsCdjsuZoc730CgOvh5ox6K8evllckjebkdiY5ta4= -github.com/libp2p/go-libp2p-swarm v0.2.2/go.mod h1:fvmtQ0T1nErXym1/aa1uJEyN7JzaTNyBcHImCxRpPKU= -github.com/libp2p/go-libp2p-swarm v0.2.3/go.mod h1:P2VO/EpxRyDxtChXz/VPVXyTnszHvokHKRhfkEgFKNM= -github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM= -github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk= -github.com/libp2p/go-libp2p-swarm v0.5.0/go.mod h1:sU9i6BoHE0Ve5SKz3y9WfKrh8dUat6JknzUehFx8xW4= -github.com/libp2p/go-libp2p-testing v0.0.2/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.0.4/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E= -github.com/libp2p/go-libp2p-testing v0.1.0/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= -github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0= -github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc= -github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g= -github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0= -github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M= -github.com/libp2p/go-libp2p-transport-upgrader v0.1.1/go.mod h1:IEtA6or8JUbsV07qPW4r01GnTenLW4oi3lOPbUMGJJA= -github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns= -github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o= -github.com/libp2p/go-libp2p-transport-upgrader v0.4.2/go.mod h1:NR8ne1VwfreD5VIWIU62Agt/J18ekORFU/j1i2y8zvk= -github.com/libp2p/go-libp2p-yamux v0.2.0/go.mod h1:Db2gU+XfLpm6E4rG5uGCFX6uXA8MEXOxFcRoXUODaK8= -github.com/libp2p/go-libp2p-yamux v0.2.2/go.mod h1:lIohaR0pT6mOt0AZ0L2dFze9hds9Req3OfS+B+dv4qw= -github.com/libp2p/go-libp2p-yamux v0.2.5/go.mod h1:Zpgj6arbyQrmZ3wxSZxfBmbdnWtbZ48OpsfmQVTErwA= -github.com/libp2p/go-libp2p-yamux v0.2.7/go.mod h1:X28ENrBMU/nm4I3Nx4sZ4dgjZ6VhLEn0XhIoZ5viCwU= -github.com/libp2p/go-libp2p-yamux v0.2.8/go.mod h1:/t6tDqeuZf0INZMTgd0WxIRbtK2EzI2h7HbFm9eAKI4= -github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30= -github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po= -github.com/libp2p/go-libp2p-yamux v0.5.4/go.mod h1:tfrXbyaTqqSU654GTvK3ocnSZL3BuHoeTSqhcel1wsE= -github.com/libp2p/go-maddr-filter v0.0.4/go.mod h1:6eT12kSQMA9x2pvFQa+xesMKUBlj9VImZbj3B9FBH/Q= -github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M= -github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU= -github.com/libp2p/go-mplex v0.0.3/go.mod h1:pK5yMLmOoBR1pNCqDlA2GQrdAVTMkqFalaTWe7l4Yd0= -github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU= -github.com/libp2p/go-mplex v0.1.1/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= -github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk= -github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= -github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ= -github.com/libp2p/go-msgio v0.0.2/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-msgio v0.0.4/go.mod h1:63lBBgOTDKQL6EWazRMCwXsEeEeK9O2Cd+0+6OOuipQ= -github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA= -github.com/libp2p/go-nat v0.0.4/go.mod h1:Nmw50VAvKuk38jUBcmNh6p9lUJLoODbJRvYAa/+KSDo= -github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU= -github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= -github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk= -github.com/libp2p/go-netroute v0.1.5/go.mod h1:V1SR3AaECRkEQCoFFzYwVYWvYIEtlxx89+O3qcpCl4A= -github.com/libp2p/go-netroute v0.1.6/go.mod h1:AqhkMh0VuWmfgtxKPp3Oc1LdU5QSWS7wl0QLhSZqXxQ= -github.com/libp2p/go-openssl v0.0.2/go.mod h1:v8Zw2ijCSWBQi8Pq5GAixw6DbFfa9u6VIYDXnvOXkc0= -github.com/libp2p/go-openssl v0.0.3/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.4/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.5/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc= -github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA= -github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ= -github.com/libp2p/go-reuseport-transport v0.0.2/go.mod h1:YkbSDrvjUVDL6b8XqriyA20obEtsW9BLkuOUyQAOCbs= -github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM= -github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw= -github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-sockaddr v0.1.0/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-sockaddr v0.1.1/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k= -github.com/libp2p/go-stream-muxer v0.0.1/go.mod h1:bAo8x7YkSpadMTbtTaxGVHWUQsR/l5MEaHbKaliuT14= -github.com/libp2p/go-stream-muxer-multistream v0.2.0/go.mod h1:j9eyPol/LLRqT+GPLSxvimPhNph4sfYfMoDPd7HkzIc= -github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA= -github.com/libp2p/go-tcp-transport v0.1.0/go.mod h1:oJ8I5VXryj493DEJ7OsBieu8fcg2nHGctwtInJVpipc= -github.com/libp2p/go-tcp-transport v0.1.1/go.mod h1:3HzGvLbx6etZjnFlERyakbaYPdfjg2pWP97dFZworkY= -github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0= -github.com/libp2p/go-tcp-transport v0.2.3/go.mod h1:9dvr03yqrPyYGIEN6Dy5UvdJZjyPFvl1S/igQ5QD1SU= -github.com/libp2p/go-ws-transport v0.2.0/go.mod h1:9BHJz/4Q5A9ludYWKoGCFC5gUElzlHoKzu0yY9p/klM= -github.com/libp2p/go-ws-transport v0.3.0/go.mod h1:bpgTJmRZAvVHrgHybCVyqoBmyLQ1fiZuEaBYusP5zsk= -github.com/libp2p/go-ws-transport v0.4.0/go.mod h1:EcIEKqf/7GDjth6ksuS/6p7R49V4CBY6/E7R/iyhYUA= -github.com/libp2p/go-yamux v1.2.2/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.0/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.3/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.5/go.mod h1:FGTiPvoV/3DVdgWpX+tM0OW3tsM+W5bSE3gZwqQTcow= -github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE= -github.com/libp2p/go-yamux/v2 v2.2.0/go.mod h1:3So6P6TV6r75R9jiBpiIKgU/66lOarCZjqROGxzPpPQ= -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/lucas-clemente/quic-go v0.19.3/go.mod h1:ADXpNbTQjq1hIzCpB+y/k5iz4n4z4IwqoLb94Kh5Hu8= -github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= -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/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= -github.com/marten-seemann/qtls v0.10.0/go.mod h1:UvMd1oaYDACI99/oZUYLzMCkBXQVT0aGm99sJhbT8hs= -github.com/marten-seemann/qtls-go1-15 v0.1.1/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= -github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -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.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +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/libp2p/go-libp2p v0.23.2 h1:yqyTeKQJyofWXxEv/eEVUvOrGdt/9x+0PIQ4N1kaxmE= +github.com/libp2p/go-libp2p v0.23.2/go.mod h1:s9DEa5NLR4g+LZS+md5uGU4emjMWFiqkZr6hBTY8UxI= +github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= +github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-pointer v0.0.1 h1:n+XhsuGeVO6MEAp7xyEukFINEa+Quek5psIR/ylA6o0= +github.com/mattn/go-pointer v0.0.1/go.mod h1:2zXcozF6qYGgmsG+SeTZz3oAbFLdD3OWqnUbNvJZAlc= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= -github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.12/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.28/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= -github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= -github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= -github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.0.0-20190328051042-05b4dd3047e5/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= -github.com/minio/sha256-simd v0.1.0/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U= github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= -github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= -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/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -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/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/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.1/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8= -github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= -github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.1.0/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44= -github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= -github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE= -github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y= -github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI= -github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc= -github.com/multiformats/go-multiaddr v0.3.3/go.mod h1:lCKNGP1EQ1eZ35Za2wlqnabm9xQkib3fyB+nZXHLag0= -github.com/multiformats/go-multiaddr-dns v0.0.1/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.0.2/go.mod h1:9kWcqw/Pj6FwxAwW38n/9403szc57zJPs45fmnznu3Q= -github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0= -github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= -github.com/multiformats/go-multiaddr-fmt v0.0.1/go.mod h1:aBYjqL4T/7j4Qx+R73XSv/8JsgnRFlf0w2KGLCmXl3Q= -github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= -github.com/multiformats/go-multiaddr-net v0.0.1/go.mod h1:nw6HSxNmCIQH27XPGBuX+d1tnvM7ihcFwHMSstNAVUU= -github.com/multiformats/go-multiaddr-net v0.1.0/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= -github.com/multiformats/go-multiaddr-net v0.1.1/go.mod h1:5JNbcfBOP4dnhoZOv10JJVkJO0pCCEf8mTnipAo2UZQ= -github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y= -github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA= -github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA= -github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc= +github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc= github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8= -github.com/multiformats/go-multicodec v0.3.0/go.mod h1:qGGaQmioCDh+TeFOnxrbU0DaIPw8yFgAZgFG0V7p1qQ= -github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U= -github.com/multiformats/go-multihash v0.0.5/go.mod h1:lt/HCbqlQwlPBz7lv0sQCdtfcMtlJvakRUn/0Ual8po= -github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= -github.com/multiformats/go-multihash v0.0.10/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multicodec v0.6.0 h1:KhH2kSuCARyuJraYMFxrNO3DqIaYhOdS039kbhgVwpE= +github.com/multiformats/go-multicodec v0.6.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw= github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc= -github.com/multiformats/go-multihash v0.0.15/go.mod h1:D6aZrWNLFTV/ynMpKsNtB40mJzmCl4jb1alC0OvHiHg= -github.com/multiformats/go-multihash v0.1.0/go.mod h1:RJlXsxt6vHGaia+S8We0ErjhojtKzPP2AH4+kYM7k84= github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= -github.com/multiformats/go-multistream v0.1.0/go.mod h1:fJTiDfXJVmItycydCnNx4+wSzZ5NwG2FEVAI30fiovg= -github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38= -github.com/multiformats/go-multistream v0.2.1/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k= -github.com/multiformats/go-multistream v0.2.2/go.mod h1:UIcnm7Zuo8HKG+HkWgfQsGL+/MIEhyTqbODbIUwSXKs= -github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= -github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= -github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= 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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -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/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= -github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= -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/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -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.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -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/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.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -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.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= -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/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/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/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polydawn/refmt v0.0.0-20190221155625-df39d6c2d992/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/polydawn/refmt v0.0.0-20190807091052-3d65705ee9f1/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e h1:ZOcivgkkFRnjfoTcGsDq3UQYiBmekwLA+qg0OjyB/ls= -github.com/polydawn/refmt v0.0.0-20201211092308-30ac6d18308e/go.mod h1:uIp+gprXxxrWSjjklXD+mN4wed/tMfjMMmN/9+JsA9o= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= 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.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0 h1:b71QUfeo5M8gq2+evJdTPfZhYMAU0uKPkyPJ7TPsloU= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= 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 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/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.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.18.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= -github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= 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.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -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/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/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= -github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= -github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= -github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= -github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= -github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= -github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= -github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= -github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= -github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= -github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= -github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= -github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= -github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= -github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= -github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= -github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= -github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= -github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= 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/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190222223459-a17d461953aa/go.mod h1:2RVY1rIf+2J2o/IM9+vPq9RzmHDSseB7FoXiSNIUsoU= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smola/gocompat v0.2.0/go.mod h1:1B0MlxbmoZNo3h8guHp8HztB3BSYR5itql9qtVc0ypY= -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/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= -github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= -github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a/go.mod h1:7AyxJNCJ7SBZ1MfVQCWD6Uqo2oubI2Eq2y2eqf+A5r0= +github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU= github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc= -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/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -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/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/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/src-d/envconfig v1.0.0/go.mod h1:Q9YQZ7BKITldTBnoxsE5gOeB5y66RyPXeue/R4aaNBc= -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/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/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ= -github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= -github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= -github.com/warpfork/go-testmark v0.3.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0= -github.com/warpfork/go-wish v0.0.0-20180510122957-5ad1f5abf436/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= -github.com/warpfork/go-wish v0.0.0-20200122115046-b9ea61034e4a/go.mod h1:x6AKhvSSexNrVSrViXSHUEbICjmGXhtgABaHIySUSGw= -github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158 h1:WXhVOwj2USAXB5oMDwRl3piOux2XMV9TANaYxXHdkoE= -github.com/whyrusleeping/cbor-gen v0.0.0-20200123233031-1cdf64d27158/go.mod h1:Xj/M2wWU+QdTdRbu/L/1dIZY8/Wb2K9pAhtroQuxJJI= -github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc= -github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM= -github.com/whyrusleeping/go-logging v0.0.1/go.mod h1:lDPYj54zutzG1XYfHAhcc7oNXEburHQBn+Iqd4yS4vE= -github.com/whyrusleeping/mafmt v1.2.8/go.mod h1:faQJFPbLSxzD9xpA02ttW/tS9vZykNvXwGvqIpk20FA= -github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4= -github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI= -github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +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= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= +github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs= +github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= +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.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -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/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= -go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= -go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= -golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= -golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= 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-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190225124518-7f87c0fbb88b/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-20190313024323-a1f597ede03a/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-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/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-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= -golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +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/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/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.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -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-20181011144130-49bb7cea24b1/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-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181106065722-10aee1819953/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-20190227160552-c95aed5357e7/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-20190313220215-9f648a60d977/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-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/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-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +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-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-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-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -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-20210423184538-5f58ad60dda6/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +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-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= 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= @@ -930,136 +379,178 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ 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/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-20181029174526-d69651ed3497/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-20190219092855-153ac476189d/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-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +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-20190526052359-791d8a0f4d09/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/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-20190726091711-fc99dfbffb4e/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-20190924154521-2837fb4f24fe/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-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/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-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/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-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/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-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-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-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210317225723-c4fcb01b228e/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-20210426080607-c94f62235c83/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-20210603081109-ebe580a85c40/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-20210630005230-0f9fa26af87c/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-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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/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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 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/tools v0.0.0-20180221164845-07fd8470d635/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-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181130052023-1c3d964395ce/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-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-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-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +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-20191216052735-49a3e744a425/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-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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= -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/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.3.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/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-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= -google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= 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-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +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-20200331122359-1ee6d9798940/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-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +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/grpc v1.19.0/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.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +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.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.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +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/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= @@ -1068,27 +559,18 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi 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.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= 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 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -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/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/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d/go.mod h1:z+K8VcOYVYcSwSjGebuDL6176A1XskgbtNl64NSg+n8= -gopkg.in/src-d/go-log.v1 v1.0.1/go.mod h1:GN34hKP0g305ysm2/hctJ0Y8nWP3zxXXJ8GFabTyABE= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -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.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1098,18 +580,19 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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= -grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +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= -lukechampine.com/blake3 v1.1.6/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +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= lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0= lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA= +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.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= -sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= -sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= +storj.io/drpc v0.0.32 h1:5p5ZwsK/VOgapaCu+oxaPVwO6UwIs+iwdMiD50+R4PI= +storj.io/drpc v0.0.32/go.mod h1:6rcOyR/QQkSTX/9L5ZGtlZaE2PtXTTZl8d+ulSeeYEg= diff --git a/go.work.sum b/go.work.sum index b156477e..8bb678cc 100644 --- a/go.work.sum +++ b/go.work.sum @@ -3,147 +3,462 @@ cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712D cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3 h1:hJiie5Bf3QucGRa4ymsAUOxyhYwGEz1xrsVk0P8erlw= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0 h1:SPOUaucgtVls75mg+X7CXigS71EnsfVUK/2CgVrwqgw= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412 h1:GvWw74lx5noHocd+f6HBMXK6DuggBB1dhVkuGZbv7qM= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c h1:ivON6cwHK1OH26MZyWDCnbTRZZf0IhNsENoNAKFS1g4= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999 h1:OR8VhtwhcAI3U48/rzBsVOuHi0zDPzYI1xASVcdSgR8= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= +github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= +github.com/Kubuxu/go-os-helper v0.0.1 h1:EJiD2VUQyh5A9hWJLmc6iWg6yIcJ7jpBcwC8GMGXfDk= +github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= +github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= +github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-sdk-go v1.27.0 h1:0xphMHGMLBrPMfxR2AmVjZKcMEESEgWF8Kru94BNByk= +github.com/aws/aws-sdk-go-v2 v0.18.0 h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg= +github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625 h1:ckJgFhFWywOx+YLEMIJsTb+NV6NexWICk5+AMSuz3ss= +github.com/btcsuite/btcd v0.21.0-beta h1:At9hIZdJW0s9E/fAz28nrz6AmcNlSVucCH796ZteX1M= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= +github.com/btcsuite/btcutil v1.0.2 h1:9iZ1Terx9fMIOtq1VrwdqfsATL9MC2l8ZrUY6YZ2uts= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw= +github.com/btcsuite/goleveldb v1.0.0 h1:Tvd0BfvqX9o823q1j2UZ/epQo09eJh6dTcRp79ilIN4= +github.com/btcsuite/snappy-go v1.0.0 h1:ZxaA6lo2EpxGddsA8JwWOcxlzRybb444sgmeJQMJGQE= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc= +github.com/btcsuite/winsvc v1.0.0 h1:J9B4L7e3oqhXOcm+2IuNApwzQec85lE+QaikUcCs+dk= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI= +github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= +github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0 h1:QlHdikaxALkqWasW8hAC1mfR0jdmvbfaBdBPFmRSglA= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f h1:WBZRG4aNOuI15bLRrCgN8fCq8E5Xuty6jGbmSNEvSsU= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= +github.com/containerd/cgroups v0.0.0-20201119153540-4cbc285b3327/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= +github.com/containerd/cgroups v1.0.4/go.mod h1:nLNQtsF7Sl2HxNebu77i1R0oDlhiTG+kO4JTrUzo6IA= github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04= github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d h1:t5Wuyh53qYyg9eqn4BbnlIT+vmhyww0TatL+zT3uWgI= +github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.4.0 h1:y9YHcjnjynCd/DVbg5j9L/33jQM3MxJlbj/zWskzfGU= +github.com/coreos/go-systemd/v22 v22.4.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf h1:CAKfRE2YtTUIjjh1bkBtyYFaUT/WmOqsJjgtihT0vMI= github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/decred/dcrd/lru v1.0.0 h1:Kbsb1SFDsIlaupWPwsPp+dkxiBY1frcS07PCPgotKz8= github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= 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/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/elastic/gosigar v0.12.0/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= +github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= github.com/envoyproxy/go-control-plane v0.9.4 h1:rEvIZUSZ3fx39WIi3JkQqQBitGwpELBIYWeBVh6wn+E= github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/gliderlabs/ssh v0.1.1 h1:j3L6gSLQalDETeEg/Jg0mGY0/y/N6zI2xX1978P0Uqw= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127 h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI= +github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk= +github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= +github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= 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-yaml/yaml v2.1.0+incompatible h1:RYi2hDdss1u4YE7GwixGzWwVo47T8UQwnTLB6vQiq+o= +github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7 h1:2hRPrmiwPrp3fQX967rNJIhQPtiGXdlQWAxKbKw3VHA= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +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-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= -github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99 h1:Ak8CrdlwwXwAZxzS66vgPt4U8yUZX7JwLvVR58FN5jM= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= 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/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI= +github.com/gxed/hashland/keccakpg v0.0.1 h1:wrk3uMNaMxbXiHibbPO4S0ymqJMm41WiudyFSs7UnsU= +github.com/gxed/hashland/murmur3 v0.0.1 h1:SheiaIt0sda5K+8FLz952/1iWS9zrnKsEJaOJu4ZbSc= +github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= +github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/huin/goupnp v1.0.3 h1:N8No57ls+MnjlB+JPiCVSOyy/ot7MJTqlo7rn+NYSqQ= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= +github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= +github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150 h1:vlNjIqmUZ9CMAWsbURYl3a6wZbw7q5RHVvlXTNS/Bs8= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6 h1:UDMh68UUwekSh5iP2OMhRRZJiiBccgV7axzUG8vi56c= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= -github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= +github.com/ipfs/go-bitswap v0.11.0/go.mod h1:05aE8H3XOU+LXpTedeAS0OZpcO1WFsj5niYQH9a1Tmk= +github.com/ipfs/go-cid v0.2.0/go.mod h1:P+HXFDF4CVhaVayiEb4wkAy7zBHxBwsJyt0Y5U6MLro= github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= +github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= -github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= +github.com/ipfs/go-ipfs-exchange-offline v0.3.0/go.mod h1:MOdJ9DChbb5u37M1IcbrRB02e++Z7521fMxqCNRrz9s= +github.com/ipfs/go-ipfs-routing v0.3.0/go.mod h1:dKqtTFIql7e1zYsEuWLyuOU+E0WJWW8JjbTPLParDWo= +github.com/ipfs/go-peertaskqueue v0.8.0/go.mod h1:cz8hEnnARq4Du5TGqiWKgMr/BOSQ5XOgMOh1K5YYKKM= +github.com/ipld/go-ipld-prime v0.18.0/go.mod h1:735yXW548CKrLwVCYXzqx90p5deRJMVVxM9eJ4Qe+qE= +github.com/jackpal/gateway v1.0.5 h1:qzXWUJfuMdlLMtt0a3Dgt+xkWQiA5itDEITVJtuSwMc= +github.com/jbenet/go-cienv v0.1.0 h1:Vc/s0QbQtoxX8MwwSLWWh+xNNZvM3Lw7NsTcHrvvhMc= github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1 h1:ujPKutqRlJtcfWk6toYVYagwra7HQHbXOaS171b4Tg8= github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/kami-zh/go-capturer v0.0.0-20171211120116-e492ea43421d h1:cVtBfNW5XTHiKQe7jDaDBSh/EVM4XLPutLAGboIXuM0= github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23 h1:FOOIBWrEkLgmlgGfMuZT83xIwfPDxEI2OHu6xUmJMFE= +github.com/klauspost/cpuid/v2 v2.1.0/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= -github.com/koron/go-ssdp v0.0.3 h1:JivLMY45N76b4p/vsWGOKewBQu6uf39y8l+AQ7sDKx8= +github.com/koron/go-ssdp v0.0.3/go.mod h1:b2MxI6yh02pKrsyNoQUsk4+YNikaGhe4894J+Q5lDvA= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= -github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/kr/pty v1.1.3 h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk= +github.com/libp2p/go-addr-util v0.0.2 h1:7cWK5cdA5x72jX0g8iLrQWm5TRJZ6CzGdPEhWj7plWU= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= +github.com/libp2p/go-conn-security-multistream v0.2.1 h1:ft6/POSK7F+vl/2qzegnHDaXFU0iWB4yVTYrioC6Zy0= +github.com/libp2p/go-eventbus v0.2.1 h1:VanAdErQnpTioN2TowqNcOijf6YwhuODe4pPKSDpxGc= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= -github.com/libp2p/go-libp2p-asn-util v0.2.0 h1:rg3+Os8jbnO5DxkC7K/Utdi+DkY3q/d1/1q+8WeNAsw= -github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p v0.22.0/go.mod h1:UDolmweypBSjQb2f7xutPnwZ/fxioLbMBxSjRksxxU4= +github.com/libp2p/go-libp2p-asn-util v0.2.0/go.mod h1:WoaWxbHKBymSN41hWSq/lGKJEca7TNm58+gGJi2WsLI= +github.com/libp2p/go-libp2p-autonat v0.4.2 h1:YMp7StMi2dof+baaxkbxaizXjY1RPvU71CXfxExzcUU= +github.com/libp2p/go-libp2p-blankhost v0.2.0 h1:3EsGAi0CBGcZ33GwRuXEYJLLPoVWyXJ1bcJzAJjINkk= +github.com/libp2p/go-libp2p-circuit v0.4.0 h1:eqQ3sEYkGTtybWgr6JLqJY6QLtPWRErvFjFDfAOO1wc= +github.com/libp2p/go-libp2p-crypto v0.1.0 h1:k9MFy+o2zGDNGsaoZl0MA3iZ75qXxr9OOoAZF+sD5OQ= +github.com/libp2p/go-libp2p-discovery v0.5.0 h1:Qfl+e5+lfDgwdrXdu4YNCWyEo3fWuP+WgN9mN0iWviQ= +github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8= +github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aDN3Fx1sc= +github.com/libp2p/go-libp2p-nat v0.0.6 h1:wMWis3kYynCbHoyKLPBEMu4YRLltbm8Mk08HGSfvTkU= +github.com/libp2p/go-libp2p-netutil v0.1.0 h1:zscYDNVEcGxyUpMd0JReUZTrpMfia8PmLKcKF72EAMQ= +github.com/libp2p/go-libp2p-noise v0.2.0 h1:wmk5nhB9a2w2RxMOyvsoKjizgJOEaJdfAakr0jN8gds= +github.com/libp2p/go-libp2p-peer v0.2.0 h1:EQ8kMjaCUwt/Y5uLgjT8iY2qg0mGUT0N1zUjer50DsY= +github.com/libp2p/go-libp2p-peerstore v0.2.7 h1:83JoLxyR9OYTnNfB5vvFqvMUv/xDNa6NoPHnENhBsGw= +github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k= +github.com/libp2p/go-libp2p-quic-transport v0.10.0 h1:koDCbWD9CCHwcHZL3/WEvP2A+e/o5/W5L3QS/2SPMA0= +github.com/libp2p/go-libp2p-record v0.2.0/go.mod h1:I+3zMkvvg5m2OcSdoL0KPljyJyvNDFGKX7QdlpYUcwk= +github.com/libp2p/go-libp2p-secio v0.2.2 h1:rLLPvShPQAcY6eNurKNZq3eZjPWfU9kXF2eI9jIYdrg= +github.com/libp2p/go-libp2p-swarm v0.5.0 h1:HIK0z3Eqoo8ugmN8YqWAhD2RORgR+3iNXYG4U2PFd1E= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= +github.com/libp2p/go-libp2p-tls v0.1.3 h1:twKMhMu44jQO+HgQK9X8NHO5HkeJu2QbhLzLJpa8oNM= +github.com/libp2p/go-libp2p-transport-upgrader v0.4.2 h1:4JsnbfJzgZeRS9AWN7B9dPqn/LY/HoQTlO9gtdJTIYM= +github.com/libp2p/go-libp2p-yamux v0.5.4 h1:/UOPtT/6DHPtr3TtKXBHa6g0Le0szYuI33Xc/Xpd7fQ= +github.com/libp2p/go-maddr-filter v0.1.0 h1:4ACqZKw8AqiuJfwFGq1CYDFugfXTOos+qQ3DETkhtCE= github.com/libp2p/go-mplex v0.7.0 h1:BDhFZdlk5tbr0oyFq/xv/NPGfjbnrsDam1EvutpBDbY= -github.com/libp2p/go-msgio v0.2.0 h1:W6shmB+FeynDrUVl2dgFQvzfBZcXiyqY4VmpQLu9FqU= -github.com/libp2p/go-nat v0.1.0 h1:MfVsH6DLcpa04Xr+p8hmVRG4juse0s3J8HyNWYHffXg= -github.com/libp2p/go-netroute v0.2.0 h1:0FpsbsvuSnAhXFnCY0VLFbJOzaK0VnP0r1QT/o4nWRE= +github.com/libp2p/go-mplex v0.7.0/go.mod h1:rW8ThnRcYWft/Jb2jeORBmPd6xuG3dGxWN/W168L9EU= +github.com/libp2p/go-msgio v0.2.0/go.mod h1:dBVM1gW3Jk9XqHkU4eKdGvVHdLa51hoGfll6jMJMSlY= +github.com/libp2p/go-nat v0.1.0/go.mod h1:X7teVkwRHNInVNWQiO/tAiAVRwSr5zoRz4YSTC3uRBM= +github.com/libp2p/go-netroute v0.2.0/go.mod h1:Vio7LTzZ+6hoT4CMZi5/6CpY3Snzh2vgZhWgxMNwlQI= github.com/libp2p/go-reuseport v0.2.0 h1:18PRvIMlpY6ZK85nIAicSBuXXvrYoSw3dsBAR7zc560= +github.com/libp2p/go-reuseport v0.2.0/go.mod h1:bvVho6eLMm6Bz5hmU0LYN3ixd3nPPvtIlaURZZgOY4k= +github.com/libp2p/go-reuseport-transport v0.0.4 h1:OZGz0RB620QDGpv300n1zaOcKGGAoGVf8h9txtt/1uM= +github.com/libp2p/go-sockaddr v0.1.1 h1:yD80l2ZOdGksnOyHrhxDdTDFrf7Oy+v3FMVArIRgZxQ= +github.com/libp2p/go-stream-muxer v0.0.1 h1:Ce6e2Pyu+b5MC1k3eeFtAax0pW4gc6MosYSLV05UeLw= +github.com/libp2p/go-stream-muxer-multistream v0.3.0 h1:TqnSHPJEIqDEO7h1wZZ0p3DXdvDSiLHQidKKUGZtiOY= +github.com/libp2p/go-tcp-transport v0.2.3 h1:Esfw8dbK3zwdZItnIJGmOOg1YGDYja4eOmJcoDx29uU= +github.com/libp2p/go-ws-transport v0.4.0 h1:9tvtQ9xbws6cA5LvqdE6Ne3vcmGB4f1z9SByggk4s0k= +github.com/libp2p/go-yamux v1.4.1 h1:P1Fe9vF4th5JOxxgQvfbOHkrGqIZniTLf+ddhZp8YTI= +github.com/libp2p/go-yamux/v2 v2.2.0 h1:RwtpYZ2/wVviZ5+3pjC8qdQ4TKnrak0/E01N1UWoAFU= +github.com/libp2p/go-yamux/v3 v3.1.2 h1:lNEy28MBk1HavUAlzKgShp+F6mn/ea1nDYWftZhFW9Q= github.com/libp2p/go-yamux/v4 v4.0.0 h1:+Y80dV2Yx/kv7Y7JKu0LECyVdMXm1VUoko+VQ9rBfZQ= +github.com/libp2p/go-yamux/v4 v4.0.0/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/libp2p/zeroconf/v2 v2.2.0 h1:Cup06Jv6u81HLhIj1KasuNM/RHHrJ8T7wOTS4+Tv53Q= +github.com/libp2p/zeroconf/v2 v2.2.0/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= +github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= github.com/lucas-clemente/quic-go v0.29.1 h1:Z+WMJ++qMLhvpFkRZA+jl3BTxUjm415YBmWanXB8zP0= +github.com/lucas-clemente/quic-go v0.29.1/go.mod h1:CTcNfLYJS2UuRNB+zcNlgvkjBhxX6Hm3WUxxAQx2mgE= +github.com/lunixbochs/vtclean v1.0.0 h1:xu2sLAri4lGiovBDQKxl5mrXyESr3gUr5m5SM5+LVb8= +github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe h1:W/GaMY0y69G4cFlmsC6B9sbuo2fP8OFP1ABjt4kPz+w= github.com/marten-seemann/qpack v0.2.1 h1:jvTsT/HpCn2UZJdP+UUB53FfUUgeOyG5K1ns0OJOGVs= +github.com/marten-seemann/qtls v0.10.0 h1:ECsuYUKalRL240rRD4Ri33ISb7kAQ3qGDlrrl55b2pc= +github.com/marten-seemann/qtls-go1-15 v0.1.1 h1:LIH6K34bPVttyXnUWixk0bzH6/N07VxbSabxn5A5gZQ= +github.com/marten-seemann/qtls-go1-16 v0.1.5 h1:o9JrYPPco/Nukd/HpOHMHZoBDXQqoNtUCmny98/1uqQ= +github.com/marten-seemann/qtls-go1-17 v0.1.2 h1:JADBlm0LYiVbuSySCHeY863dNkcpMmDR7s0bLKJeYlQ= github.com/marten-seemann/qtls-go1-18 v0.1.2 h1:JH6jmzbduz0ITVQ7ShevK10Av5+jBEKAHMntXmIV7kM= +github.com/marten-seemann/qtls-go1-18 v0.1.2/go.mod h1:mJttiymBAByA49mhlNZZGrH5u1uXYZJ+RW28Py7f4m4= github.com/marten-seemann/qtls-go1-19 v0.1.0 h1:rLFKD/9mp/uq1SYGYuVZhm83wkmU95pK5df3GufyYYU= +github.com/marten-seemann/qtls-go1-19 v0.1.0/go.mod h1:5HTDWtVudo/WFsHKRNuOhWlbdjrfs5JHrYb0wIJqGpI= github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= github.com/marten-seemann/webtransport-go v0.1.1 h1:TnyKp3pEXcDooTaNn4s9dYpMJ7kMnTp7k5h+SgYP/mc= -github.com/miekg/dns v1.1.50 h1:DQUfb9uc6smULcREF09Uc+/Gd46YWqJd5DbpPE9xkcA= +github.com/marten-seemann/webtransport-go v0.1.1/go.mod h1:kBEh5+RSvOA4troP1vyOVBWK4MIMzDICXVrvCPrYcrM= +github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg= +github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= +github.com/microcosm-cc/bluemonday v1.0.1 h1:SIYunPjnlXcW+gVfvm0IlSeR5U3WZUOLfVmqg85Go44= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= -github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= -github.com/multiformats/go-multistream v0.3.3 h1:d5PZpjwRgVlbwfdTDjife7XszfZd8KYWfROYFlGcR8o= +github.com/multiformats/go-base32 v0.0.4/go.mod h1:jNLFzjPZtp3aIARHbJRZIaPuspdH0J6q39uUM5pnABM= +github.com/multiformats/go-multiaddr v0.6.0/go.mod h1:F4IpaKZuPP360tOMn2Tpyu0At8w23aRyVqeK0DbFeGM= +github.com/multiformats/go-multiaddr-net v0.2.0 h1:MSXRGN0mFymt6B1yo/6BPnIRpLPEnKgQNvVfCX5VDJk= +github.com/multiformats/go-multicodec v0.5.0/go.mod h1:DiY2HFaEp5EhEXb/iYzVAunmyX/aSFMxq2KMKfWEues= +github.com/multiformats/go-multihash v0.2.0/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= +github.com/multiformats/go-multistream v0.3.3/go.mod h1:ODRoqamLUsETKS9BNcII4gcRsJBU5VAwRIv7O39cEXg= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= +github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= +github.com/nats-io/nats.go v1.9.1 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= +github.com/nats-io/nkeys v0.1.3 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86 h1:D6paGObi5Wud7xg83MaEFyjxQB1W5bz5d0IFppr+ymk= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab h1:eFXv9Nu1lGbrNbj619aWwZfVF5HBrm9Plte8aNptuTI= 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 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78= 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.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/opencontainers/runtime-spec v1.0.2 h1:UfAcuLBJB9Coz72x1hgl8O5RVzTdNiaglX6v2DM6FI0= +github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= +github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= +github.com/openzipkin/zipkin-go v0.2.2 h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI= +github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= +github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= +github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af h1:gu+uRPtBe88sKxUCEXRoeCvVG90TJmwhiqRpvdhQFng= github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4 h1:Fth6mevc5rX7glNLpbAMJnqKlfIkcTjZCSHEeqvKbcI= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48 h1:vabduItPAIz9px5iryD5peyx7O3Ya8TBThapgXim98o= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470 h1:qb9IthCFBmROJ6YBS31BEMeSYjOscSiG+EO+JVNTz64= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e h1:MZM7FHLqUHYI0Y/mQAt3d2aYa0SiNms/hFqC9qJYolM= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041 h1:llrF3Fs4018ePo4+G/HV/uQUqEI1HMDjCeOf2V6puPc= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d h1:Yoy/IzG4lULT6qZg62sVC+qyBL8DQkmD2zv6i7OImrc= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c h1:UOk+nlt1BJtTcH15CT7iNO7YVWTfTv/DNwEAQHLIaDQ= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b h1:vYEG87HxbU6dXj5npkeulCS96Dtz5xg3jcfCgpcvbIw= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20 h1:7pDq9pAMCQgRohFmd25X8hIH8VxmT3TaDm+r9LHxgBk= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9 h1:MPblCbqA5+z6XARjScMfz1TqtJC7TuTRj0U9VqIBs6k= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50 h1:crYRwvwjdVh1biHzzciFHe8DrZcYrVcZFlJtykhRctg= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc h1:eHRtZoIi6n9Wo1uR+RU44C247msLWwyA89hVKwRLkMk= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371 h1:SWV2fHctRpRrp49VXJ6UZja7gU9QLHwRpIPBN89SKEo= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9 h1:fxoFD0in0/CBzXoyNhMTjvBZYW6ilSnTw7N7y/8vkmM= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191 h1:T4wuULTrzCKMFlg3HmKHgXAF8oStFb/+lOIupLV2v+o= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241 h1:Y+TeIabU8sJD10Qwd/zMty2/LEaT9GNDaA6nyZf+jgo= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122 h1:TQVQrsyNaimGwF7bIhzoVC9QkKm4KsWd8cECGzFx8gI= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2 h1:bu666BQci+y4S0tVRVjsHUeRon6vUXmsGBwdowgMrg4= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82 h1:LneqU9PHDsg/AkPDU3AkqMxnMYL+imaqkpflHu73us8= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537 h1:YGaxtkYjb8mnTvtufv2LKLwCQu2/C7qFB7UtrOlTWOY= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133 h1:JtcyT0rk/9PKOdnKQzuDR+FSjh7SGtJwpgVpfZBRKlQ= github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/smola/gocompat v0.2.0 h1:6b1oIMlUXIpz//VKEDzPVBK8KG7beVwmHIUEBIs/Pns= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= +github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d h1:yKm7XZV6j9Ev6lojP2XaIshpT4ymkqhMeSghO5Ps00E= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e h1:qpG93cPwA5f7s/ZPBJnGOYQNK/vKsaDaseuKT5Asee8= +github.com/spacemonkeygo/openssl v0.0.0-20181017203307-c2dcc5cca94a h1:/eS3yfGjQKG+9kayBkj0ip1BGhq6zJ3eaVksphxAaek= github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= github.com/spf13/viper v1.3.2 h1:VUFqw5KcqRf7i70GOzW7N+Q7+gxVBkSSqiXB12+JQ4M= +github.com/src-d/envconfig v1.0.0 h1:/AJi6DtjFhZKNx3OB2qMsq7y4yT5//AeSZIe7rk+PX8= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/testify v1.7.3/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/syndtr/goleveldb v1.0.0 h1:fBdIW9lB4Iz0n9khmH8w27SJ3QEJ7+IgjPEwGSZiFdE= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07 h1:UyzmZLoiDWMRywV4DUYb9Fbt8uiOSooupjTq10vpvnU= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8 h1:3SVOIvH7Ae1KRYyQWRjXWJEA9sS/c/pjvH++55Gr648= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.10 h1:p8Fspmz3iTctJstry1PYS3HVdllxnEzTEsgIgtxTrCk= +github.com/viant/assertly v0.4.8 h1:5x1GzBaRteIwTr5RAGFVG14uNeRFxVNbXPWrK2qAgpc= +github.com/viant/toolbox v0.24.0 h1:6TteTDQ68CjgcCe8wH3D3ZhUQQOJXMTbj/D9rkk2a1k= +github.com/warpfork/go-testmark v0.10.0/go.mod h1:jhEf8FVxd+F17juRubpmut64NEG6I2rgkUhlcqqXwE0= +github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 h1:EKhdznlJHPMoKr0XTrX+IlJs1LH3lyx2nfr1dOlZ79k= +github.com/whyrusleeping/go-logging v0.0.1 h1:fwpzlmT0kRC/Fmd0MdmGgJG/CXIZ6gFq46FQZjprUcc= +github.com/whyrusleeping/mafmt v1.2.8 h1:TCghSl5kkwEE0j+sU/gudyhVMRlpBin8fMBBHg59EbA= +github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9 h1:Y1/FEOpaCpD21WxrmfeIYCFPuVPRCY2XZTWzTNHGw30= +github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 h1:E9S12nwJwEOXe2d6gT6qxdvqMnNq+VnSsKPgm2ZZNds= +github.com/x-cray/logrus-prefixed-formatter v0.5.2 h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= +go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= +go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U= +go4.org v0.0.0-20180809161055-417644f6feb5 h1:+hE86LblG4AyDgwMCLTE6FOlM9+qjHSYS+rKqxUVdsM= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d h1:E2M5QgjZ/Jg+ObCQAudsXxuTsLj7Nl5RV/lZcQZmKSo= golang.org/x/exp v0.0.0-20220916125017-b168a2c6b86b h1:SCE/18RnFsLrjydh/R/s5EVvHoZprqEQUuoxK8q2Pc4= +golang.org/x/exp v0.0.0-20220916125017-b168a2c6b86b/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220812174116-3211cb980234/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b h1:clP8eMhB30EHdc0bd2Twtq6kgU7yl5ub2cQLSdrv1Dg= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852 h1:xYq6+9AtI+xP3M4r0N1hCkHrInHDBohhquRgx9Kk6gI= +golang.org/x/sys v0.0.0-20180810173357-98c5dad5d1a0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/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/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= +golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= google.golang.org/api v0.30.0 h1:yfrXXP61wVuLb0vBcG6qaOoIoqYEzOQS8jum51jkv2w= google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987 h1:PDIOdWxZ8eRizhKa1AAvY53xsvLB1cWorMjslvY3VA8= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/src-d/go-cli.v0 v0.0.0-20181105080154-d492247bbc0d h1:mXa4inJUuWOoA4uEROxtJ3VMELMlVkIxIfcR0HBekAM= +gopkg.in/src-d/go-log.v1 v1.0.1 h1:heWvX7J6qbGWbeFS/aRmiy1eYaT+QMV6wNvHDyMjQV4= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919 h1:tmXTu+dfa+d9Evp8NpJdgOy6+rt8/x4yG7qPBrtNfLY= honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= +sourcegraph.com/sourcegraph/go-diff v0.5.0 h1:eTiIR0CoWjGzJcnQ3OkhIl/b9GJovq4lSAVRt0ZFEG8= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4 h1:JPJh2pk3+X4lXAkZIk2RuE/7/FoK9maXw+TNPJhVS/c= diff --git a/service/file/blockservice.go b/service/file/blockservice.go deleted file mode 100644 index b231b8a7..00000000 --- a/service/file/blockservice.go +++ /dev/null @@ -1,57 +0,0 @@ -package file - -import ( - "context" - blocks "github.com/ipfs/go-block-format" - "github.com/ipfs/go-cid" - blockstore "github.com/ipfs/go-ipfs-blockstore" - exchange "github.com/ipfs/go-ipfs-exchange-interface" -) - -// client get: local -> remote -// client put: local -> remote -// client delete: local -> remote -// client clear: local -// -// node get: ds -// node put: valid -> ds -// node delete: valid -> ds -type ipfsBlockService struct{} - -func (bs *ipfsBlockService) GetBlock(ctx context.Context, c cid.Cid) (blocks.Block, error) { - //TODO implement me - panic("implement me") -} - -func (bs *ipfsBlockService) GetBlocks(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { - //TODO implement me - panic("implement me") -} - -func (bs *ipfsBlockService) Blockstore() blockstore.Blockstore { - return nil -} - -func (bs *ipfsBlockService) Exchange() exchange.Interface { - return nil -} - -func (bs *ipfsBlockService) AddBlock(ctx context.Context, o blocks.Block) error { - //TODO implement me - panic("implement me") -} - -func (bs *ipfsBlockService) AddBlocks(ctx context.Context, blocks []blocks.Block) error { - //TODO implement me - panic("implement me") -} - -func (bs *ipfsBlockService) DeleteBlock(ctx context.Context, o cid.Cid) error { - //TODO implement me - panic("implement me") -} - -func (bs *ipfsBlockService) Close() error { - //TODO implement me - panic("implement me") -} diff --git a/service/file/filesync/protos/filesync.proto b/service/file/filesync/protos/filesync.proto deleted file mode 100644 index f081b332..00000000 --- a/service/file/filesync/protos/filesync.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; -package anytype; -option go_package = "service/space/spacesync"; - -message BlockSync { - string spaceId = 1; - repeated bytes cids = 2; - repeated bytes data = 3; -} - -message Msg { - -} - -service File { - rpc GetCID(Msg) returns (Msg); - rpc PushCID(Msg) returns (Msg); -} - diff --git a/service/file/pogrebds/pogreb.go b/service/file/pogrebds/pogreb.go deleted file mode 100644 index 7965800e..00000000 --- a/service/file/pogrebds/pogreb.go +++ /dev/null @@ -1,73 +0,0 @@ -package pogrebds - -import ( - "context" - "fmt" - "github.com/akrylysov/pogreb" - "github.com/ipfs/go-datastore" - "github.com/ipfs/go-datastore/query" -) - -var _ datastore.Datastore = (*Datastore)(nil) -var _ datastore.PersistentDatastore = (*Datastore)(nil) - -// NewDatastore creates a new pogreb datastore. -func NewDatastore(path string, options *pogreb.Options) (d *Datastore, err error) { - d = &Datastore{} - if d.db, err = pogreb.Open(path, options); err != nil { - return nil, err - } - return -} - -type Datastore struct { - db *pogreb.DB -} - -func (d *Datastore) Get(_ context.Context, key datastore.Key) (value []byte, err error) { - return d.db.Get(key.Bytes()) -} - -func (d *Datastore) Has(ctx context.Context, key datastore.Key) (exists bool, err error) { - return d.db.Has(key.Bytes()) -} - -func (d *Datastore) GetSize(ctx context.Context, key datastore.Key) (size int, err error) { - val, err := d.Get(ctx, key) - if err != nil { - return - } - return len(val), err -} - -func (d *Datastore) Query(ctx context.Context, q query.Query) (query.Results, error) { - return nil, fmt.Errorf("pogrebds datastore doesn't support queries") -} - -func (d *Datastore) Put(_ context.Context, key datastore.Key, value []byte) error { - return d.db.Put(key.Bytes(), value) -} - -func (d *Datastore) Delete(_ context.Context, key datastore.Key) error { - return d.db.Delete(key.Bytes()) -} - -func (d *Datastore) Sync(ctx context.Context, prefix datastore.Key) error { - return d.db.Sync() -} - -func (d *Datastore) DiskUsage(ctx context.Context) (uint64, error) { - size, err := d.db.FileSize() - if err != nil { - return 0, err - } - return uint64(size), nil -} - -func (d *Datastore) Close() error { - return d.db.Close() -} - -func (d *Datastore) Metrics() *pogreb.Metrics { - return d.db.Metrics() -} diff --git a/service/file/service.go b/service/file/service.go deleted file mode 100644 index c295a1db..00000000 --- a/service/file/service.go +++ /dev/null @@ -1,251 +0,0 @@ -package file - -import ( - "bytes" - "context" - "errors" - "fmt" - "github.com/akrylysov/pogreb" - "github.com/anytypeio/go-anytype-infrastructure-experiments/app" - "github.com/anytypeio/go-anytype-infrastructure-experiments/app/logger" - "github.com/anytypeio/go-anytype-infrastructure-experiments/service/configuration" - "github.com/anytypeio/go-anytype-infrastructure-experiments/service/file/pogrebds" - "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool" - "github.com/anytypeio/go-anytype-infrastructure-experiments/service/net/pool/handler" - "github.com/anytypeio/go-anytype-infrastructure-experiments/syncproto" - "github.com/gogo/protobuf/proto" - blocks "github.com/ipfs/go-block-format" - "github.com/ipfs/go-blockservice" - "github.com/ipfs/go-cid" - "github.com/ipfs/go-datastore" - "github.com/ipfs/go-datastore/mount" - "github.com/ipfs/go-ipfs-blockstore" - chunker "github.com/ipfs/go-ipfs-chunker" - exchange "github.com/ipfs/go-ipfs-exchange-interface" - ipld "github.com/ipfs/go-ipld-format" - "github.com/ipfs/go-merkledag" - "github.com/ipfs/go-unixfs/importer/balanced" - "github.com/ipfs/go-unixfs/importer/helpers" - "github.com/ipfs/go-unixfs/importer/trickle" - ufsio "github.com/ipfs/go-unixfs/io" - "github.com/multiformats/go-multihash" - "go.uber.org/zap" - "io" - "math/rand" - "strings" - "sync/atomic" - "time" -) - -var log = logger.NewNamed("file") - -const CName = "file" - -func New() Service { - return &service{} -} - -type Service interface { - app.ComponentRunnable -} - -type service struct { - pool pool.Pool - conf configuration.Service - - blockstore blockstore.Blockstore - blocservice blockservice.BlockService - exch exchange.Interface - merkledag ipld.DAGService -} - -func (s *service) Init(ctx context.Context, a *app.App) (err error) { - - s.pool = a.MustComponent(pool.CName).(pool.Pool) - s.conf = a.MustComponent(configuration.CName).(configuration.Service) - ds, err := pogrebds.NewDatastore("/home/che/pogreb", &pogreb.Options{ - BackgroundSyncInterval: time.Minute, - }) - if err != nil { - return - } - mds := mount.New([]mount.Mount{ - { - Prefix: datastore.NewKey("/blocks"), - Datastore: ds, - }, - }) - - s.blockstore = blockstore.NewBlockstore(mds) - s.exch = &exch{s} - s.blocservice = blockservice.New(s.blockstore, s.exch) - s.merkledag = merkledag.NewDAGService(s.blocservice) - return -} - -func (s *service) Name() (name string) { - return CName -} - -func (s *service) Run(ctx context.Context) (err error) { - s.pool.AddHandler(syncproto.MessageType_MessageTypeFile, handler.Reply{ReplyHandler: s}.Handle) - var addCount int64 - for i := 0; i < 8; i++ { - go func() { - ctx = context.Background() - var bufbuf = make([]byte, 10*1024) - for { - buf := bufbuf[:rand.Intn(4*1024)+1024] - rand.Read(buf) - bb := bytes.NewBuffer(buf) - n, e := s.AddFile(ctx, bb, nil) - if e != nil { - log.Error("AddFile error", zap.Error(e)) - } - s.GetFile(ctx, n.Cid()) - atomic.AddInt64(&addCount, 1) - } - }() - } - go func() { - var prev int64 - for { - time.Sleep(time.Second) - v := atomic.LoadInt64(&addCount) - fmt.Println("add", v-prev) - prev = v - } - }() - return nil -} - -func (s *service) GetBlock(ctx context.Context, k cid.Cid) (blocks.Block, error) { - blk, err := s.blockstore.Get(ctx, k) - if ipld.IsNotFound(err) { - return s.loadBlock(ctx, k) - } - return blk, err -} - -func (s *service) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { - n, err := s.merkledag.Get(ctx, c) - if err != nil { - return nil, err - } - return ufsio.NewDagReader(ctx, n, s.merkledag) -} - -// AddParams contains all of the configurable parameters needed to specify the -// importing process of a file. -type AddParams struct { - Layout string - Chunker string - RawLeaves bool - Hidden bool - Shard bool - NoCopy bool - HashFun string -} - -// AddFile chunks and adds content to the DAGService from a reader. The content -// is stored as a UnixFS DAG (default for IPFS). It returns the root -// ipld.Node. -func (s *service) AddFile(ctx context.Context, r io.Reader, params *AddParams) (ipld.Node, error) { - if params == nil { - params = &AddParams{} - } - if params.HashFun == "" { - params.HashFun = "sha2-256" - } - - prefix, err := merkledag.PrefixForCidVersion(1) - if err != nil { - return nil, fmt.Errorf("bad CID Version: %s", err) - } - - hashFunCode, ok := multihash.Names[strings.ToLower(params.HashFun)] - if !ok { - return nil, fmt.Errorf("unrecognized hash function: %s", params.HashFun) - } - prefix.MhType = hashFunCode - prefix.MhLength = -1 - - dbp := helpers.DagBuilderParams{ - Dagserv: s.merkledag, - RawLeaves: params.RawLeaves, - Maxlinks: helpers.DefaultLinksPerBlock, - NoCopy: params.NoCopy, - CidBuilder: &prefix, - } - - chnk, err := chunker.FromString(r, params.Chunker) - if err != nil { - return nil, err - } - dbh, err := dbp.New(chnk) - if err != nil { - return nil, err - } - - var n ipld.Node - switch params.Layout { - case "trickle": - n, err = trickle.Layout(dbh) - case "balanced", "": - n, err = balanced.Layout(dbh) - default: - return nil, errors.New("invalid Layout") - } - return n, err -} - -func (s *service) GetBlocks(ctx context.Context, ks []cid.Cid) (<-chan blocks.Block, error) { - log.Info("GetBlocks") - out := make(chan blocks.Block) - go func() { - // TODO: make queue - defer close(out) - for _, k := range ks { - hit, err := s.GetBlock(ctx, k) - if err != nil { - select { - case <-ctx.Done(): - return - default: - continue - } - } - select { - case out <- hit: - case <-ctx.Done(): - return - } - } - }() - return out, nil -} - -func (s *service) NotifyNewBlocks(ctx context.Context, blocks ...blocks.Block) error { - return nil -} - -func (s *service) Handle(ctx context.Context, req []byte) (rep proto.Marshaler, err error) { - return nil, fmt.Errorf("not implemented") -} - -func (s *service) Close(ctx context.Context) (err error) { - return nil -} - -func (s *service) loadBlock(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { - log.Info("load block", zap.String("cid", k.String())) - return nil, fmt.Errorf("unable to load") -} - -type exch struct { - *service -} - -func (e *exch) Close() error { - return nil -} From 8a19ea8dcbe7680a012e87a6ffdf8feaf95f94c7 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Wed, 14 Dec 2022 19:14:47 +0300 Subject: [PATCH 06/10] file to client --- client/Makefile | 2 +- client/cmd/client.go | 4 + .../filebadgerstore/filebadgerstore.go | 88 +++++++++++++++++++ client/filestorage/filestorage.go | 49 +++++++++++ .../fileblockstore/cachestore/cachestore.go | 30 ++++--- .../fileblockstore/fileblockstore.go | 5 ++ common/commonfile/fileproto/file.pb.go | 78 ++++++++-------- common/commonfile/fileproto/file_drpc.pb.go | 16 ++-- common/commonfile/fileproto/protos/file.proto | 2 +- common/commonfile/fileservice/blockservice.go | 2 +- common/commonfile/fileservice/fileservice.go | 55 +++++++++++- common/commonfile/fileservice/provider.go | 76 ---------------- common/config/config.go | 23 +++-- etc/configs/1.yml | 32 ------- etc/configs/2.yml | 32 ------- etc/configs/3.yml | 32 ------- etc/configs/4.yml | 32 ------- etc/configs/client1.yml | 33 ++++--- etc/configs/client2.yml | 33 ++++--- etc/configs/cons1.yml | 8 +- etc/configs/cons2.yml | 8 +- etc/configs/cons3.yml | 8 +- etc/configs/node1.yml | 33 ++++--- etc/configs/node2.yml | 33 ++++--- etc/configs/node3.yml | 33 ++++--- filenode/cmd/filenode.go | 2 +- node/cmd/node.go | 4 + {filenode => node}/filepogreb/filepogreb.go | 0 util/cmd/nodesgen/gen.go | 19 ++-- 29 files changed, 385 insertions(+), 387 deletions(-) create mode 100644 client/filestorage/filebadgerstore/filebadgerstore.go create mode 100644 client/filestorage/filestorage.go delete mode 100644 common/commonfile/fileservice/provider.go delete mode 100755 etc/configs/1.yml delete mode 100755 etc/configs/2.yml delete mode 100755 etc/configs/3.yml delete mode 100755 etc/configs/4.yml rename {filenode => node}/filepogreb/filepogreb.go (100%) diff --git a/client/Makefile b/client/Makefile index c7b9e16f..2c12bf1f 100644 --- a/client/Makefile +++ b/client/Makefile @@ -7,7 +7,7 @@ proto: build: @$(eval FLAGS := $$(shell govvv -flags -pkg github.com/anytypeio/go-anytype-infrastructure-experiments/client)) - go build -v -o ../bin/cient -ldflags "$(FLAGS)" github.com/anytypeio/go-anytype-infrastructure-experiments/client/cmd + go build -v -o ../bin/client -ldflags "$(FLAGS)" github.com/anytypeio/go-anytype-infrastructure-experiments/client/cmd test: go test ./... --cover diff --git a/client/cmd/client.go b/client/cmd/client.go index b3698842..437fc998 100644 --- a/client/cmd/client.go +++ b/client/cmd/client.go @@ -10,9 +10,11 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace/clientcache" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/document" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/rpcstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/metric" @@ -108,5 +110,7 @@ func Bootstrap(a *app.App) { Register(clientspace.New()). Register(server.New()). Register(document.New()). + Register(rpcstore.New()). + Register(filestorage.New()). Register(api.New()) } diff --git a/client/filestorage/filebadgerstore/filebadgerstore.go b/client/filestorage/filebadgerstore/filebadgerstore.go new file mode 100644 index 00000000..d0044eee --- /dev/null +++ b/client/filestorage/filebadgerstore/filebadgerstore.go @@ -0,0 +1,88 @@ +package filebadgerstore + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + "github.com/dgraph-io/badger/v3" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" +) + +const keyPrefix = "files/blocks/" + +func NewBadgerStorage(db *badger.DB) fileblockstore.BlockStoreExistsCIDs { + return &badgerStorage{db: db} +} + +type badgerStorage struct { + db *badger.DB +} + +func (f *badgerStorage) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { + err = f.db.View(func(txn *badger.Txn) error { + it, gerr := txn.Get(key(k)) + if gerr != nil { + return gerr + } + return it.Value(func(val []byte) error { + b = blocks.NewBlock(val) + return nil + }) + }) + return +} + +func (f *badgerStorage) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + var res = make(chan blocks.Block) + go func() { + defer close(res) + _ = f.db.View(func(txn *badger.Txn) error { + // TODO: log errors + for _, k := range ks { + it, gerr := txn.Get(key(k)) + if gerr != nil { + return gerr + } + _ = it.Value(func(val []byte) error { + res <- blocks.NewBlock(val) + return nil + }) + } + return nil + }) + }() + return res +} + +func (f *badgerStorage) Add(ctx context.Context, bs []blocks.Block) error { + return f.db.Update(func(txn *badger.Txn) error { + for _, b := range bs { + if err := txn.Set(key(b.Cid()), b.RawData()); err != nil { + return err + } + } + return nil + }) +} + +func (f *badgerStorage) Delete(ctx context.Context, c cid.Cid) error { + return f.db.Update(func(txn *badger.Txn) error { + return txn.Delete(key(c)) + }) +} + +func (f *badgerStorage) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) { + err = f.db.View(func(txn *badger.Txn) error { + for _, k := range ks { + if _, e := txn.Get(key(k)); e == nil { + exists = append(exists, k) + } + } + return nil + }) + return +} + +func key(c cid.Cid) []byte { + return []byte(keyPrefix + c.String()) +} diff --git a/client/filestorage/filestorage.go b/client/filestorage/filestorage.go new file mode 100644 index 00000000..1714e8d1 --- /dev/null +++ b/client/filestorage/filestorage.go @@ -0,0 +1,49 @@ +package filestorage + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/badgerprovider" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/filebadgerstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore/cachestore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/rpcstore" + "io" +) + +const CName = fileblockstore.CName + +func New() FileStorage { + return &fileStorage{} +} + +type FileStorage interface { + app.ComponentRunnable + fileblockstore.BlockStore +} + +type fileStorage struct { + fileblockstore.BlockStore +} + +func (f *fileStorage) Init(a *app.App) (err error) { + db := a.MustComponent(badgerprovider.CName).(badgerprovider.BadgerProvider).Badger() + bs := filebadgerstore.NewBadgerStorage(db) + f.BlockStore = &cachestore.CacheStore{ + Cache: bs, + Origin: a.MustComponent(rpcstore.CName).(rpcstore.Service).NewStore(), + } + return +} + +func (f *fileStorage) Name() (name string) { + return CName +} + +func (f *fileStorage) Run(ctx context.Context) (err error) { + return +} + +func (f *fileStorage) Close(ctx context.Context) (err error) { + return f.BlockStore.(io.Closer).Close() +} diff --git a/common/commonfile/fileblockstore/cachestore/cachestore.go b/common/commonfile/fileblockstore/cachestore/cachestore.go index 77609462..a7592291 100644 --- a/common/commonfile/fileblockstore/cachestore/cachestore.go +++ b/common/commonfile/fileblockstore/cachestore/cachestore.go @@ -7,16 +7,13 @@ import ( "github.com/ipfs/go-cid" format "github.com/ipfs/go-ipld-format" "go.uber.org/zap" + "io" ) -type IPFSStoreExistsCIDs interface { - fileblockstore.BlockStore - ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) -} - type CacheStore struct { - Cache IPFSStoreExistsCIDs + Cache fileblockstore.BlockStoreExistsCIDs Origin fileblockstore.BlockStore + Log *zap.Logger } func (c *CacheStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { @@ -33,7 +30,7 @@ func (c *CacheStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err er return } if addErr := c.Cache.Add(ctx, []blocks.Block{b}); addErr != nil { - fileblockstore.log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) + c.Log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) } return } @@ -42,7 +39,7 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl cachedCids, localErr := c.Cache.ExistsCids(ctx, ks) var originCids []cid.Cid if localErr != nil { - fileblockstore.log.Error("hasCIDs error", zap.Error(localErr)) + c.Log.Error("hasCIDs error", zap.Error(localErr)) originCids = ks } else { if len(cachedCids) != len(ks) { @@ -80,7 +77,7 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl case ob, oOk = <-originResults: if oOk { if addErr := c.Cache.Add(ctx, []blocks.Block{ob}); addErr != nil { - fileblockstore.log.Error("add block to cache error", zap.Error(addErr)) + c.Log.Error("add block to cache error", zap.Error(addErr)) } results <- ob } @@ -98,7 +95,7 @@ func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { if localErr := c.Cache.Add(ctx, b); localErr != nil { - fileblockstore.log.Error("cache add error", zap.Error(localErr)) + c.Log.Error("cache add error", zap.Error(localErr)) } return c.Origin.Add(ctx, b) } @@ -106,15 +103,20 @@ func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { func (c *CacheStore) Delete(ctx context.Context, k cid.Cid) error { if localErr := c.Cache.Delete(ctx, k); localErr != nil { if !format.IsNotFound(localErr) { - fileblockstore.log.Error("error while delete block", zap.Error(localErr)) + c.Log.Error("error while delete block", zap.Error(localErr)) } } return c.Origin.Delete(ctx, k) } func (c *CacheStore) Close() (err error) { - if localErr := c.Cache.Close(); localErr != nil { - fileblockstore.log.Error("error while closing cache store", zap.Error(localErr)) + if closer, ok := c.Cache.(io.Closer); ok { + if localErr := closer.Close(); localErr != nil { + c.Log.Error("error while closing cache store", zap.Error(localErr)) + } } - return c.Origin.Close() + if closer, ok := c.Origin.(io.Closer); ok { + return closer.Close() + } + return nil } diff --git a/common/commonfile/fileblockstore/fileblockstore.go b/common/commonfile/fileblockstore/fileblockstore.go index bbaef490..4d29e582 100644 --- a/common/commonfile/fileblockstore/fileblockstore.go +++ b/common/commonfile/fileblockstore/fileblockstore.go @@ -30,6 +30,11 @@ type BlockStore interface { Delete(ctx context.Context, c cid.Cid) error } +type BlockStoreExistsCIDs interface { + BlockStore + ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) +} + type BlockStoreSpaceIds interface { SpaceIds() []string } diff --git a/common/commonfile/fileproto/file.pb.go b/common/commonfile/fileproto/file.pb.go index e6ad8c39..f5033d39 100644 --- a/common/commonfile/fileproto/file.pb.go +++ b/common/commonfile/fileproto/file.pb.go @@ -133,7 +133,7 @@ func (m *GetBlockRequest) GetCid() []byte { type GetBlockResponse struct { Cid []byte `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"` Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - Code CIDError `protobuf:"varint,3,opt,name=code,proto3,enum=anySpace.CIDError" json:"code,omitempty"` + Code CIDError `protobuf:"varint,3,opt,name=code,proto3,enum=anyFile.CIDError" json:"code,omitempty"` } func (m *GetBlockResponse) Reset() { *m = GetBlockResponse{} } @@ -455,16 +455,16 @@ func (m *CheckResponse) GetSpaceIds() []string { } func init() { - proto.RegisterEnum("anySpace.ErrCodes", ErrCodes_name, ErrCodes_value) - proto.RegisterEnum("anySpace.CIDError", CIDError_name, CIDError_value) - proto.RegisterType((*GetBlockRequest)(nil), "anySpace.GetBlockRequest") - proto.RegisterType((*GetBlockResponse)(nil), "anySpace.GetBlockResponse") - proto.RegisterType((*PushBlockRequest)(nil), "anySpace.PushBlockRequest") - proto.RegisterType((*PushBlockResponse)(nil), "anySpace.PushBlockResponse") - proto.RegisterType((*DeleteBlocksRequest)(nil), "anySpace.DeleteBlocksRequest") - proto.RegisterType((*DeleteBlocksResponse)(nil), "anySpace.DeleteBlocksResponse") - proto.RegisterType((*CheckRequest)(nil), "anySpace.CheckRequest") - proto.RegisterType((*CheckResponse)(nil), "anySpace.CheckResponse") + proto.RegisterEnum("anyFile.ErrCodes", ErrCodes_name, ErrCodes_value) + proto.RegisterEnum("anyFile.CIDError", CIDError_name, CIDError_value) + proto.RegisterType((*GetBlockRequest)(nil), "anyFile.GetBlockRequest") + proto.RegisterType((*GetBlockResponse)(nil), "anyFile.GetBlockResponse") + proto.RegisterType((*PushBlockRequest)(nil), "anyFile.PushBlockRequest") + proto.RegisterType((*PushBlockResponse)(nil), "anyFile.PushBlockResponse") + proto.RegisterType((*DeleteBlocksRequest)(nil), "anyFile.DeleteBlocksRequest") + proto.RegisterType((*DeleteBlocksResponse)(nil), "anyFile.DeleteBlocksResponse") + proto.RegisterType((*CheckRequest)(nil), "anyFile.CheckRequest") + proto.RegisterType((*CheckResponse)(nil), "anyFile.CheckResponse") } func init() { @@ -474,34 +474,34 @@ func init() { var fileDescriptor_fd665a7e11c833d5 = []byte{ // 456 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xf6, 0xc6, 0x01, 0x92, 0x69, 0x48, 0x97, 0x69, 0x14, 0x8c, 0x11, 0x56, 0xe4, 0x43, 0x65, - 0x15, 0x29, 0x45, 0xe5, 0xc2, 0xa5, 0x07, 0x9a, 0x34, 0x90, 0x03, 0x14, 0x19, 0x71, 0xe1, 0x44, - 0xb0, 0x27, 0x6a, 0xd4, 0xd4, 0x1b, 0xbc, 0x1b, 0x09, 0xde, 0x82, 0x17, 0xe0, 0x7d, 0x7a, 0xec, - 0x91, 0x23, 0x4a, 0x5e, 0x04, 0x65, 0xe3, 0xb5, 0x4d, 0x31, 0x07, 0x7a, 0x59, 0xcf, 0xef, 0x37, - 0xe3, 0xef, 0xdb, 0x85, 0xfd, 0x48, 0x5c, 0x5e, 0x8a, 0x64, 0x3a, 0x9b, 0xd3, 0xe1, 0xe6, 0x58, - 0xa4, 0x42, 0x89, 0x43, 0x7d, 0x4a, 0x1d, 0xe8, 0x6b, 0x1b, 0x1b, 0x93, 0xe4, 0xdb, 0xfb, 0xc5, - 0x24, 0x22, 0xff, 0x18, 0x76, 0x5f, 0x91, 0x3a, 0x99, 0x8b, 0xe8, 0x22, 0xa4, 0x2f, 0x4b, 0x92, - 0x0a, 0x1d, 0xb8, 0x27, 0x37, 0xb9, 0x71, 0xec, 0xb0, 0x1e, 0x0b, 0x9a, 0xa1, 0x71, 0x91, 0x83, - 0x1d, 0xcd, 0x62, 0xa7, 0xd6, 0x63, 0x41, 0x2b, 0xdc, 0x98, 0xfe, 0x27, 0xe0, 0x45, 0xbb, 0x5c, - 0x88, 0x44, 0x92, 0xa9, 0x62, 0x79, 0x15, 0x22, 0xd4, 0xe3, 0x89, 0x9a, 0x64, 0x8d, 0xda, 0xc6, - 0x7d, 0xa8, 0x47, 0x22, 0x26, 0xc7, 0xee, 0xb1, 0xa0, 0x7d, 0x84, 0x7d, 0xb3, 0x51, 0x7f, 0x30, - 0x1e, 0x9e, 0xa6, 0xa9, 0x48, 0x43, 0x9d, 0xf7, 0x43, 0xe0, 0xef, 0x96, 0xf2, 0xfc, 0xb6, 0x1b, - 0xe6, 0xb3, 0xed, 0x62, 0xb6, 0xbf, 0x07, 0x0f, 0x4a, 0x98, 0xdb, 0xb5, 0xfd, 0x97, 0xb0, 0x37, - 0xa4, 0x39, 0x29, 0xd2, 0x61, 0xf9, 0x1f, 0xb3, 0x6c, 0xc3, 0x46, 0x17, 0x3a, 0x7f, 0x42, 0x64, - 0xd0, 0x6d, 0x68, 0x0d, 0xce, 0x29, 0xdf, 0xdf, 0x7f, 0x0a, 0xf7, 0x33, 0x3f, 0xa3, 0xcc, 0x85, - 0x46, 0x86, 0x2a, 0x1d, 0xd6, 0xb3, 0x83, 0x66, 0x98, 0xfb, 0x07, 0xc7, 0xd0, 0x38, 0x4d, 0xd3, - 0x81, 0x88, 0x49, 0x62, 0x1b, 0xe0, 0x43, 0x42, 0x5f, 0x17, 0x14, 0x29, 0x8a, 0xb9, 0x85, 0xbb, - 0xb0, 0x33, 0x18, 0x0f, 0xdf, 0x0a, 0x35, 0x12, 0xcb, 0x24, 0xe6, 0x0c, 0x39, 0xec, 0x68, 0xf2, - 0xce, 0xa6, 0x53, 0x49, 0x8a, 0x5f, 0xb1, 0x83, 0xd7, 0xd0, 0x30, 0x8c, 0x6e, 0xda, 0x8d, 0x7d, - 0x76, 0xc1, 0x2d, 0xec, 0x00, 0x37, 0x7e, 0x09, 0xa3, 0x0b, 0x68, 0xa2, 0xa5, 0x61, 0xb5, 0xa3, - 0x1f, 0x35, 0xa8, 0x8f, 0x66, 0x73, 0xc2, 0x11, 0x34, 0x8d, 0xe8, 0x12, 0x1f, 0x15, 0xca, 0xdd, - 0xb8, 0x48, 0xae, 0x5b, 0x95, 0xda, 0xfe, 0x71, 0xc0, 0x9e, 0x31, 0x1c, 0x42, 0x33, 0x97, 0x01, - 0x4b, 0xc5, 0x37, 0xf5, 0x76, 0x1f, 0x57, 0xe6, 0x32, 0xee, 0xde, 0x40, 0xab, 0x4c, 0x3a, 0x3e, - 0x29, 0x8a, 0x2b, 0xf4, 0x74, 0xbd, 0x7f, 0xa5, 0x33, 0xb8, 0x17, 0x70, 0x47, 0x6b, 0x83, 0xdd, - 0xd2, 0x95, 0x2c, 0x89, 0xe7, 0x3e, 0xfc, 0x2b, 0xbe, 0xed, 0x3c, 0xe9, 0x5f, 0xad, 0x3c, 0x76, - 0xbd, 0xf2, 0xd8, 0xaf, 0x95, 0xc7, 0xbe, 0xaf, 0x3d, 0xeb, 0x7a, 0xed, 0x59, 0x3f, 0xd7, 0x9e, - 0xf5, 0xb1, 0x53, 0xf5, 0x2c, 0x3f, 0xdf, 0xd5, 0x9f, 0xe7, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, - 0x6e, 0xf3, 0x34, 0x71, 0xb5, 0x03, 0x00, 0x00, + 0x10, 0xf6, 0xc6, 0x81, 0x26, 0xd3, 0x90, 0x6e, 0xa7, 0x21, 0x32, 0x16, 0x58, 0x91, 0x25, 0x90, + 0x55, 0xa4, 0x14, 0x15, 0x89, 0x5b, 0x0f, 0x24, 0x69, 0x21, 0x42, 0xa2, 0xc8, 0x12, 0x17, 0x2e, + 0x28, 0xd8, 0x13, 0x35, 0x6a, 0xea, 0x0d, 0x5e, 0x47, 0x82, 0xb7, 0xe0, 0xc2, 0x3b, 0xf5, 0x98, + 0x23, 0x47, 0x94, 0xbc, 0x08, 0xca, 0x66, 0xd7, 0x31, 0x91, 0x39, 0xd0, 0xcb, 0x7a, 0x7e, 0xbf, + 0x19, 0x7f, 0xdf, 0x2e, 0x3c, 0x8b, 0xc4, 0xcd, 0x8d, 0x48, 0xc6, 0x93, 0x29, 0x9d, 0xac, 0x8f, + 0x59, 0x2a, 0x32, 0x71, 0xa2, 0x4e, 0xa9, 0x02, 0x5d, 0x65, 0xe3, 0xde, 0x28, 0xf9, 0x7e, 0x31, + 0x99, 0x92, 0x7f, 0x06, 0x07, 0x6f, 0x28, 0xeb, 0x4d, 0x45, 0x74, 0x1d, 0xd2, 0xd7, 0x39, 0xc9, + 0x0c, 0x1d, 0xd8, 0x93, 0xb3, 0x51, 0x44, 0xc3, 0xd8, 0x61, 0x1d, 0x16, 0xd4, 0x43, 0xe3, 0x22, + 0x07, 0x3b, 0x9a, 0xc4, 0x4e, 0xa5, 0xc3, 0x82, 0x46, 0xb8, 0x36, 0xfd, 0xcf, 0xc0, 0xb7, 0xed, + 0x72, 0x26, 0x12, 0x49, 0xa6, 0x8a, 0xe5, 0x55, 0x88, 0x50, 0x8d, 0x47, 0xd9, 0x48, 0x37, 0x2a, + 0x1b, 0x9f, 0x42, 0x35, 0x12, 0x31, 0x39, 0x76, 0x87, 0x05, 0xcd, 0xd3, 0xc3, 0xae, 0x5e, 0xa8, + 0xdb, 0x1f, 0x0e, 0xce, 0xd3, 0x54, 0xa4, 0xa1, 0x4a, 0xfb, 0x21, 0xf0, 0x0f, 0x73, 0x79, 0x75, + 0xd7, 0x05, 0xf3, 0xd1, 0xf6, 0x76, 0xb4, 0x7f, 0x04, 0x87, 0x05, 0xcc, 0xcd, 0xd6, 0xfe, 0x6b, + 0x38, 0x1a, 0xd0, 0x94, 0x32, 0x52, 0x61, 0xf9, 0x1f, 0xb3, 0x6c, 0x43, 0x46, 0x1b, 0x5a, 0x7f, + 0x43, 0x68, 0xe8, 0x26, 0x34, 0xfa, 0x57, 0x94, 0xef, 0xef, 0x3f, 0x87, 0x07, 0xda, 0xd7, 0x8c, + 0xb9, 0x50, 0xd3, 0xa8, 0xd2, 0x61, 0x1d, 0x3b, 0xa8, 0x87, 0xb9, 0x7f, 0x7c, 0x06, 0xb5, 0xf3, + 0x34, 0xed, 0x8b, 0x98, 0x24, 0x36, 0x01, 0x3e, 0x26, 0xf4, 0x6d, 0x46, 0x51, 0x46, 0x31, 0xb7, + 0xf0, 0x00, 0xf6, 0xfb, 0xc3, 0xc1, 0x7b, 0x91, 0x5d, 0x88, 0x79, 0x12, 0x73, 0x86, 0x1c, 0xf6, + 0x15, 0x79, 0x97, 0xe3, 0xb1, 0xa4, 0x8c, 0xdf, 0xb2, 0xe3, 0xb7, 0x50, 0x33, 0x8c, 0xae, 0xdb, + 0x8d, 0x7d, 0x79, 0xcd, 0x2d, 0x6c, 0x01, 0x37, 0x7e, 0x01, 0xa3, 0x0d, 0x68, 0xa2, 0x85, 0x61, + 0x95, 0xd3, 0x9f, 0x15, 0xa8, 0xae, 0x15, 0xc2, 0x01, 0xd4, 0x8d, 0xe6, 0x12, 0x9d, 0x5c, 0xb8, + 0x9d, 0x6b, 0xe4, 0x3e, 0x2a, 0xc9, 0x6c, 0xfe, 0x37, 0x60, 0x2f, 0x18, 0xf6, 0xa0, 0x9e, 0x8b, + 0x80, 0xdb, 0xda, 0x5d, 0xb1, 0x5d, 0xb7, 0x2c, 0xa5, 0x79, 0x7b, 0x07, 0x8d, 0x22, 0xe1, 0xf8, + 0x38, 0xaf, 0x2d, 0x91, 0xd2, 0x7d, 0xf2, 0x8f, 0xac, 0x06, 0x7b, 0x05, 0xf7, 0x94, 0x2a, 0xf8, + 0x70, 0x7b, 0x17, 0x0b, 0xaa, 0xb9, 0xed, 0xdd, 0xf0, 0xa6, 0xaf, 0xd7, 0xbd, 0x5d, 0x7a, 0x6c, + 0xb1, 0xf4, 0xd8, 0xef, 0xa5, 0xc7, 0x7e, 0xac, 0x3c, 0x6b, 0xb1, 0xf2, 0xac, 0x5f, 0x2b, 0xcf, + 0xfa, 0xd4, 0x2a, 0x7b, 0x8c, 0x5f, 0xee, 0xab, 0xcf, 0xcb, 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, + 0x9e, 0xde, 0xba, 0xd7, 0xab, 0x03, 0x00, 0x00, } func (m *GetBlockRequest) Marshal() (dAtA []byte, err error) { diff --git a/common/commonfile/fileproto/file_drpc.pb.go b/common/commonfile/fileproto/file_drpc.pb.go index 1bc95763..6850e735 100644 --- a/common/commonfile/fileproto/file_drpc.pb.go +++ b/common/commonfile/fileproto/file_drpc.pb.go @@ -57,7 +57,7 @@ func NewDRPCFileClient(cc drpc.Conn) DRPCFileClient { func (c *drpcFileClient) DRPCConn() drpc.Conn { return c.cc } func (c *drpcFileClient) GetBlocks(ctx context.Context) (DRPCFile_GetBlocksClient, error) { - stream, err := c.cc.NewStream(ctx, "/anySpace.File/GetBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) + stream, err := c.cc.NewStream(ctx, "/anyFile.File/GetBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}) if err != nil { return nil, err } @@ -93,7 +93,7 @@ func (x *drpcFile_GetBlocksClient) RecvMsg(m *GetBlockResponse) error { func (c *drpcFileClient) PushBlock(ctx context.Context, in *PushBlockRequest) (*PushBlockResponse, error) { out := new(PushBlockResponse) - err := c.cc.Invoke(ctx, "/anySpace.File/PushBlock", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) + err := c.cc.Invoke(ctx, "/anyFile.File/PushBlock", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) if err != nil { return nil, err } @@ -102,7 +102,7 @@ func (c *drpcFileClient) PushBlock(ctx context.Context, in *PushBlockRequest) (* func (c *drpcFileClient) DeleteBlocks(ctx context.Context, in *DeleteBlocksRequest) (*DeleteBlocksResponse, error) { out := new(DeleteBlocksResponse) - err := c.cc.Invoke(ctx, "/anySpace.File/DeleteBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) + err := c.cc.Invoke(ctx, "/anyFile.File/DeleteBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) if err != nil { return nil, err } @@ -111,7 +111,7 @@ func (c *drpcFileClient) DeleteBlocks(ctx context.Context, in *DeleteBlocksReque func (c *drpcFileClient) Check(ctx context.Context, in *CheckRequest) (*CheckResponse, error) { out := new(CheckResponse) - err := c.cc.Invoke(ctx, "/anySpace.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) + err := c.cc.Invoke(ctx, "/anyFile.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out) if err != nil { return nil, err } @@ -150,7 +150,7 @@ func (DRPCFileDescription) NumMethods() int { return 4 } func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { switch n { case 0: - return "/anySpace.File/GetBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + return "/anyFile.File/GetBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { return nil, srv.(DRPCFileServer). GetBlocks( @@ -158,7 +158,7 @@ func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, ) }, DRPCFileServer.GetBlocks, true case 1: - return "/anySpace.File/PushBlock", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + return "/anyFile.File/PushBlock", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { return srv.(DRPCFileServer). PushBlock( @@ -167,7 +167,7 @@ func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, ) }, DRPCFileServer.PushBlock, true case 2: - return "/anySpace.File/DeleteBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + return "/anyFile.File/DeleteBlocks", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { return srv.(DRPCFileServer). DeleteBlocks( @@ -176,7 +176,7 @@ func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, ) }, DRPCFileServer.DeleteBlocks, true case 3: - return "/anySpace.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, + return "/anyFile.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { return srv.(DRPCFileServer). Check( diff --git a/common/commonfile/fileproto/protos/file.proto b/common/commonfile/fileproto/protos/file.proto index 62dfc5e8..efe195b1 100644 --- a/common/commonfile/fileproto/protos/file.proto +++ b/common/commonfile/fileproto/protos/file.proto @@ -1,5 +1,5 @@ syntax = "proto3"; -package anySpace; +package anyFile; option go_package = "commonfile/fileproto"; diff --git a/common/commonfile/fileservice/blockservice.go b/common/commonfile/fileservice/blockservice.go index 4eba3fed..df2e0603 100644 --- a/common/commonfile/fileservice/blockservice.go +++ b/common/commonfile/fileservice/blockservice.go @@ -47,5 +47,5 @@ func (bs *blockService) DeleteBlock(ctx context.Context, c cid.Cid) error { } func (bs *blockService) Close() error { - return bs.store.Close() + return nil } diff --git a/common/commonfile/fileservice/fileservice.go b/common/commonfile/fileservice/fileservice.go index 12a62c04..029d83bd 100644 --- a/common/commonfile/fileservice/fileservice.go +++ b/common/commonfile/fileservice/fileservice.go @@ -1,8 +1,19 @@ package fileservice import ( + "context" + "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + "github.com/ipfs/go-cid" + chunker "github.com/ipfs/go-ipfs-chunker" + ipld "github.com/ipfs/go-ipld-format" + "github.com/ipfs/go-merkledag" + "github.com/ipfs/go-unixfs/importer/balanced" + "github.com/ipfs/go-unixfs/importer/helpers" + ufsio "github.com/ipfs/go-unixfs/io" + "github.com/multiformats/go-multihash" + "io" ) const CName = "common.commonfile.fileservice" @@ -12,13 +23,32 @@ func New() FileService { } type FileService interface { - NewProvider(store fileblockstore.BlockStore) (Provider, error) + // GetFile gets file from ipfs storage + GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) + // AddFile adds file to ipfs storage + AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) app.Component } -type fileService struct{} +type fileService struct { + merkledag ipld.DAGService + prefix cid.Prefix +} func (fs *fileService) Init(a *app.App) (err error) { + prefix, err := merkledag.PrefixForCidVersion(1) + if err != nil { + return fmt.Errorf("bad CID Version: %s", err) + } + hashFunCode, ok := multihash.Names["sha2-256"] + if !ok { + return fmt.Errorf("unrecognized hash function") + } + prefix.MhType = hashFunCode + prefix.MhLength = -1 + bs := newBlockService(a.MustComponent(fileblockstore.CName).(fileblockstore.BlockStore)) + fs.merkledag = merkledag.NewDAGService(bs) + fs.prefix = prefix return } @@ -26,6 +56,23 @@ func (fs *fileService) Name() string { return CName } -func (fs *fileService) NewProvider(store fileblockstore.BlockStore) (Provider, error) { - return newProvider(newBlockService(store)) +func (fs *fileService) AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) { + dbp := helpers.DagBuilderParams{ + Dagserv: fs.merkledag, + Maxlinks: helpers.DefaultLinksPerBlock, + CidBuilder: &fs.prefix, + } + dbh, err := dbp.New(chunker.DefaultSplitter(r)) + if err != nil { + return nil, err + } + return balanced.Layout(dbh) +} + +func (fs *fileService) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { + n, err := fs.merkledag.Get(ctx, c) + if err != nil { + return nil, err + } + return ufsio.NewDagReader(ctx, n, fs.merkledag) } diff --git a/common/commonfile/fileservice/provider.go b/common/commonfile/fileservice/provider.go deleted file mode 100644 index 562a898b..00000000 --- a/common/commonfile/fileservice/provider.go +++ /dev/null @@ -1,76 +0,0 @@ -package fileservice - -import ( - "context" - "fmt" - "github.com/ipfs/go-blockservice" - "github.com/ipfs/go-cid" - chunker "github.com/ipfs/go-ipfs-chunker" - cbor "github.com/ipfs/go-ipld-cbor" - ipld "github.com/ipfs/go-ipld-format" - "github.com/ipfs/go-merkledag" - "github.com/ipfs/go-unixfs/importer/balanced" - "github.com/ipfs/go-unixfs/importer/helpers" - ufsio "github.com/ipfs/go-unixfs/io" - "github.com/multiformats/go-multihash" - "io" -) - -func init() { - ipld.Register(cid.DagProtobuf, merkledag.DecodeProtobufBlock) - ipld.Register(cid.Raw, merkledag.DecodeRawBlock) - ipld.Register(cid.DagCBOR, cbor.DecodeBlock) // need to decode CBOR -} - -// newProvider creates IPFS provider with given blockstore -func newProvider(bs blockservice.BlockService) (Provider, error) { - prefix, err := merkledag.PrefixForCidVersion(1) - if err != nil { - return nil, fmt.Errorf("bad CID Version: %s", err) - } - - hashFunCode, ok := multihash.Names["sha2-256"] - if !ok { - return nil, fmt.Errorf("unrecognized hash function") - } - prefix.MhType = hashFunCode - prefix.MhLength = -1 - return &provider{ - merkledag: merkledag.NewDAGService(bs), - prefix: prefix, - }, nil -} - -// Provider provides high level function for ipfs stack -type Provider interface { - // GetFile gets file from ipfs storage - GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) - // AddFile adds file to ipfs storage - AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) -} - -type provider struct { - merkledag ipld.DAGService - prefix cid.Prefix -} - -func (p *provider) AddFile(ctx context.Context, r io.Reader) (ipld.Node, error) { - dbp := helpers.DagBuilderParams{ - Dagserv: p.merkledag, - Maxlinks: helpers.DefaultLinksPerBlock, - CidBuilder: &p.prefix, - } - dbh, err := dbp.New(chunker.DefaultSplitter(r)) - if err != nil { - return nil, err - } - return balanced.Layout(dbh) -} - -func (p *provider) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { - n, err := p.merkledag.Get(ctx, c) - if err != nil { - return nil, err - } - return ufsio.NewDagReader(ctx, n, p.merkledag) -} diff --git a/common/config/config.go b/common/config/config.go index 59afb523..7cfb56a0 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -23,15 +23,16 @@ func NewFromFile(path string) (c *Config, err error) { } type Config struct { - Anytype Anytype `yaml:"anytype"` - GrpcServer GrpcServer `yaml:"grpcServer"` - Account Account `yaml:"account"` - APIServer GrpcServer `yaml:"apiServer"` - Nodes []Node `yaml:"nodes"` - Space Space `yaml:"space"` - Storage Storage `yaml:"storage"` - Metric Metric `yaml:"metric"` - Log Log `yaml:"log"` + Anytype Anytype `yaml:"anytype"` + GrpcServer GrpcServer `yaml:"grpcServer"` + Account Account `yaml:"account"` + APIServer GrpcServer `yaml:"apiServer"` + Nodes []Node `yaml:"nodes"` + Space Space `yaml:"space"` + Storage Storage `yaml:"storage"` + Metric Metric `yaml:"metric"` + Log Log `yaml:"log"` + FileStorePogreb FileStorePogreb `yaml:"fileStorePogreb"` } func (c *Config) Init(a *app.App) (err error) { @@ -58,3 +59,7 @@ func (c Config) GetAccount() Account { func (c Config) GetMetric() Metric { return c.Metric } + +func (c Config) GetFileStorePogreb() FileStorePogreb { + return c.FileStorePogreb +} diff --git a/etc/configs/1.yml b/etc/configs/1.yml deleted file mode 100755 index 1dc6ffa1..00000000 --- a/etc/configs/1.yml +++ /dev/null @@ -1,32 +0,0 @@ -anytype: - swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec -grpcServer: - listenAddrs: - - 127.0.0.1:4431 - tls: false -account: - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ - signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS - encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab -apiServer: - port: "8081" -nodes: - - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT - address: 127.0.0.1:4430 - signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub - encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH - - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ - address: 127.0.0.1:4431 - signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS - encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab - - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm - address: 127.0.0.1:4432 - signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS - encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq - - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 - address: 127.0.0.1:4433 - signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER - encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL -space: - gcttl: 0 - syncperiod: 0 diff --git a/etc/configs/2.yml b/etc/configs/2.yml deleted file mode 100755 index d1756bd3..00000000 --- a/etc/configs/2.yml +++ /dev/null @@ -1,32 +0,0 @@ -anytype: - swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec -grpcServer: - listenAddrs: - - 127.0.0.1:4432 - tls: false -account: - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm - signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS - encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq -apiServer: - port: "8082" -nodes: - - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT - address: 127.0.0.1:4430 - signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub - encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH - - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ - address: 127.0.0.1:4431 - signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS - encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab - - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm - address: 127.0.0.1:4432 - signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS - encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq - - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 - address: 127.0.0.1:4433 - signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER - encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL -space: - gcttl: 0 - syncperiod: 0 diff --git a/etc/configs/3.yml b/etc/configs/3.yml deleted file mode 100755 index 29fe1911..00000000 --- a/etc/configs/3.yml +++ /dev/null @@ -1,32 +0,0 @@ -anytype: - swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec -grpcServer: - listenAddrs: - - 127.0.0.1:4430 - tls: false -account: - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT - signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub - encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH -apiServer: - port: "8080" -nodes: - - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT - address: 127.0.0.1:4430 - signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub - encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH - - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ - address: 127.0.0.1:4431 - signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS - encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab - - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm - address: 127.0.0.1:4432 - signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS - encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq - - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 - address: 127.0.0.1:4433 - signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER - encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL -space: - gcttl: 0 - syncperiod: 0 diff --git a/etc/configs/4.yml b/etc/configs/4.yml deleted file mode 100755 index 0c5540a9..00000000 --- a/etc/configs/4.yml +++ /dev/null @@ -1,32 +0,0 @@ -anytype: - swarmKey: /key/swarm/psk/1.0.0/base16/209992e611c27d5dce8fbd2e7389f6b51da9bee980992ef60739460b536139ec -grpcServer: - listenAddrs: - - 127.0.0.1:4433 - tls: false -account: - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 - signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER - encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL -apiServer: - port: "8083" -nodes: - - peerId: 12D3KooWSEoTbvfqmn5r7QL5jBSUCYyEDvHn1mwLC7HhW69WYHFT - address: 127.0.0.1:4430 - signingKey: 3iMfh4JbdRyi7oy9dnUBi9pYJJm81owYezJ6Vw14qraCVhuaTCfDmc2fvbm66dhFVrJK4xVT5UCNPLEtLMYYxvZG54Ub - encryptionKey: 2M2HT8EVmV3H4KkqzeVD4ACSrteg7ZgNjwZYrzA9MUJPCUwu7RJvNS83DLdgT55Q2SCnsCDBb5THgsTn1CpKLYXHVj8pz3qd1c5fJtDpKUS6bHSzrAhHJoWMdFCzrfy2h6xP1Z1pn9ZtyqhCqhUf2exjjnko9f4pcbimHiWxB3LUqi8BfswGMazLqAXJWtpavfduNXwEvXaModB59Njn9DBtX3YuUz2oRBqNxnudd8X4QmughTcqUJiquoTko6rLg1uRR5uADEFSAgE5KuVBonXNsmfYn352HHoeXUg3acfSAn4FcPsgckww9KFEbU4Ehc3NpTuonpVd4wc5A4HPu9oJxKtfrThaZE3gu3ENkDSSykdh3QAdX5k79uGzTa5UL8z23QmsC7U9KNYJWUtZZNeXYFbcUni6JqdzgnTzqyHH9nNJ3M7dJMaE8HW3HV8Zgc7fZuWHsMTfxhZKtFxzuAtEtRW1Za63gWGyhiPqsXzXMx77173666j2qqLSDpasBBcn1qZooZUPgpDVxAdihANtU7cpr7TCQqNAn66gtkkNu3ArWMQVyEy94Spon3YmfhTRA16B8PXGDSCJxEt6amNctPBeQQYT8u8NhFLBUUjfezM7isSedCxJTccFgExuMdzmnDG357uHLAUPKmTRVzfeWQNHBuTueS2fbnEp1QGTZrhm6aqLW2mxZBnzrjn2XkL2Gi74DBS5EsY5t2TThjx3ztZ31SLWD1Y25aHoegxHEPbJXk4zgZfuWbUDXoWhTcNNDGHbi4aUgy4cMqoVyaEbDyQ4aGg1CtgK77GzoSJTR6RHeHUakALxVETkEpzPbUkE2884SRKE1HMqo4qbD3GykMUGBt5xkcbka18ndurMkUp6ReZfaudvccrFprLofNRBxisXQHystcijTvkUxXJGU5qNcvQyJqQXgqcMwwY3x13Bp7BDgREvZPQRV6m2F5ZqDKn9CyCWpAnRDMh5kQBthL9cXGgZ3i16uzCf1k4yb1zEsdRzA1Bh6CDKgdP5FaRH2HSkko7MyCvYKMDMVDewdkr8289myztGprFzMpHkEaGbwMDo7dM6y3p41ovT25aNtqvkDHmt1C5ECpwUwmXYuiR7i6Ha82MgHT34yC3tmFBDdwKgtAqKzAT5pppqE5RWxSMi5gwmniFSunDCbwRsdhrz4ZphwXEiLWMLxKVqCtEBuSUcVXaj9JZU6y5Y2VoKyoSzW2Q54PmRP4X2dfQ8aT2bPb3Ror7yQXd9Q262brXN4dunEsx3XW8nkGvHEWXUNjhidWkhELxoJC7ScfzQRdA5C68fduJkpJjZwnrVMRcufw8ZjG1PfjYgeBFvgogWn2KxC5haTZLigWYL1D4sFt5Aekw3wUwEF7MsweLK1RACf3w1fTFtUvtYRcqTkwxAQFkoVToYxQSavFTqwadwLXretJ6AHRyzrvMDN1nCg7DShwUue8RAgLhinyTVNCZAsUG3FcP9doWDBFDCCn6gjiE2s9XhfLqQk864zEMdk9qMot3nnCjMwrbCCie1XEUsQp9KTGBV8YKf85UrAGGqyKTid16u5pqFUFM1c3sfntWmcY5FYoczUkvJpsMfk7RxYdsm79Xxn3u6ebyB9wLPDZJsFmqLkH - - peerId: 12D3KooWEZYZYF5msGMeXuesu3DG1AZgGDzLE3Ho1iFDf8YwkyaQ - address: 127.0.0.1:4431 - signingKey: 3i2UmD2ZojXRvuU3gCQonH461gMa6cEjXkDb2wu6V8dkynyZ1Uxc419QkxdmKY7mXoKt9TcbCN17Rve9EpD7E8zVWkjS - encryptionKey: JgG4CcCbae1qEpe7mKZMJjpanwDa8wHC3JLjQ3PWiSGMvdt19NbnHD4qGG9jkwh3tw9oGgThgF1A7NERBwaVw5QxzUdnYHbWsHC1SCFkvV7Ev1nAeMtBR4c5qPd5sdCVP9YhbqkYVasSZNZRikNd52zAmhvduMPPqjKhrJkprrmU14851JMtAAREgoHYH6M84RwEQ3AcmX37EHgYQ4zpV7FVGLy4KY5mc3ZmeAGFTTKJM5kD92Z4YpnjWpkMMqRBJx8NraJWuQYKRcPzybnZstwJknmf36cQFjFvoRGpxp23UnG7wDap5hxaSDi6PqCoUnBLrrd91z5dimQnv9hWEjyYvkEwney3bKmrjAwB7jneGm4vveUgZno12gP6FqxT8cG8X54ZqvPFu4iWCxXVc2HpuUernxSQsFJiUogrotiR54UY5tc2JRv5KzMTTeRtXWzGaEJNAzGh14wXF6U2PLHnLyYYjDtFRybZjVN6KvVbWS2NAtCL6d24JTVRzJ3WvqfgDQnJfAhibvUuaQmYdRDZeMoMk5p1ax16rivjdMh8mHubzyScaq2rVKEko1Xedm4RsWn1Qg6TeanrctTc6yKzk8H7NScKXxY6QwxGsX8vkKdbemQBzdSMCQ4xxRBTcK6RFW7QwmYYMEDMCqdjfYFV4i85s2dmBzPbF7AHUX2hvgDLjL79KzByf7cLoVu5fvVAoADiX9Yx6kuBHJiwkV3hDTkSjNmTcDxAzSc874o6Nm52ePQvvdRCqhShkRgXZFuiA6zMiBsAotihdv714ihAwvDsoUd32c6AG3NTU2NtWRmnPKNh3aRZ1kAXHWwXiFXJXsyHXDfeiwa59gsjent3gWxWK5JtENJZd4ZGxYSdNz2sPrgQZyt1wGU535wSfsbtGysptCBWnqSPAN9Ggv1TN1L7d3sCQx8DQzKU5dsPTY59hfUX7TxD4RJxHKbSaLNgZZhNTFegWXELHdrro8GwBDekak4CLqfqxaLGm8EZFJ8KXTXWVVVNWAGwDmqMDiKjhZnkaviWaZ8oxQcZMMcWewbKMR3MKCarjkr9sghipKcoNFV4tmomW4hHP9gKa7aEoddahtp2eL71MFmVd3F7F6xdiGQyCAnh9ZMZhXuWQpZaLcKen7wtvsXjbwqgt3Q5MNSXYR2G3cTqQJ1ZaLcs4YsuSc6AcSKuetfv8pA34kihBEvxjSKXZHu5J18tFF7NoUg8zHJgPzzLAvSPr4KR1hbAg8FnuFg4HLoBkxrVsK95kHbicopB23PG5vDmii9kDHmmyh42FbEsSRbsPVtNb6LAw5kwtQmyjZUiv6KMA6fKZFBndWoGwzHLWWND5pLZj31uisgyUyPKb1txJVQVBTpPH2uVgY4UPa4gUkdt63UaqxX8G89CcBKH22QSfR4buqkEoXuKkAgu28EyMfeWTg6DzBuJo2YQbDTQVeBC5RXsxY5VWGNYnopHcsY765ykRNfuvKi4vCPxWzxFN6riAgGLin92rhwVyEbWmxvfmL1WLXynKfW6DgWsFw4aSQGG6aCabkKhUtx1TZM7XMLgopuB5THpJdj47q8cxLjf16DeMUEgtZ15NrX9nLZxSq6PahF3edMpbJSMAwu12BGC5yAx2Cab - - peerId: 12D3KooWRU4heShGW7R8HhzZrApw87yF1VY4aVQMNdhpMRzRhyMm - address: 127.0.0.1:4432 - signingKey: 3htJbCGsdxAQzq5dRE6wEmBC7dNBTKaxBS7fVjQQW1zDRQ4XmrQAGcxm7ccFN6k8h3Ac19fq53UFZVXNXg1wxkYnLmkS - encryptionKey: JgG4CcCbae1qEpe7mKYsqgaWWuQ9hcxe24JE39sVQo8koroFeUpyoX4jM65ytMbavBy6wm5rThYvgUgikRmwvFxmXB5x85EAgGFbb4mJPNWt23TVbasgGatqJW9Ry2pCwq28gXzmZPGfENHVV2JV88UFDbKwSU2YJZRuYoBXKSR7Ls4Ybse9ptdZa1KsELYLTXwHRkvj7FTfVJpnnvCGQn8fyna14SDhDNmJCxSD1foUiuvoCkq6CEnHEzU57NGGs4wbgTgDvgx6nnNwCQikwKRn3TMc4vJ6MjjWfB5QFhNY21f9dNqxLKoZ2HNAGhypogHuKwiwQTkGH7WcZdsPbLRceNw7bKx1BjcjTPF1MTJBdnRLNoGhMJ6F2Na4wsTfeH2z21hgxCr4tSq6PzXVUp1DLTYuD3SYFgfiJeXNVZ5Toz35Ns4juixYqQcJVn9GBpj7itQp12KMCYJZJ5nuW9wDyFVh8MZdo6fkvy4NEB5NibaEScm4cTt1UmtcDw139fQct15jPHzoHrgNrpkBGnpLufw1MDtaLzQnypYEDB1gALBJCKrU7DBpHri4Hmq9uzNKTvm7a8XMveqSKsVhbxebtCnyj3CZbJLeQc3yekTpCVaeZ5iU9Fn5EPu1R7RfUfzm4PGtfEZvvwq11Ry19DzwX6rkJjjR1dbFQweT3tq6SwDorJR9G7QuBdZNFQSb2Vf5pPKZ9ZgVxn1HoBSZ1z3CpzChiHUfD2ntQBzzVA3pPQidgK5L5Zhf6cuQhoPNAM4wYmMxWhEWdNFQb2LVfKanu8Ybg52r4ahWh5SWTUW7PyWUj5UfmqDRXhse4NnHgBCWQSrjsG8uYQD9vyfFVXkXLhf78Tpk3ZmWNoZ65puNphD9gPBA6kWZ7nde3S8dWYUC2AuBhaGYke7hUFfYNPHC3toa27njaGnVhjYKTFQcPi38ompA9BiJREfWbChHMaxLRN2R9SNpT4ZhgoUmZJkKds9Gmte2j63C7ZSY8vSSdyQ36TQGHqi4CXXppNdxRZyXiDNvH9jnFykXa2saaagZRR1kWJ8JRMVUXkrz4p6gEEuaC7fJt24KPT5dwAYhf7pwzN4smF65ajaGHL7cpX1xJDE3fKs4849NvSpA2fTWpDtTVYRBGpWrgrBoP4DSHQn6Bx3vxdyFAvNB7Js5QLAqFb52vKJ8XvsSqjENQhmc3Y7FsCWQ9ejPsZca4NPz5jwVPTir9SbLm41U7M45PNz3VKkHiRTuX8gZLkvbmfsWZCoRxBThKgMzQkZGozr6iH9Evvs1PAicM1b2VMqeqzoDUTAn1KUNPcB4yDd3RghNU5S43UkckhxDT19qtZo66NrR3dJvkMffuwrZScWBbSzkbZ4223zTVD8k4mqtWjVc13M4Fx5qysQ2Hy1pRe4vjf716bpaXXvppq9NWu7g7P2BDH6eyxm4qLCQ3rFgmVrbZvUgHRhquwY1tLiFCMKLrfTwHVuV6kWhdjRLhgJajvUqrxfgMtWZdFHDtNSiHG6UnfiS1FBWCAm7HywmQjjtd2mx1QhACMfHUaPyFdFUNW6NZbun8JLskZAJXLNCSK2NE3AMUXE4kcp1HRMaw6eX4dWqUG39Ncp3XDzCeu5vEjSZdYiZeBEq - - peerId: 12D3KooWSF4u6oehMBV3VWDvQsn3feFpX5gNmRctGtcoyEZYjUM8 - address: 127.0.0.1:4433 - signingKey: 3iLAveK4Tf4YMDh5ZMfXTu81H2Zt2hMwMeKqNJFcF77B73jyDe8bNHepCmwBEGSPdExTXXvP1vV4HfroR5fP9jvsMSER - encryptionKey: JgG4CcCbae1qEpe7mKjsYJrKbJS5BrJSR5rQTHjRNmEYdwmxHV6XNnYTKLBeXZJ31JqzmrERPjbhFQf4kSN3qKcNPKziT21EKG6TKDr85AH2ZMJ3qR7dtnoip2bwN222Hju8DqQ8CkteTDkrPXUMVQPGw9f9x6JcUeYdBTnksdLcPo4hxJxAQs1iHUtbra1nE6nAMUsqvuYTSR1TDo4W3MuCWeqnShK1NiYXZ7G2Roe3CG1e2eiKsJHZRBtduSC6Ga4EqSxNiMCwGivfcyHx6BnSPutkG3Yb1DUhkbwVEZ8bZtpRz22kTuxdnsXQBb5kd6mCp5BSCQQ2UppTJ1azD3xU3bm95R4VdB6A7ymVwyU6Zj3JD8y7i6yQvQgw4povsaEQsCsM4AXSPi6uEHVDHE2GECHUqceAkrSiys4fr3Jowe4YJeJyU7VgM68BfohBjwUXijkYfS8Zh3kcxTXhKf8DgvLA1NQe5Srf7jwQT6W9fVjn43FAeX5wu4JHUxbzYa4ga5pWfuD3qX8PnoHNFjehSBVb7QsZYG21ZzqfuiwLUntdZhNrvh58vSwfm5oTEobQUt8BcEB9uCnTuvohusSbFGbgTzxZDyZ5L9hGuL8zd6qEtHtvnDCej3uxVUDTcyiBdAihRvsBnG1W62BC65Z9x1nLn45pwkgRnRbzHJ7q1q7oNkRDeSWRReoUr83Re9JdJu3gDMCDskvrMeBDgGZ7JZDwR9kbhsRv9pR79cfvbXjXnXxz5kjCt8mq5bc1W8McDYq5f5wHUQsMzJZR4inV1MafWFByoiGSpaE2227bWtKembkuTv95vHZaysC9pN4QGSxwPE2mgTAZf8Cd4FTigQ4aUD43F7kJQKnbe8Tv1WNicuyX36yc3vgTohu3pSG5twVoeqkW4wyWJ8rBHEfKTWTFp6qWQTGLova71tVgmdb4VarfdgJyJtvUDj17k5sjsfY4GnW7xLyeA6p2qwLJCCLcy4iptSRztm1R5f76e7XTnR2Rfru98721S2Yd79CEVpfPTNrN2HohWzeS9wm9FrQtKTqJPyzgPo1MHLttFHrP6WvwM92yrgFthkxaLNFm7cMXnKFCx6FdWQqH3otAzA3TRfjEb1jDextEnAJfQNHR2aJmTSY3reZBTx8iGH1U8u4cBRqhGiqEoBWa6voZw5vxMvuB6C3PcbTu2HaUFrCS7AEcXVAk7DEKrw19Q9guaQ4rhQCyJHniw1HymNMmiCxkR7Wr7ZYHpAKbgxg7E5WWG3UnLUstSNcy3CLJHM2YGqsCvYsBbhdRDWHjYtLwyEHJJfYzCTCJq4rtEsnbK486R1ojxQ3XYKGyABb17K5Q4dZtkcoFsFvmkKxMskWn6Aj35bVxJQa9wA8x79RiACZDRN9pEs8GeGZ1X1pNKQZaekut8ZSSPohj3Rt3pAzoGv3NR5GppbruSwUzucWRLGJD6xUJSotUU5YWkfTVqoPrFvh3XcXjjn5nQrqEq9Wj7CeUPjU1VhVcDgvQWsyRvqXNHi3UwNcBXN92q3zadogKeSBw4XFvnVjAx5aTfytXFUKmyYJsrz9ssfzw3tvTcZpksURiyoDtp3zcrJaGAes82txEVxbxBVKQeuULM8JCF43YsrGL -space: - gcttl: 0 - syncperiod: 0 diff --git a/etc/configs/client1.yml b/etc/configs/client1.yml index ec519112..08f4542e 100755 --- a/etc/configs/client1.yml +++ b/etc/configs/client1.yml @@ -5,38 +5,37 @@ grpcServer: - 127.0.0.1:4630 tls: false account: - peerId: 12D3KooWFgtCbkf47HhFyQW2cEdAkvaofpokCiaa24Phnz7hpepG - peerKey: 4nWcqWOZxv1iXWYuW35eJlF9nxownm38bZjQ27pmFgVXO26vobKLx70TnNTQzZQdoW/dZtxyE9PO37R74vfPQQ== - signingKey: ULbtmmyFjkJ6Z+54FI1OJWfu0QdIeoCckwcrBZDLGhw2o2cXTFH5KGxQuAruNTbREz9eAVGmhGoBZtKVi6/6ng== - encryptionKey: MIIEowIBAAKCAQEAuGAvw/JQuivjoFIhV9RGkoCjO60jNkQpVPWK52eUtEvKHT2EzufhCRwxhAreajoyzk0PsyJ75FWrrvYs2tkSVHFOSiBkZIsldn5gPg1cnvnJOZ9VKDFp8h85d/4cPQ5tX78043nYTgLje2EmbB83inIr4oiZgxDrtLkozJHleAyWuOLIvlWO1l4Uplf6+uooL/5+WeUCuSGUM0wgXfpn+I2IuRhVDVZiChfp51Q6D6brTdOzNcWq1dw6Vld67u8aCLF1EVZ+xM/rnLLBC7MFvIw44LqHvmvGs/lpE9nMNx5L2KfpbpHSBI0IH3FkLQe2Qz8OMZpIa+aga/DzrBpEdwIDAQABAoIBACudXU898AjKPxN6ujZ7maIoWfTQ9SZuI1TcrNomr4+i6hHWrqb/RUWRbMkuhQSd9czFf/RBMQuHlJBT3bJ7bRGaqAly9iyumdMY/A1RvdpBfm9qGIvkfIpxBngzHVz4H7lpkspI1XlGx6c1CRDEpa/TaDwzUhUmGIvszRDvZlfqQvjPjyYSV5Hdc4ywh5zjuSFlxOD/9gsPRE5v4M4FGrGv8cm859P1u95Wxxo3pWincpzjvWw2LpsUGctyU34MhErxh86vNhP9v+nR4VkdojVKkHQTYnPKUlaKj6F+IUSj8syxuTJb8bs0GBuvcXW9AKp/K0xq/GBC8Cu/XN7Ln7kCgYEAwZoqLnU9OuwkcN5AHYW7XsxmVCEnxOsncrUbIzEKPvy4wELdOCVVrX66zmIjb+1+mhaz+mGMGEpkVMBld3wdDfmGgo0CAPlF4efH1ppMzUm2aZ+HYQR8KMH1XOT9qjbGEnLeWcANQT0vZPpe77PQLNwLJ1zv6EtXMMrEH0s4ijUCgYEA88zCNsBtB07ayFr9r+RCfHx/X9wFkT59t2K+axIfZE02f62WWqJCZYMlZu9XAbYEQ94H43/NAL9wfA8dgnF7mKSL8stJKt0g2iPa3MluF4Gq5Y2XYEVf/EDEhP2jh8p1l+xs18rVzsQQ6b3CEU9ytmBJWvkWnwVXf+ZnsCFECXsCgYBM3YyJzXp1/nOpbFRAZGw0AytNk6xafpK29DjGDB5pS6V+kA2M0SXnMD2y2zv+oGh3fTQP4NLigga7r3eZrOlMNxm0k4+MG2wneQLarYB4sR9/aBsz5bf15qwoKbKc9gpGIN0u/RVGJai/irhOqzGn3eV/x2Jo9CC1+otLcW4NUQKBgQCOOHlnZTN1GuwICwSIkhiy9BF+AyUASLsfuquoXEcRxPUw4DugnZ0sCKhN9vsDlYHBcYmajhgyAnuE83BcgwT906eMOEhzh9G9T0NCnwLpFYxzIvkWgQHwbnv1tNyrv1CAEryf2cSGPNw87qSCYp1hhKPmPP6UP5J+mxMLrSw6dwKBgHHFweDS2tw4TNxJQjhfQOp5t9VQbQffFZAqpXGFTc4vf7XePlxIGoIpOg4ShHCKKHSy0PtsLe7QjLrdbMkyYh8oGqgNe5CYTzFFDeK6Im1DoiqNWT+YUWF/gzVRUSpo0QW+4J1hfChG2URp9KbnditXKsJ5Vh+QayHPoZwN7Kgl + peerId: 12D3KooWDPdgoAcpvHcED4FsU3iz1mX4D2XBi4KN8NXaSt82sn7j + peerKey: ZOaSbsUfam6r9KYA9jlkbDjQ+hZ6wpPXvDNRyjVyn7k1GMYeRlDTNSniNutKr32daIDQuowdjwaCeQ+hoij/Wg== + signingKey: OYgzXHbYZDouketIP3AJJ3MwmdQ/7ZepdkE1kUCnc6CLc02ua64saYnkFcoROcSgrVjrL9k8aaetWCLEXgM+kw== + encryptionKey: MIIEpAIBAAKCAQEA0/0eVsifbPXKWxGj/Upfnc7Sgv2i0f4Nd6h2ahHurxZt4+H+3MZ5fcmdBo2mrk8XArvIAl6CHxM0KnE8ZQPU7xKi8o45jibIipCaB1CfTgOtmJ8a9wZ2fwheEtbiy39Twb7Hyg71IeACmTmS3YPYX3nGAkR5/vln25r1G9K9dX5JIybhEsylvyS+w3L6noY0t7zyDQOuzX2S6VDwE4UrNJvTxM5f1ezs4z9LlbkTqPEN61K2Ji2UHyg1b2BONfIA+20hZsWwzmUdXdguMIaN0D1eTE+PSxHXU/myMBdfXeGFhNVsSaYhAm/KcPVt6oOd0gDRfuIOyT/QAeQA0VoWfwIDAQABAoIBAAZ97urrc+5rTIojbSk5mNoFVm8Kg2z44cKzVwUCjZOxFSZwalSqg1f1z6g+uEcIRwUfaQ2hhUycUvGlzBqv1lqH8JOLBXoz99o+eWkV7/r8o9lTrgi4mvJi+DaNfB6NRKxfQlEOyjUCXjIBEF1WR08NNKInJLFJRAP2p+D1QDYT3LUpVknIfrxCciBbisysx9QlS7sP9rAncUWUgn1bvYlyRmMg88EASanViQzdvrjIp6LTu2MqO5Q8mfRRcz3oK2qAuArE25KuyF/BRnMlFGDT0n4stgxCMDYw2vdJcvCsMXkfngbOsYeDBB4755vVi6NDGekDRBmI0S0//WCCqkkCgYEA8BgwhIgn//QE47Rx15F9H36msV3WPcxpSga9BBFQzKPXVij3oBxlyxTKnf/iFTIIeCvefne21R1MwOWuXavDr2tCQs322HI87DjrMKQStaf2wyn7E2So+7mW9psD5QGcQfXP0s/LoehinoChKTitWfqD1P0RX6YNQjaKYq80QG0CgYEA4ghHLE+dDkqG/08UH1L9B1Q9bWjvOiQjyrtRtnPz99xuSSH7XywxdXdPs8jCgquKRPHrEfBUd4Ry9uhqcCzjBVPx6T/J07L5wVa3ZE2g7n22DAT3eBPJ3bkeFsPV1zQzpJYnQSed/j8Zl2899242w0rUd1OeST9lvVz+uDfTlxsCgYEAokKGz5rBBa7hew4g/eHaYOWUPDxBpQQ3iArjxRL6u0JjLlyDdZabiNLlWEBth4uHw8dKF8hKLN8fVyIiZDXICw5++mz9zSvvVmnlMLtB1bjNAPqnL2UQ+wZjKwh6alNbSgyZRkyevy4xMBOYVyZxqWSvocrh6fVr8nqvrZ/gvUUCgYEAiA9nmHrMFcAzBxh5CmoQOgsxdtzFtH/ws6aSh3vBDiC4mnlEMYQOuaD6b0SYIcRU1S+yyveaQN+PvKUm/SNn/NsNMdTeDvsbcJBckJpSF33AyfdrZ/KxfzBhtl5oKMUZmSdxtby9VEBzjT6/VGQZvvEaeEHzdDAfdB+4jPe9/KUCgYBf7IhDH3+9Rrl6xQtIyErtaAWm+wQlucbMMoJgjXL6F9V6HqUer3+7OvNJQdrZiYcxHRlXynT7cN8iw59rOHQxEaNOXPwz9TS+wlvUerUHibgS1GOnLVke/NFoEi8M+B2pdo1M2x+YBdX3hi0kMYB0VtZM75uPKS9I1ZSFfLmZgQ== apiServer: listenAddrs: - 127.0.0.1:8090 tls: false nodes: - - peerId: 12D3KooWPuwdqpDQxWhD2Vh4yskx2T5VMrwdpTZLfACzgsGfQfNy + - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab address: 127.0.0.1:4430 - signingKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - encryptionKey: MIIEpAIBAAKCAQEAxnE9Htwto+2fVmonkG9/DxNre33n7kjfrZU73JcHmpKhPlRFirig5T8rs2MaTq1R72/8nGBJuSxsz1PnexI3die39pY1OFYfZCZ59LbT7uH/xHcvkVrK2n50Q41KbbGT9BEzyW+XPkKPDpTq3/igYP+yUQgoWLfMwxCCLKXDe6qUC0fuIxR80fvj3XvorB5dnAiQ01JkH4PtCV1OWT6ZpLGhzcYxsxTHozd6LdMOC7wgGhW26dOSa/vZ1t5avbewFVIz0qfqBncunb7tjO4xa3xVYaA5jBbixDQUYFjVzW7cksrrN4CFNBDBGJ8PLS80MuMg0OG0O+/Qi1mbGb2mUQIDAQABAoIBACODAD0VidVcILeGJ65hRYudHg7raSXrRJv7qMrA/EtdEh3lVsyMXb6on1lq0rphqdf/YmVZldfda1tu2G3dxK8QTIuENeHvB48Uk56HWUXWi77M1WZdqQ+QsZ2lGzymGqQCsBHMNnSd1Jv3alDKXWj+WRrHKvE1cx81RRZYU7M9cpurnF5YNjO7L+7sMxUA9uAQGbe3kDVzrygraicLYQpxSNHytName0A+k3ug0qer4I6PmZhhJykkz6MD3dz/n625HSS+X+TuTm52T2b87tL27xXmSnUK7eYWjZ1vQlP1fWmqnac6u5LApUZaRi0tTjtefSjRW4jr1q20RqOp1kECgYEA7Onh3zM9ejATsjW6WISGKiBPci0D7DUbIuGuJrdQRadlkZzmeQ/VOYAuxIQD4GnQDRhM1FyxsqiAWkJOyCLFiMmsgIEyW9/eRhF8NlCVU+DA/fxy9EagfBbVsgiSBwOex24hPXIVYlaHkLAloNoD4bpw0pQZSDWXr+xvMFNwoGsCgYEA1m3sWA/e8ZuXForaUOoJzBU9nwC79bXv2UNktsVvBlQ1o9pbjoYDcVoAPwuBVUL1UwqDNMzPdhDBKBjZmCyjS6zlYD5ZKjF2m8iTyc4QcaBCdM0iyQpSXTmrfMx+hK1aWwL1p8ssNcednp5ExSAaTyNNGVdbtddiQ6/KMPmhUzMCgYEAwDjLsUNr4BXeBTweo+9yw/9PNn5brm0wRU8C9BrMIJe/izPYs+UqxerBB2Vtl8mCqv1KaQuEika5TYJ7VVsRFvk641DwQScUu5k4RQGBB3tWWz1XL+eWEticLkVR5isDyyAKDEbiHtXCTJz/CtGZUK7rF5BeKv6AwpZ9aKJqwV0CgYEAqXDlQNURu+PR6TtBtoypvz3NmraO0GO7KvipPhAXYm3qkRa8IIxfbhPLfAYQZhpqFvuIoJFzIn2s1I2GbExhoSv3eSzrcn7xlbpSpjYSImeb/AYZhbmFSiuHCi/hjeAaNS7KhZPz1G9vaubvusFaaMyhYPP6AWA4QvpHEJpB06cCgYBqR6/7d2hQiq4MJUrBEzLwG4ijnPeq+UVLQjE598hVIj+8UhRZRRcNWVEJxfcIL1v6Bpo8XISDNVRb30T9bPGVnXvC1jutTUbXKUB1/8iXuyH3IVieobch+bGd4v7ehH/lI7vzB6hjJpFzHopfFUn4wacSQdcFi3tRAwUB/L0S/w== - types : ["tree", "file"] - - peerId: 12D3KooWBgHmDqtXH9SrZfAmwCFsD8LZhTD5dg5wkhdbqFoS8GBN + signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= + - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb address: 127.0.0.1:4431 - signingKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - encryptionKey: MIIEowIBAAKCAQEA4ltcn1AH048bMXcKOOW7/E0TZYPxL3OtcHXWHSAZjeeTA/rc45G2eaNgyY7Ji+feLtZERbXNWGFBdNp31NHDYZAYwbZmjEqTEgV4yVx7BQP3VBEzglTJaNLTf+XIJnVAEkoHS6ogjC0oXTM6paHu64EitoOCzF9zqL023swjE3HU0dm2xwsUdGnKeO5nPMso/6e3VMavkKnFmvB965ECCBujtediP4lVdIABNVtoMHCoeI5Sn+m7TKqJSyDOIEMhHT3orYUNZWVeAHE1YTM2cI5tSnDZP80CHZ674Z/bKL7Jaznmq87mVt1h9Use2EkxR07/dJuTGvFOos4jHoiR9QIDAQABAoIBAHAr8EluooI/j61CnYk2p6LPG0aaTQJD4/YwHuwOBTviP2OghKgthGzg/szDerNfMyaoveqBvoIGqCZdQTbwwE7v1qTgXA83wYwTtBitQLVqkr1RTOJQXAMbPv5Jg5czUY3+q4DejQSKOE9/XJfKGJkSRH6Hy2C2CJ3dLnzYUqWGO3t70RLT1/sC6p6w3lXdy3dKZGkoR2wva+HXQxVrP8X5HOResXgNZwgMHt9KF1QHVCcySKYiEAefEKTSdKD2fOd4FxLgp3zWpvH3jrX0zd/DqzTlFD5Ns6Ayp2sIfHVp3sn99DZZM6DauMepQKtoSCnXZ+qKhekAwNVJnsVQkSECgYEA4spY9araeFUSl4uXCUQOpCkSshYOPRYN6sBbHsx8tV2eQtCT+5SuNYmzur3c5bkiraGEab8rZfGdDL6fLxQyaqbOmN31Db5kNh/2X+sRnxkak8lsROUWQZRF9doH73FDv6ZlI3V/JicZlOUCfN5BYT+x74R4/c1YXfyuD1J9gr0CgYEA/4K4SDwZUY4bOVCmKQz0OM+RW4PAAH6LHKenTAZNTeDNFFxc2nqnzRGMEKZTDGy0kbT5mBhBHFgShXcAiKxc5/MGkpt8Jcq6Fr5KGU9aZtYKji6mwMTsUndPNQydh3vOt5pOmcuMM6ovanNTvI8k6Qo53OY1IpO5CfOROu0hm5kCgYBnWsYd92YnDsYxUEldzKlLgPhnNov4pNNk15LvP0vaL7cPRhUaw1B9T6scAKjp/GxkasZ4lsnFZM4o37qV7wNm/WwL2KN0Rv9Od1SFtBBMzFkDXvk7kJeK/XLAr0OMiLbSYZeYCFUQ4yLSa2et1nA/TJLf0CR/rhSGiMAedX6DlQKBgAx1137OT33GrFUzNacy1oYeuTv5RNfBVA9lrabrd8GggN/JUU3mRWCexnHZaptkgbnJVZKxPBuhv+V6VDBWF4HIPD3SD0/YfxK03PA3CnWRYppkdAValRvAbcBsiRIeW4pgoAyn/IJYfk92qFK9uFMVCJVZNKYnBhMSKbbx8X2hAoGBAKwvzyAImbNB+493q1R/lSayxzG76bRJ/EseiTqwIec9c4C+Bd/sVXR+Re+xZb0FI/va1bz5CrduTzLSKBmf/+0lzl0MJvWY2+SXfGYdbl4+TTyqgDDfwqW0Tj8pDimye2BneyTmXko1rF+2Sxen7kMXnJLwpqjwZ6TZJuoqeK8q - types : ["tree", "file"] - - peerId: 12D3KooWASsipDzkridiMBmE7VSqp8yZvGWPY1VqySgMSZk6tsiL + signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH + - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK address: 127.0.0.1:4432 - signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== - encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== - types : ["tree", "file"] + signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== space: gcTTL: 60 syncPeriod: 11 storage: - path: db + path: db/client/1 metric: addr: "" log: production: false defaultLevel: "" namedLevels: {} +fileStorePogreb: + path: "" diff --git a/etc/configs/client2.yml b/etc/configs/client2.yml index bad7f0e9..886fa9ae 100755 --- a/etc/configs/client2.yml +++ b/etc/configs/client2.yml @@ -5,38 +5,37 @@ grpcServer: - 127.0.0.1:4631 tls: false account: - peerId: 12D3KooWQuD9ShSHt4nb7bXefg8ndpDXCDzwrm9pjHsnDY2khbRi - peerKey: fp/Q18I7TNM4kgKXbbOBQJbJonlrQqAlZwTF6Rx/sKXgHQGZ1dBcS45oXGbTb15Bi2r7sOX+d6HJaaQE29MisQ== - signingKey: ULbtmmyFjkJ6Z+54FI1OJWfu0QdIeoCckwcrBZDLGhw2o2cXTFH5KGxQuAruNTbREz9eAVGmhGoBZtKVi6/6ng== - encryptionKey: MIIEowIBAAKCAQEAuGAvw/JQuivjoFIhV9RGkoCjO60jNkQpVPWK52eUtEvKHT2EzufhCRwxhAreajoyzk0PsyJ75FWrrvYs2tkSVHFOSiBkZIsldn5gPg1cnvnJOZ9VKDFp8h85d/4cPQ5tX78043nYTgLje2EmbB83inIr4oiZgxDrtLkozJHleAyWuOLIvlWO1l4Uplf6+uooL/5+WeUCuSGUM0wgXfpn+I2IuRhVDVZiChfp51Q6D6brTdOzNcWq1dw6Vld67u8aCLF1EVZ+xM/rnLLBC7MFvIw44LqHvmvGs/lpE9nMNx5L2KfpbpHSBI0IH3FkLQe2Qz8OMZpIa+aga/DzrBpEdwIDAQABAoIBACudXU898AjKPxN6ujZ7maIoWfTQ9SZuI1TcrNomr4+i6hHWrqb/RUWRbMkuhQSd9czFf/RBMQuHlJBT3bJ7bRGaqAly9iyumdMY/A1RvdpBfm9qGIvkfIpxBngzHVz4H7lpkspI1XlGx6c1CRDEpa/TaDwzUhUmGIvszRDvZlfqQvjPjyYSV5Hdc4ywh5zjuSFlxOD/9gsPRE5v4M4FGrGv8cm859P1u95Wxxo3pWincpzjvWw2LpsUGctyU34MhErxh86vNhP9v+nR4VkdojVKkHQTYnPKUlaKj6F+IUSj8syxuTJb8bs0GBuvcXW9AKp/K0xq/GBC8Cu/XN7Ln7kCgYEAwZoqLnU9OuwkcN5AHYW7XsxmVCEnxOsncrUbIzEKPvy4wELdOCVVrX66zmIjb+1+mhaz+mGMGEpkVMBld3wdDfmGgo0CAPlF4efH1ppMzUm2aZ+HYQR8KMH1XOT9qjbGEnLeWcANQT0vZPpe77PQLNwLJ1zv6EtXMMrEH0s4ijUCgYEA88zCNsBtB07ayFr9r+RCfHx/X9wFkT59t2K+axIfZE02f62WWqJCZYMlZu9XAbYEQ94H43/NAL9wfA8dgnF7mKSL8stJKt0g2iPa3MluF4Gq5Y2XYEVf/EDEhP2jh8p1l+xs18rVzsQQ6b3CEU9ytmBJWvkWnwVXf+ZnsCFECXsCgYBM3YyJzXp1/nOpbFRAZGw0AytNk6xafpK29DjGDB5pS6V+kA2M0SXnMD2y2zv+oGh3fTQP4NLigga7r3eZrOlMNxm0k4+MG2wneQLarYB4sR9/aBsz5bf15qwoKbKc9gpGIN0u/RVGJai/irhOqzGn3eV/x2Jo9CC1+otLcW4NUQKBgQCOOHlnZTN1GuwICwSIkhiy9BF+AyUASLsfuquoXEcRxPUw4DugnZ0sCKhN9vsDlYHBcYmajhgyAnuE83BcgwT906eMOEhzh9G9T0NCnwLpFYxzIvkWgQHwbnv1tNyrv1CAEryf2cSGPNw87qSCYp1hhKPmPP6UP5J+mxMLrSw6dwKBgHHFweDS2tw4TNxJQjhfQOp5t9VQbQffFZAqpXGFTc4vf7XePlxIGoIpOg4ShHCKKHSy0PtsLe7QjLrdbMkyYh8oGqgNe5CYTzFFDeK6Im1DoiqNWT+YUWF/gzVRUSpo0QW+4J1hfChG2URp9KbnditXKsJ5Vh+QayHPoZwN7Kgl + peerId: 12D3KooWJ8avwNEYgR14WMWoPaeNvfEAqyNnCCP8Doimfb6JhorD + peerKey: fcg/sg0QzcK+1JUSslS7pbLu1CHCBK4lciqdAnjUG5R7iGFFpfjlYvk9Kvt6FXCP1QFDD+ALbsEw/e6SJXBpjg== + signingKey: OYgzXHbYZDouketIP3AJJ3MwmdQ/7ZepdkE1kUCnc6CLc02ua64saYnkFcoROcSgrVjrL9k8aaetWCLEXgM+kw== + encryptionKey: MIIEpAIBAAKCAQEA0/0eVsifbPXKWxGj/Upfnc7Sgv2i0f4Nd6h2ahHurxZt4+H+3MZ5fcmdBo2mrk8XArvIAl6CHxM0KnE8ZQPU7xKi8o45jibIipCaB1CfTgOtmJ8a9wZ2fwheEtbiy39Twb7Hyg71IeACmTmS3YPYX3nGAkR5/vln25r1G9K9dX5JIybhEsylvyS+w3L6noY0t7zyDQOuzX2S6VDwE4UrNJvTxM5f1ezs4z9LlbkTqPEN61K2Ji2UHyg1b2BONfIA+20hZsWwzmUdXdguMIaN0D1eTE+PSxHXU/myMBdfXeGFhNVsSaYhAm/KcPVt6oOd0gDRfuIOyT/QAeQA0VoWfwIDAQABAoIBAAZ97urrc+5rTIojbSk5mNoFVm8Kg2z44cKzVwUCjZOxFSZwalSqg1f1z6g+uEcIRwUfaQ2hhUycUvGlzBqv1lqH8JOLBXoz99o+eWkV7/r8o9lTrgi4mvJi+DaNfB6NRKxfQlEOyjUCXjIBEF1WR08NNKInJLFJRAP2p+D1QDYT3LUpVknIfrxCciBbisysx9QlS7sP9rAncUWUgn1bvYlyRmMg88EASanViQzdvrjIp6LTu2MqO5Q8mfRRcz3oK2qAuArE25KuyF/BRnMlFGDT0n4stgxCMDYw2vdJcvCsMXkfngbOsYeDBB4755vVi6NDGekDRBmI0S0//WCCqkkCgYEA8BgwhIgn//QE47Rx15F9H36msV3WPcxpSga9BBFQzKPXVij3oBxlyxTKnf/iFTIIeCvefne21R1MwOWuXavDr2tCQs322HI87DjrMKQStaf2wyn7E2So+7mW9psD5QGcQfXP0s/LoehinoChKTitWfqD1P0RX6YNQjaKYq80QG0CgYEA4ghHLE+dDkqG/08UH1L9B1Q9bWjvOiQjyrtRtnPz99xuSSH7XywxdXdPs8jCgquKRPHrEfBUd4Ry9uhqcCzjBVPx6T/J07L5wVa3ZE2g7n22DAT3eBPJ3bkeFsPV1zQzpJYnQSed/j8Zl2899242w0rUd1OeST9lvVz+uDfTlxsCgYEAokKGz5rBBa7hew4g/eHaYOWUPDxBpQQ3iArjxRL6u0JjLlyDdZabiNLlWEBth4uHw8dKF8hKLN8fVyIiZDXICw5++mz9zSvvVmnlMLtB1bjNAPqnL2UQ+wZjKwh6alNbSgyZRkyevy4xMBOYVyZxqWSvocrh6fVr8nqvrZ/gvUUCgYEAiA9nmHrMFcAzBxh5CmoQOgsxdtzFtH/ws6aSh3vBDiC4mnlEMYQOuaD6b0SYIcRU1S+yyveaQN+PvKUm/SNn/NsNMdTeDvsbcJBckJpSF33AyfdrZ/KxfzBhtl5oKMUZmSdxtby9VEBzjT6/VGQZvvEaeEHzdDAfdB+4jPe9/KUCgYBf7IhDH3+9Rrl6xQtIyErtaAWm+wQlucbMMoJgjXL6F9V6HqUer3+7OvNJQdrZiYcxHRlXynT7cN8iw59rOHQxEaNOXPwz9TS+wlvUerUHibgS1GOnLVke/NFoEi8M+B2pdo1M2x+YBdX3hi0kMYB0VtZM75uPKS9I1ZSFfLmZgQ== apiServer: listenAddrs: - 127.0.0.1:8091 tls: false nodes: - - peerId: 12D3KooWPuwdqpDQxWhD2Vh4yskx2T5VMrwdpTZLfACzgsGfQfNy + - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab address: 127.0.0.1:4430 - signingKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - encryptionKey: MIIEpAIBAAKCAQEAxnE9Htwto+2fVmonkG9/DxNre33n7kjfrZU73JcHmpKhPlRFirig5T8rs2MaTq1R72/8nGBJuSxsz1PnexI3die39pY1OFYfZCZ59LbT7uH/xHcvkVrK2n50Q41KbbGT9BEzyW+XPkKPDpTq3/igYP+yUQgoWLfMwxCCLKXDe6qUC0fuIxR80fvj3XvorB5dnAiQ01JkH4PtCV1OWT6ZpLGhzcYxsxTHozd6LdMOC7wgGhW26dOSa/vZ1t5avbewFVIz0qfqBncunb7tjO4xa3xVYaA5jBbixDQUYFjVzW7cksrrN4CFNBDBGJ8PLS80MuMg0OG0O+/Qi1mbGb2mUQIDAQABAoIBACODAD0VidVcILeGJ65hRYudHg7raSXrRJv7qMrA/EtdEh3lVsyMXb6on1lq0rphqdf/YmVZldfda1tu2G3dxK8QTIuENeHvB48Uk56HWUXWi77M1WZdqQ+QsZ2lGzymGqQCsBHMNnSd1Jv3alDKXWj+WRrHKvE1cx81RRZYU7M9cpurnF5YNjO7L+7sMxUA9uAQGbe3kDVzrygraicLYQpxSNHytName0A+k3ug0qer4I6PmZhhJykkz6MD3dz/n625HSS+X+TuTm52T2b87tL27xXmSnUK7eYWjZ1vQlP1fWmqnac6u5LApUZaRi0tTjtefSjRW4jr1q20RqOp1kECgYEA7Onh3zM9ejATsjW6WISGKiBPci0D7DUbIuGuJrdQRadlkZzmeQ/VOYAuxIQD4GnQDRhM1FyxsqiAWkJOyCLFiMmsgIEyW9/eRhF8NlCVU+DA/fxy9EagfBbVsgiSBwOex24hPXIVYlaHkLAloNoD4bpw0pQZSDWXr+xvMFNwoGsCgYEA1m3sWA/e8ZuXForaUOoJzBU9nwC79bXv2UNktsVvBlQ1o9pbjoYDcVoAPwuBVUL1UwqDNMzPdhDBKBjZmCyjS6zlYD5ZKjF2m8iTyc4QcaBCdM0iyQpSXTmrfMx+hK1aWwL1p8ssNcednp5ExSAaTyNNGVdbtddiQ6/KMPmhUzMCgYEAwDjLsUNr4BXeBTweo+9yw/9PNn5brm0wRU8C9BrMIJe/izPYs+UqxerBB2Vtl8mCqv1KaQuEika5TYJ7VVsRFvk641DwQScUu5k4RQGBB3tWWz1XL+eWEticLkVR5isDyyAKDEbiHtXCTJz/CtGZUK7rF5BeKv6AwpZ9aKJqwV0CgYEAqXDlQNURu+PR6TtBtoypvz3NmraO0GO7KvipPhAXYm3qkRa8IIxfbhPLfAYQZhpqFvuIoJFzIn2s1I2GbExhoSv3eSzrcn7xlbpSpjYSImeb/AYZhbmFSiuHCi/hjeAaNS7KhZPz1G9vaubvusFaaMyhYPP6AWA4QvpHEJpB06cCgYBqR6/7d2hQiq4MJUrBEzLwG4ijnPeq+UVLQjE598hVIj+8UhRZRRcNWVEJxfcIL1v6Bpo8XISDNVRb30T9bPGVnXvC1jutTUbXKUB1/8iXuyH3IVieobch+bGd4v7ehH/lI7vzB6hjJpFzHopfFUn4wacSQdcFi3tRAwUB/L0S/w== - types : ["tree", "file"] - - peerId: 12D3KooWBgHmDqtXH9SrZfAmwCFsD8LZhTD5dg5wkhdbqFoS8GBN + signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= + - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb address: 127.0.0.1:4431 - signingKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - encryptionKey: MIIEowIBAAKCAQEA4ltcn1AH048bMXcKOOW7/E0TZYPxL3OtcHXWHSAZjeeTA/rc45G2eaNgyY7Ji+feLtZERbXNWGFBdNp31NHDYZAYwbZmjEqTEgV4yVx7BQP3VBEzglTJaNLTf+XIJnVAEkoHS6ogjC0oXTM6paHu64EitoOCzF9zqL023swjE3HU0dm2xwsUdGnKeO5nPMso/6e3VMavkKnFmvB965ECCBujtediP4lVdIABNVtoMHCoeI5Sn+m7TKqJSyDOIEMhHT3orYUNZWVeAHE1YTM2cI5tSnDZP80CHZ674Z/bKL7Jaznmq87mVt1h9Use2EkxR07/dJuTGvFOos4jHoiR9QIDAQABAoIBAHAr8EluooI/j61CnYk2p6LPG0aaTQJD4/YwHuwOBTviP2OghKgthGzg/szDerNfMyaoveqBvoIGqCZdQTbwwE7v1qTgXA83wYwTtBitQLVqkr1RTOJQXAMbPv5Jg5czUY3+q4DejQSKOE9/XJfKGJkSRH6Hy2C2CJ3dLnzYUqWGO3t70RLT1/sC6p6w3lXdy3dKZGkoR2wva+HXQxVrP8X5HOResXgNZwgMHt9KF1QHVCcySKYiEAefEKTSdKD2fOd4FxLgp3zWpvH3jrX0zd/DqzTlFD5Ns6Ayp2sIfHVp3sn99DZZM6DauMepQKtoSCnXZ+qKhekAwNVJnsVQkSECgYEA4spY9araeFUSl4uXCUQOpCkSshYOPRYN6sBbHsx8tV2eQtCT+5SuNYmzur3c5bkiraGEab8rZfGdDL6fLxQyaqbOmN31Db5kNh/2X+sRnxkak8lsROUWQZRF9doH73FDv6ZlI3V/JicZlOUCfN5BYT+x74R4/c1YXfyuD1J9gr0CgYEA/4K4SDwZUY4bOVCmKQz0OM+RW4PAAH6LHKenTAZNTeDNFFxc2nqnzRGMEKZTDGy0kbT5mBhBHFgShXcAiKxc5/MGkpt8Jcq6Fr5KGU9aZtYKji6mwMTsUndPNQydh3vOt5pOmcuMM6ovanNTvI8k6Qo53OY1IpO5CfOROu0hm5kCgYBnWsYd92YnDsYxUEldzKlLgPhnNov4pNNk15LvP0vaL7cPRhUaw1B9T6scAKjp/GxkasZ4lsnFZM4o37qV7wNm/WwL2KN0Rv9Od1SFtBBMzFkDXvk7kJeK/XLAr0OMiLbSYZeYCFUQ4yLSa2et1nA/TJLf0CR/rhSGiMAedX6DlQKBgAx1137OT33GrFUzNacy1oYeuTv5RNfBVA9lrabrd8GggN/JUU3mRWCexnHZaptkgbnJVZKxPBuhv+V6VDBWF4HIPD3SD0/YfxK03PA3CnWRYppkdAValRvAbcBsiRIeW4pgoAyn/IJYfk92qFK9uFMVCJVZNKYnBhMSKbbx8X2hAoGBAKwvzyAImbNB+493q1R/lSayxzG76bRJ/EseiTqwIec9c4C+Bd/sVXR+Re+xZb0FI/va1bz5CrduTzLSKBmf/+0lzl0MJvWY2+SXfGYdbl4+TTyqgDDfwqW0Tj8pDimye2BneyTmXko1rF+2Sxen7kMXnJLwpqjwZ6TZJuoqeK8q - types : ["tree", "file"] - - peerId: 12D3KooWASsipDzkridiMBmE7VSqp8yZvGWPY1VqySgMSZk6tsiL + signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH + - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK address: 127.0.0.1:4432 - signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== - encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== - types : ["tree", "file"] + signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== space: gcTTL: 60 syncPeriod: 11 storage: - path: db + path: db/client/2 metric: addr: "" log: production: false defaultLevel: "" namedLevels: {} +fileStorePogreb: + path: "" diff --git a/etc/configs/cons1.yml b/etc/configs/cons1.yml index 1ff8aad4..f1103489 100755 --- a/etc/configs/cons1.yml +++ b/etc/configs/cons1.yml @@ -3,10 +3,10 @@ grpcServer: - 127.0.0.1:4530 tls: false account: - peerId: 12D3KooWPHN8pCMgVaNfjzuXhHjsacrryW7DCyicurH3uKHXCyE5 - peerKey: yHyVKOM1zEIbaHgwIAcBD/s9TmYQj6dU3dSzs5OHyBTIEpMC+jaTKKmS/5QCzgLzJFBnvayFtXwR/dH9G49M7g== - signingKey: yHyVKOM1zEIbaHgwIAcBD/s9TmYQj6dU3dSzs5OHyBTIEpMC+jaTKKmS/5QCzgLzJFBnvayFtXwR/dH9G49M7g== - encryptionKey: MIIEowIBAAKCAQEAu7C6g3bFuQb113lDuKJKa2zzeZNQxdjEQTcC5NVZkt5Qbz1cV4o1Rav0+nrMYT0mRFz6HPElUM7D1o+e/FIxrCsVnoCm4hinORhpilrR/DBXpnSTMmRyBIocaBK0T8shY4zNMYztQ0eiwkGZnxJSqi3Jk+oa7B871YIVDxzgD3AkOkTcRnFR+5SE+B+2G9qzhvRVj+LvjdEbkgnqMImZOPGsa9sSCfDrC928aSAokick4u8JqCfDnl9lYLlBYaVxGipiMayIg8TgXvUhiNWKrCoNyONHDtAKsmrTDj9DWEWtdX/h01uHrWBGq1/AVUpJ1w/5zHUYKF7kopTEskTYwQIDAQABAoIBAHhmiW817OahwWkFQF0btrOtA48U4nbYdCUFnhSfjEN724tQiIEbhsr34UIhLiSeroKiRkv0oaRxzw0/upRQQc8ZIFg6XVOizvsAXwvC8PtfI4sDMz3bU4z37/sPLJ4XR4bt1t+XcMh9FrqYjGyPu3mxv6LkRXr9Gkv/k3TLaCxd/88AlxLNquCYw5HKzZIN7XxzvYRHgn6YULSE48BewpqPPhSS5APItFyFoE9esafSBAcr54LSlwJ4X0Vee3QCxy1WZl17PzUE3M+lGvQ/gdsm+WrY5zUP0MTz4z95urknrPIP8WDXrfK+SzEXwrBvP1XVk1Sl/KKBJaAf+NMS7cECgYEAw/LEz+TuazDlsSAe1/fx9UNHQOAy5hrNIHd37uWaBUC3DszZEDqenJ6WZhtJD4DHfXwqtvXuj9Ju76YfGInFxxucg8AS4cD4+J+KfZ3p2JmYz9d+f/wPXtvG01HubV/KAPVdpDrN9QF/U+YC3W3QAw30V40X1nzgoZWMcPwjITkCgYEA9TYTh9U1oV23meaXUE8ux2ubufxy+Y/J4x57Zp77ttEU8xRTCKHAPdgm5PbMwhXTsUJEoFrH06iTkbwy9yIjJom4sl00E+p9//fEdCg8sEvpSJms6TwB6CkPsWgkwqNJDYwU5XLXd8EP16WZ83vyewZvCz5ssn7UXq0nKEtk28kCgYEAwHogSfafHDwT5EGhCpRL4JgNzfRtCwsYo+O2s7xl5vMC3k7qib6LP12obvQueEQPsXvemYpKpIwY3N9ZfEkZNdQxklmCMq/T4KUW7P3JTzLRoJgVcrKuhodsbvf0NQv66aYcLc51sU2fPVKbTdcolVeHxNibqd1Q6mh0ZCfIekECgYAsRxl7u5o1izCuD59fFw1BYUL7cIRqX/Z6lnR98VNOja6UviTIODz4beGIErCik0JojajKs9nFdHlBJZSmX3mtacz6GC5hMkSSRfEpcGKVCwAS5fz9GKLXgyKcTEvnAYkdcyAK1pPlwezUacjE2KrOYDkI9Lq3+ILsnaOmeQa7UQKBgGvHLrUvRsi04mB+TVQYwrlwRA0NNsxQTMek1UvFlpx/KN8oaDn7Aylao9zxutXP1jBH3kYmhn56/9lJpluDWJAKtBVXl9a4dh/ppC3WTAloU3+4u0aC0Mk49Hg9730S5LVozqH+q8VWiFh3qbxkrlE/4yocWvm18X5C6+kejKOh + peerId: 12D3KooWNMsLYe7L5vArsgeXouWZoR3yyyPB7mvWbVhPp6psTjyq + peerKey: 3tPwUjvQHSkMuJ22kP4BdmTDYznn/32ijYEQ/+ALvoW6XjrM4KV2Y+tDC0Rb77Htrsn3alVNo/E/dhyZd2tlGA== + signingKey: 3tPwUjvQHSkMuJ22kP4BdmTDYznn/32ijYEQ/+ALvoW6XjrM4KV2Y+tDC0Rb77Htrsn3alVNo/E/dhyZd2tlGA== + encryptionKey: MIIEowIBAAKCAQEA3KtHqztTQ5yvWF3onxT2+NVhLUErwi+TT1jXiZF4jIPXRnLZBIf3g/6RvN5uS6EzDfoSnm+oAcXFlVSsEu9aWtcR5iinVvIjdulkruzMqMM72zbXVB5QtPFxpC4/ySMjcZRyYml2b4aZ+RMl7fK03ciiyvC4Cm1PoY3Guy/95mq0Z7Kc/y5+Lvcpx+g3sgfHnspBYaPGbQdiUymZGyr0MqfmrKiwcZSLqRKOcWiIzPz72PZyTXgM2pds1FBwHpkJZTIUrHjy+CCoMKA4NzhjML2+ao5VQOhmJsWIa5PtdatqycxxYpzyTMOIV1FcigmdIQpSqhoAVKIO80l0rdhstQIDAQABAoIBAQDKXnGdgQx9JwZPXd/ldE6CKP2ziN7eeM75p5oS2UvaYVZdjxmi5CaD8EQrFznDNhQiL0I/9ln3Ni5bIomj28nbIP2TO5krTWhktunU2eleo50TDpou1JZjOkFjtd5dUVJB6Ud1JQ6ufJxcJclVDI3+Du/seRHuzgyHNgQYyoxob6IlMn8TPC9E9wJhdHGswo3k9wNstBE3KXW3XAruahqstELl5CPAjjDxwskpKMn3EMluk1cA8gKq7PnjyO8HJU4LV+JBuJ7Kgb2lVQyZzVcyM7SDPcHuCQICyRST90444iYDFK2Lzfx2qJ7wCOQoIp2sYaMS7bAydbthlIkD/JnBAoGBAN7WRiyBmxL0oJEJG+0mbvo9lJnCaWufth6T3BLY5rXf2IiPcbYsQBaDC14FhHLkt4qbFUnHeCvW8pli0Vyqiyad9EcwCAcsQg486GAD+jNfRH+wnRgOrfZ/quG9H5NkpoXhHEcRQx1JLt1K39cuJp+dGje+b+yks4OzTFQd0GN9AoGBAP2CaR/aK59+ofloH6s81tEUNlw0r1GhaI0q8rQoDuTNz0rrpc0GNJlnrO2Q1DOfJpfttJBbxpmQCTnEv2PNhI6REgJLz891Nqj7tLOMZsZdhziutG9dVpLe3SXP9arMgBtmF1n6i7nRrmNm+4aHuK2PzJEb06K1qCLlnwRUNIOZAoGAT2aaapFj6EUyUXulb8MaGCCJKqCTX73w7sRQzoZq7rNsPHygUAFEdMEM89uTbj0BCWppE3j34OceWnlTkGlUW9Y8jIEY2zVx9BDP3CaOqG9xwO31i/TvF7417WmuLp7Wly23HbuQ5oaFJGThjZLsQEOCbAp3ZyLotCzXLcHR1yECgYAIpzPpZ2wHxK3IspoqISh/+H2mhhHZ6nWEJAwmxBtGChRiTUrahbSz68sGTORBYtRRaUa5irhrs3PtKd8SjAhTSXZg56+POEQGXpkba9ZyPO0JrUTxbDExUDQiP0f2bYaN6N0xMBEm5ZZbRD+fpvBR1E+6QEXoDuVPU6Eq56jnOQKBgHfK9Y4DjjBJgSGyw0N3BfjhfevqHM4Qs0hoodI3z/90SPWG66+wfIqAC5jshSMvaH5UGB4E2DAnHcyGyK0dQ4i5OmxlLAfqAfVD9CAvVWgEhY4fQ+Io3WTzEq92fgmyIG+nVZiNFEICkHHVJIYuIwxgeY7qswIeP0oAbnUNrjTW mongo: connect: mongodb://localhost:27017/?w=majority database: consensus diff --git a/etc/configs/cons2.yml b/etc/configs/cons2.yml index 3135de05..b9afa807 100755 --- a/etc/configs/cons2.yml +++ b/etc/configs/cons2.yml @@ -3,10 +3,10 @@ grpcServer: - 127.0.0.1:4531 tls: false account: - peerId: 12D3KooWA5veToUAwEVVXV6PoR4dFH91HQZA339NZzqeT3C6mMS7 - peerKey: gGwpn8J8b1WXK3Lhaq3NnQMix+qQsHNRxAH/DUalvM0D/G9dc/GRiAu+NDtGKRc9z2YAw6HKJ5GJAfzWTMDREA== - signingKey: gGwpn8J8b1WXK3Lhaq3NnQMix+qQsHNRxAH/DUalvM0D/G9dc/GRiAu+NDtGKRc9z2YAw6HKJ5GJAfzWTMDREA== - encryptionKey: MIIEowIBAAKCAQEAw4BsTVcK6Rnt3kYtvMZ7HU3EmD6uQzjn0bqoCsFKFNOMh0x+GE4aDox6j8rEzbeNWFwkn7RI6kPuByuSxe5RPG9QP3mxoIgWc737IKx6X0K9vBc8rLTgbr/OCctQs5zfsvEYZa4sKG+mfXPh5oxNsLfAO87OiPsTEPXLYTrEGZ4GZ71HLO7EBsI8N4JvNWZVQq3bbv+S7kiXtXpI1kdfE1Nu5XZIVw3dSEWoP3X9Tp9zavLM/obwoN8IXFGqAbEKOZE9zZkqvwIVymFxqEn7bcqtkfhbvvyTpg/VSeRAQhJkhmx92QDgz8mt7d2ADan3hgqFO68qHK+VlH7D0eaMOQIDAQABAoIBAQCOG42d8kV2B2kGhxC8BbJ8LIlY+UcGihjINNvtZW8KEHQ37PxDgpIiPS7h0syXlHLj5aahiBTwZIxjHeNEiOT3/xnf6f+Z5xIa89/VckpJcGQmkuWBzMDPABEuwWFaDg/1LJdFYgOrKO1mh5OPWDEo4YiUcNFkdMz5KRG7DVJ6I0NNm2x4sRJf8KVfLiOBDX9CKEUpmXZCciUlA3PnXAiJwpYxHoTSktqMrVj7YWgUuaYB0ZQdaXTG5jPZAL7zdVP3Ub1h5Oc9i56UgP0qAo6uXhQR+Xr7wKptnQk9g27zddx7ofa8NtnDpgzMOfXvJjWsMBB8ego0rQjydUihsvLhAoGBAMree7cd/NgqXgDc8V2zusb1gZ0Ao1uvCcYmp/w7v/tUF/UOuvjYuFkHosvHEOjy3gHNrnFYcj1US3K8OFIRkp7b8TKkEL/ho01SVI9PMfczEws5K6ufBZQ+33hJ7+drOlirRQxW8lIZspL3im/CLxm9K2zSfj/oMreO0ZY5jM4dAoGBAPaz/DJOLSKzeu9LBzFjfDMhYN5N3dLHIG0dPIDYDJYyquXYIARZrOD5wWh3WahX1YyCC5bBgugRi3SG0/IaKZQg2+/X70RdLXNK5sZHxR2ZildGFFaA9ERLYy9Gq75hAGTA0dt4CA4iM90jy0Prwoya32SF+zywoMcGV3LLX0vNAoGAPQya2k5R6pNFWqkikXomuPzklmS8xDh2joTPhJ5Odcmms/5M0doWD+S2XvB27EM5//zvg/iD2GTnl42AvWHAZ8H0YbLxv2ydggVGoSHJ/YQHNRdtRuZB/Yy2HzLQ2Slxk4Fm9AGuRnqpPIT1yg/7sJk22ja1+3Fa4dY+yCBleRkCgYAU9L8Eiu18mCBmOUpYIKpJMZmn6JdiMzYG7sfX7gJLs+wecBhwJinwRmbud8zu5t8l+1n+qVt0WSEuedGBLEXB5nSoUABsHzogJAmsaCZPWF6PAU3y9ytIrdq0Bl3KYzUEWfi5mt2cTb14GHVIxLsW9ITrZhIsWpidr2U4RBxJNQKBgFl5qZd8wFwm1kv8j1BtiGMN3e9cIJlfuIm97SOuaEFSwo/QWnhLQ5QBNwIijXDx+Rx3jPPedMO/fYd8IjFdG1x+1g4XVlnCV8PMCsGFwsu3/Q4Av9q2uflsZlAc+6vdjB9uEr4jhiKd+j7f5SWpPHKCUWyeem47WSjyq3dsM7HG + peerId: 12D3KooWSNzU7m619iEC6PVnRPUqzM5XtiFX3VZekyowTAzRW4yF + peerKey: hEvfnX4IwcbH2Mqw1hI4q4xBHrlbZufPXBFq4ztz6hz2Fp7n1RsiG7MFgk6mqxLmXuB1drhlqfLZPCDYWRkoEg== + signingKey: hEvfnX4IwcbH2Mqw1hI4q4xBHrlbZufPXBFq4ztz6hz2Fp7n1RsiG7MFgk6mqxLmXuB1drhlqfLZPCDYWRkoEg== + encryptionKey: MIIEpQIBAAKCAQEA0nsJzf+y8waYqOu2jvH78q2typXTIKluz+RJ6CdRNH9CGwq2Ag7hwkYxxtr0Cq5EeI24+OAdHuJIeFQ+LLm1YE+RG+Hv/tP06kv3lk6b1jCaUVzu7y0Z+V/O4MclILMAF3gn+8K3+TFHdTfM8u3J3Hdbs2gA9y81Y/B+HXBpqnJ64E5fFFCTip+WUW+3HMyH+XC0c2JrCGdsuPQqdjIAO7HRb8us54kKP299BfKRe5FlAN4d8NliFGQVKnJiJP7RXH15Tlv3pUxMNefZFJCLFkU3oocHjs5/ykXC8PVTY7kkSpqa384ZN16ip+JWKcg+AqhWYDkiPy0mh5lFSZkO0wIDAQABAoIBAEzOXy6Pz1JFpvGFSlHxVbohzJhvgeKaUXiFWr7fkg9xHMNXbkFkAtfs238wKPu4yf2f4c7XoWjCtCVMwH97qQcjIdWl5fj8iZPx8sAjoVRQ2g80tXAL6j2Iy6pUoWTETRVDYHvLe2zwoZ3RpfVD9nSADbNzEV8iF/6HJM5DVhu/D1PQW7x/3jmI+GwnLDpDQ1UCv/xSiXqbqjZeL/+pU1L9NrSs2nPBsn1V4D6YCwRp84VgYLxaxl90wwDMhg1VBuakHLff7ZWl/BYiowCNZQQEvYRqWoeFopI7T8LjWoifIJxLWOL6ma3wgTkXPd4OQt319m5rWekUMZfUWH7bbyECgYEA6PGPuddpSC8faaP3jnKAEaBYZ6Jej6UB+PDsETB0YUruxbA/0/eSLo63mLJjgQ1BEZpuQmtj2x9qGQ6pkjwTcF9pEp1o7Hizemd1EClX6MLAATnKFlkqmCjlnVIAP5dgz0lfHMFaw1OEB7Re7UKwCYzTwuHx97lZ+Mq7ti1pOLECgYEA51BMhJ9hD9iqz7JCNuMPT7ZXdQWnky8wQ109DOOLTH2Nr9RGaojVtBVAdyU3NIWYuLcpR/Cub4WrOe6jOCGT87sCyctZxURjG1h55uO+xF+DGRZukxihC7IN982eC2qzlgqT9A76KdBDOCm6Hw8xSV0rObs19ddGYoWTtGRY4MMCgYEArdO85fhaJzSK42EpFdJZwU1/Su5+VADVRPg7oOQgpI2vOjQ4nSuMmVOEq9zKpf3HBaTRDJ1oqZZ6rPIlFevgsaVxGiP+rR+xBvF3CLVhVV8muoNuS1kEkQFLvyb26n1DD8v3vtSGr2V+C+XMRI7UIHxHdZD36F0XR7G5e8vNTjECgYEA5riAajRy4xRxY9NhGlAm4JJ274FhYXzK/hZNI8L/GZ+OKNhqGC8+QW6FK5JSWy/6YhxHr7sQsqo4XQN7iCxt38kkAdW0SABrfkYk6Tk2+bZvFCH8zvndAMZsCkTspGSclkccxm399qEFu0pbnElSFuQ4jk/+haVhTjoAVwlUYXMCgYEAyFjuNKLBDvOI3YNjKXmja8kDAi8xJSue4W2RmQoHuPXfH9VWec1cxsWMzOb20Y/9FhdhIXBumrFFaywIMh2CNEgEYpuE/cw89Nf6wMAt9p/hv1RtgwfWT2MV/VADm1teNvHjGweOS2ylvKfd01uGH63eWcmXrFP90RbGMl7zmv8= mongo: connect: mongodb://localhost:27017/?w=majority database: consensus diff --git a/etc/configs/cons3.yml b/etc/configs/cons3.yml index 318499f5..d0b3836f 100755 --- a/etc/configs/cons3.yml +++ b/etc/configs/cons3.yml @@ -3,10 +3,10 @@ grpcServer: - 127.0.0.1:4532 tls: false account: - peerId: 12D3KooWS9fMHSbogWfa2o2NLm2Y7o3SGXojn5anj5zPz1TeZDz7 - peerKey: UYx7nyuYqq2+j/t8kTZczAoXCNflp1FNW60tNUfkEtzyrHQg/MAHjYwYGhYxzQ00xsntqLsuA0FAuyR+YtVrsA== - signingKey: UYx7nyuYqq2+j/t8kTZczAoXCNflp1FNW60tNUfkEtzyrHQg/MAHjYwYGhYxzQ00xsntqLsuA0FAuyR+YtVrsA== - encryptionKey: MIIEpQIBAAKCAQEAvbd32m4jCtCVSPthnycxPmbKNnnLUn8tHNQZr5Sl2cH1MBaRBEo1DBhI9UXIqd0iprFCvTJjo6s6vWVdLAXgkGpKbuWvh1wdVuMOsq5kQ34m+XEWKXVpSkpNboUh8LdBTrk7NqvpMy9vC2aUt6bKY2zPDnRFQKFeRobfapwntWLoIhmAtBJJRbZuvc8OsFHUQRjcN4ZXLBziRcMqG0IBFPstpiXJNp4f7oB/bWGKg9yKM4vkgaIXEq5RXSvtPD+Zx1ovt4YF0vStWxxM9rEIAAK49HlCJ/aQ7+YYpFGjzjMQMVjLlH+8pcP0ZO75/DgJa1YZDiZ6ICPJ7YADTURKQwIDAQABAoIBAQCdAKRzZAoj/RJOX5sedvTNy4s1If4du5m97dmD8OSAHX+n2EUS48aax845DRNPX+45PSEaKgVDgYUPED/XGtYJLa2DsRleT+EH8shLHv9iy5e9ftT0YnJMRMln2U2JRF8Lo0dZq1NGRM8FBFO22JVNStLgB2D4Z5L5ksx6Edjaxh5wIWxs3ETihzNSZFWvh1bVXdUzC0VfxO6VuiiTN7IMAeL7DiM0/QVc8vk4BKG00XtV9KvtnGqnynpHYvWZ4xRU4GYYwDwLZFWDssLgU+3SNJCeucGrrckC1/73B5gjJ3Lq39dbr2maEdKvo6KdE8kOLQyZxTMHWdAVH6MKGmPhAoGBAOZGlR5V6P/cI8d594VHz8txEp72IsK3Y73acbdqkV4kmvQUq36oj3ObO6ZNhaH3/j+M9xw12eizh2KV512aDmywEHGXbs2FY9Flck6fMRAamOrEkGHUUDdACDyyCRtO3EQMMNndy00dPY/Q+nrwHKLfwYcfDcrJXsBVS6Zy+hFdAoGBANLo+sMU4grnp/XurIIB+3Zahzfoeo4xMiLNRDOy0nuwG23mgozZKaRnsiyxrtBQ3un3cjQS3+mggsa+N95mF6h+aNzM98ySqqByw7v7N8c7LQjon/BxonBXLi/bETLS5+cdRRXHD6QbvREtFVtD9oRZJAeLvS++BdtS1s8vOfAfAoGBANh7JHbnVusqXmyKKfsfXqcoPtQ4GsepNlhmQx+mTNEPYqjxwaOJ/Yo2NmaKXIW/KUM/V5QqwBf2puE0gdTKHqNpBZx0O5N0wjk5wLNPDwXPq1CRyBZgTaUTSmsdCFim04YZW9eFnjl5ssVANipbDuDDsCFCPWoV00DHLx5k2th1AoGBAJmwA+rb8MuZex8OyM4Du8XGufnXglbTKoGJqkUx7YcMETDIZCFWra2Lkp5W69gI1icPlTy09E0+FY3VVsjNBDhXxPoAsiF0TrmUZ2U37rFTQcHYIZQIeiH6pUFiFOpAHZSgE5OG9rLTM7asb3+Nyrkua77D6Rw9D+9+MeHPvBxpAoGAPD6fta40UAA/SB8lLmviQ4odWlbbN4AiUO/oIey6PswU2ZJllHEOY67snzhfafdT8y8pHCQQGDnPELfdB/2b/4x7Pi4+xQ6LepxMkIgBnW4zrbsokbvuZ64anCAvK8cfqqvcD4OFEdh/GlTQHGSzlQ/RGbOAuQ7GTAYlsQmb+So= + peerId: 12D3KooWMrYk1QLiE46aJBnLCfAawXJ6fVgppWp1DUNfXSiH5MxE + peerKey: 7nBRbL4urB+itm7SJ40gjPYe/N5Irunyr6qkpKqlg1Cy21w4WpuKN/TSgaDoVqxvTbReLbu27hhxEzdTrLNO0w== + signingKey: 7nBRbL4urB+itm7SJ40gjPYe/N5Irunyr6qkpKqlg1Cy21w4WpuKN/TSgaDoVqxvTbReLbu27hhxEzdTrLNO0w== + encryptionKey: MIIEpQIBAAKCAQEAvBXWnAyZ/CGX4ROQjg4xrKd2CQw8uOHJjJaB66UDawAz5TLcL2WDfHHp7Mxua6+Fy/a62xp3OBwywyYGelGzNIWPd8oR5X1SUYzKqCR/p0ThybRKeUkYnj/UvjF1UzC8NUYNWBCjaZkO4HalYpjlbf0vVDryMWow4YE/0cb+rsxdxJx2t/ThKS808rz0WsKNcZObOM8Vt7RNkIfOKsdwP8GUKx7JMPa6bkobW7FvLkmCgHMPOo2uoAkQIMZLXSB9F9RKDCSBToW0a2r9Wilo99x1t9PZLzQbAKkuM4ZYkp63rfBzRRRPOJaAj9Cb0tan2nyQkRrVJ3yqGwyFjbe/qwIDAQABAoIBAQC7fElhZG5almH/SrFd6Wg64vMWMcyVvvxZ1+3KJ8MwdhNE9V3nIRngguzbzyyCy4RjvJ6mqcsNc45mWRE7/RTV1g0dK6CLUlEsWVvqH/fflRo9JirWm7aeiKJYtJRvSLVTpXDHyE4chSX/OkXB8wdAjJERNXEXMPNo1p33TpWxRu6x8mwAIBK+YFI+SjQNuAteOT+qKAKZsyLbv+kr0tBRyHfEVdYq6RHzbtMCJ2h2P6t1vywLGTPw9rUAYSFOnsYfl+RPAmmZDF4hH4teIJIWNlfESpppAFAIrIg5+RjKVM5Bm3Ez7vx3sXDPd+aabxKoqC3nakHcRwRYJD2Pc1cBAoGBAMYkxYj1C7FkJ16R9msptdiV+aILzGkpP7WLYSX6dtQbrwe8FK7UrCwfkm9Zbyr9HOik1SEem8ePgmZktCdzGyi7mci2BEvQTzDnN3T6aTG8808jP7X3Apgxw7ENhuNbxtygJdNZC3Szrvz7NS7bcD/SYsSJ7dNEn7StUZjGrf4zAoGBAPMBNOwvFQCALNPQFIY2tTStL6TlIJgcIfhUhF9pcwv6V9syOxepWe3v6d5aL0ooXU+59/V3pytNzc2SGeiKB0EuRye2Z7b79riBw+EqOMj6jG1DX8n8FfNhX++8mH7LMsxbcAN9jucIZHCUQm6WYedHwq6vvc5CYbCmsJ6z6VCpAoGABzhHylnDd09C7/s5k2YNrjqowfLUG/DY1XCitZOOyOPJWOrNhiFRtLnhyBTmLBbU+tUmvvIyku7zvW9l8RoMn0tWqy2WsnyApjOGnciSFLHh27xZEfRSL+GAU+8+PwKVGGztc+oGtNXnRmiQ44gzat/roWW1OMGDYD4AfySeKmkCgYEA4c62Qd7CUlPI1A6gc9M0cT2Zb03nCtHhkyPeWdbgLDo2F57GoIci5OIyXQdKuEtn4iT6UCQeuDO1URg5cQeKFDyPrExodfYO3obe4UXdvIxtnz6jLUtNjnpmrpx+zBvAGXvCS8wJ1Y/L3X03ehHN6h+Zvb/azWaL5p4Os3qVDPkCgYEAkwlmHO1BjozslDlY+GqhxOTWZ3lKR/B3C/QttmK9iBdRDc0A8Yj/TJteOgBkGxGKRz+1Z9JS+CTIY6/TVvib4NDLIZiomO+zIMrn4m5O77YnupIWwxoOf9MHPmQJaMQuPyxoon7eUL29rEmz0sYZMI8/QrACqPqTDyEcl4YJreQ= mongo: connect: mongodb://localhost:27017/?w=majority database: consensus diff --git a/etc/configs/node1.yml b/etc/configs/node1.yml index 4a5d73c6..d15215d7 100755 --- a/etc/configs/node1.yml +++ b/etc/configs/node1.yml @@ -5,38 +5,37 @@ grpcServer: - 127.0.0.1:4430 tls: false account: - peerId: 12D3KooWPuwdqpDQxWhD2Vh4yskx2T5VMrwdpTZLfACzgsGfQfNy - peerKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - signingKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - encryptionKey: MIIEpAIBAAKCAQEAxnE9Htwto+2fVmonkG9/DxNre33n7kjfrZU73JcHmpKhPlRFirig5T8rs2MaTq1R72/8nGBJuSxsz1PnexI3die39pY1OFYfZCZ59LbT7uH/xHcvkVrK2n50Q41KbbGT9BEzyW+XPkKPDpTq3/igYP+yUQgoWLfMwxCCLKXDe6qUC0fuIxR80fvj3XvorB5dnAiQ01JkH4PtCV1OWT6ZpLGhzcYxsxTHozd6LdMOC7wgGhW26dOSa/vZ1t5avbewFVIz0qfqBncunb7tjO4xa3xVYaA5jBbixDQUYFjVzW7cksrrN4CFNBDBGJ8PLS80MuMg0OG0O+/Qi1mbGb2mUQIDAQABAoIBACODAD0VidVcILeGJ65hRYudHg7raSXrRJv7qMrA/EtdEh3lVsyMXb6on1lq0rphqdf/YmVZldfda1tu2G3dxK8QTIuENeHvB48Uk56HWUXWi77M1WZdqQ+QsZ2lGzymGqQCsBHMNnSd1Jv3alDKXWj+WRrHKvE1cx81RRZYU7M9cpurnF5YNjO7L+7sMxUA9uAQGbe3kDVzrygraicLYQpxSNHytName0A+k3ug0qer4I6PmZhhJykkz6MD3dz/n625HSS+X+TuTm52T2b87tL27xXmSnUK7eYWjZ1vQlP1fWmqnac6u5LApUZaRi0tTjtefSjRW4jr1q20RqOp1kECgYEA7Onh3zM9ejATsjW6WISGKiBPci0D7DUbIuGuJrdQRadlkZzmeQ/VOYAuxIQD4GnQDRhM1FyxsqiAWkJOyCLFiMmsgIEyW9/eRhF8NlCVU+DA/fxy9EagfBbVsgiSBwOex24hPXIVYlaHkLAloNoD4bpw0pQZSDWXr+xvMFNwoGsCgYEA1m3sWA/e8ZuXForaUOoJzBU9nwC79bXv2UNktsVvBlQ1o9pbjoYDcVoAPwuBVUL1UwqDNMzPdhDBKBjZmCyjS6zlYD5ZKjF2m8iTyc4QcaBCdM0iyQpSXTmrfMx+hK1aWwL1p8ssNcednp5ExSAaTyNNGVdbtddiQ6/KMPmhUzMCgYEAwDjLsUNr4BXeBTweo+9yw/9PNn5brm0wRU8C9BrMIJe/izPYs+UqxerBB2Vtl8mCqv1KaQuEika5TYJ7VVsRFvk641DwQScUu5k4RQGBB3tWWz1XL+eWEticLkVR5isDyyAKDEbiHtXCTJz/CtGZUK7rF5BeKv6AwpZ9aKJqwV0CgYEAqXDlQNURu+PR6TtBtoypvz3NmraO0GO7KvipPhAXYm3qkRa8IIxfbhPLfAYQZhpqFvuIoJFzIn2s1I2GbExhoSv3eSzrcn7xlbpSpjYSImeb/AYZhbmFSiuHCi/hjeAaNS7KhZPz1G9vaubvusFaaMyhYPP6AWA4QvpHEJpB06cCgYBqR6/7d2hQiq4MJUrBEzLwG4ijnPeq+UVLQjE598hVIj+8UhRZRRcNWVEJxfcIL1v6Bpo8XISDNVRb30T9bPGVnXvC1jutTUbXKUB1/8iXuyH3IVieobch+bGd4v7ehH/lI7vzB6hjJpFzHopfFUn4wacSQdcFi3tRAwUB/L0S/w== + peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab + peerKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= apiServer: listenAddrs: - 127.0.0.1:8080 tls: false nodes: - - peerId: 12D3KooWPuwdqpDQxWhD2Vh4yskx2T5VMrwdpTZLfACzgsGfQfNy + - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab address: 127.0.0.1:4430 - signingKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - encryptionKey: MIIEpAIBAAKCAQEAxnE9Htwto+2fVmonkG9/DxNre33n7kjfrZU73JcHmpKhPlRFirig5T8rs2MaTq1R72/8nGBJuSxsz1PnexI3die39pY1OFYfZCZ59LbT7uH/xHcvkVrK2n50Q41KbbGT9BEzyW+XPkKPDpTq3/igYP+yUQgoWLfMwxCCLKXDe6qUC0fuIxR80fvj3XvorB5dnAiQ01JkH4PtCV1OWT6ZpLGhzcYxsxTHozd6LdMOC7wgGhW26dOSa/vZ1t5avbewFVIz0qfqBncunb7tjO4xa3xVYaA5jBbixDQUYFjVzW7cksrrN4CFNBDBGJ8PLS80MuMg0OG0O+/Qi1mbGb2mUQIDAQABAoIBACODAD0VidVcILeGJ65hRYudHg7raSXrRJv7qMrA/EtdEh3lVsyMXb6on1lq0rphqdf/YmVZldfda1tu2G3dxK8QTIuENeHvB48Uk56HWUXWi77M1WZdqQ+QsZ2lGzymGqQCsBHMNnSd1Jv3alDKXWj+WRrHKvE1cx81RRZYU7M9cpurnF5YNjO7L+7sMxUA9uAQGbe3kDVzrygraicLYQpxSNHytName0A+k3ug0qer4I6PmZhhJykkz6MD3dz/n625HSS+X+TuTm52T2b87tL27xXmSnUK7eYWjZ1vQlP1fWmqnac6u5LApUZaRi0tTjtefSjRW4jr1q20RqOp1kECgYEA7Onh3zM9ejATsjW6WISGKiBPci0D7DUbIuGuJrdQRadlkZzmeQ/VOYAuxIQD4GnQDRhM1FyxsqiAWkJOyCLFiMmsgIEyW9/eRhF8NlCVU+DA/fxy9EagfBbVsgiSBwOex24hPXIVYlaHkLAloNoD4bpw0pQZSDWXr+xvMFNwoGsCgYEA1m3sWA/e8ZuXForaUOoJzBU9nwC79bXv2UNktsVvBlQ1o9pbjoYDcVoAPwuBVUL1UwqDNMzPdhDBKBjZmCyjS6zlYD5ZKjF2m8iTyc4QcaBCdM0iyQpSXTmrfMx+hK1aWwL1p8ssNcednp5ExSAaTyNNGVdbtddiQ6/KMPmhUzMCgYEAwDjLsUNr4BXeBTweo+9yw/9PNn5brm0wRU8C9BrMIJe/izPYs+UqxerBB2Vtl8mCqv1KaQuEika5TYJ7VVsRFvk641DwQScUu5k4RQGBB3tWWz1XL+eWEticLkVR5isDyyAKDEbiHtXCTJz/CtGZUK7rF5BeKv6AwpZ9aKJqwV0CgYEAqXDlQNURu+PR6TtBtoypvz3NmraO0GO7KvipPhAXYm3qkRa8IIxfbhPLfAYQZhpqFvuIoJFzIn2s1I2GbExhoSv3eSzrcn7xlbpSpjYSImeb/AYZhbmFSiuHCi/hjeAaNS7KhZPz1G9vaubvusFaaMyhYPP6AWA4QvpHEJpB06cCgYBqR6/7d2hQiq4MJUrBEzLwG4ijnPeq+UVLQjE598hVIj+8UhRZRRcNWVEJxfcIL1v6Bpo8XISDNVRb30T9bPGVnXvC1jutTUbXKUB1/8iXuyH3IVieobch+bGd4v7ehH/lI7vzB6hjJpFzHopfFUn4wacSQdcFi3tRAwUB/L0S/w== - types : ["tree", "file"] - - peerId: 12D3KooWBgHmDqtXH9SrZfAmwCFsD8LZhTD5dg5wkhdbqFoS8GBN + signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= + - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb address: 127.0.0.1:4431 - signingKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - encryptionKey: MIIEowIBAAKCAQEA4ltcn1AH048bMXcKOOW7/E0TZYPxL3OtcHXWHSAZjeeTA/rc45G2eaNgyY7Ji+feLtZERbXNWGFBdNp31NHDYZAYwbZmjEqTEgV4yVx7BQP3VBEzglTJaNLTf+XIJnVAEkoHS6ogjC0oXTM6paHu64EitoOCzF9zqL023swjE3HU0dm2xwsUdGnKeO5nPMso/6e3VMavkKnFmvB965ECCBujtediP4lVdIABNVtoMHCoeI5Sn+m7TKqJSyDOIEMhHT3orYUNZWVeAHE1YTM2cI5tSnDZP80CHZ674Z/bKL7Jaznmq87mVt1h9Use2EkxR07/dJuTGvFOos4jHoiR9QIDAQABAoIBAHAr8EluooI/j61CnYk2p6LPG0aaTQJD4/YwHuwOBTviP2OghKgthGzg/szDerNfMyaoveqBvoIGqCZdQTbwwE7v1qTgXA83wYwTtBitQLVqkr1RTOJQXAMbPv5Jg5czUY3+q4DejQSKOE9/XJfKGJkSRH6Hy2C2CJ3dLnzYUqWGO3t70RLT1/sC6p6w3lXdy3dKZGkoR2wva+HXQxVrP8X5HOResXgNZwgMHt9KF1QHVCcySKYiEAefEKTSdKD2fOd4FxLgp3zWpvH3jrX0zd/DqzTlFD5Ns6Ayp2sIfHVp3sn99DZZM6DauMepQKtoSCnXZ+qKhekAwNVJnsVQkSECgYEA4spY9araeFUSl4uXCUQOpCkSshYOPRYN6sBbHsx8tV2eQtCT+5SuNYmzur3c5bkiraGEab8rZfGdDL6fLxQyaqbOmN31Db5kNh/2X+sRnxkak8lsROUWQZRF9doH73FDv6ZlI3V/JicZlOUCfN5BYT+x74R4/c1YXfyuD1J9gr0CgYEA/4K4SDwZUY4bOVCmKQz0OM+RW4PAAH6LHKenTAZNTeDNFFxc2nqnzRGMEKZTDGy0kbT5mBhBHFgShXcAiKxc5/MGkpt8Jcq6Fr5KGU9aZtYKji6mwMTsUndPNQydh3vOt5pOmcuMM6ovanNTvI8k6Qo53OY1IpO5CfOROu0hm5kCgYBnWsYd92YnDsYxUEldzKlLgPhnNov4pNNk15LvP0vaL7cPRhUaw1B9T6scAKjp/GxkasZ4lsnFZM4o37qV7wNm/WwL2KN0Rv9Od1SFtBBMzFkDXvk7kJeK/XLAr0OMiLbSYZeYCFUQ4yLSa2et1nA/TJLf0CR/rhSGiMAedX6DlQKBgAx1137OT33GrFUzNacy1oYeuTv5RNfBVA9lrabrd8GggN/JUU3mRWCexnHZaptkgbnJVZKxPBuhv+V6VDBWF4HIPD3SD0/YfxK03PA3CnWRYppkdAValRvAbcBsiRIeW4pgoAyn/IJYfk92qFK9uFMVCJVZNKYnBhMSKbbx8X2hAoGBAKwvzyAImbNB+493q1R/lSayxzG76bRJ/EseiTqwIec9c4C+Bd/sVXR+Re+xZb0FI/va1bz5CrduTzLSKBmf/+0lzl0MJvWY2+SXfGYdbl4+TTyqgDDfwqW0Tj8pDimye2BneyTmXko1rF+2Sxen7kMXnJLwpqjwZ6TZJuoqeK8q - types : ["tree", "file"] - - peerId: 12D3KooWASsipDzkridiMBmE7VSqp8yZvGWPY1VqySgMSZk6tsiL + signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH + - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK address: 127.0.0.1:4432 - signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== - encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== - types : ["tree", "file"] + signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== space: gcTTL: 60 syncPeriod: 11 storage: - path: db + path: db/node/1/data metric: addr: "" log: production: false defaultLevel: "" namedLevels: {} +fileStorePogreb: + path: db/node/1/files diff --git a/etc/configs/node2.yml b/etc/configs/node2.yml index 93a21d53..6e8fed30 100755 --- a/etc/configs/node2.yml +++ b/etc/configs/node2.yml @@ -5,38 +5,37 @@ grpcServer: - 127.0.0.1:4431 tls: false account: - peerId: 12D3KooWBgHmDqtXH9SrZfAmwCFsD8LZhTD5dg5wkhdbqFoS8GBN - peerKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - signingKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - encryptionKey: MIIEowIBAAKCAQEA4ltcn1AH048bMXcKOOW7/E0TZYPxL3OtcHXWHSAZjeeTA/rc45G2eaNgyY7Ji+feLtZERbXNWGFBdNp31NHDYZAYwbZmjEqTEgV4yVx7BQP3VBEzglTJaNLTf+XIJnVAEkoHS6ogjC0oXTM6paHu64EitoOCzF9zqL023swjE3HU0dm2xwsUdGnKeO5nPMso/6e3VMavkKnFmvB965ECCBujtediP4lVdIABNVtoMHCoeI5Sn+m7TKqJSyDOIEMhHT3orYUNZWVeAHE1YTM2cI5tSnDZP80CHZ674Z/bKL7Jaznmq87mVt1h9Use2EkxR07/dJuTGvFOos4jHoiR9QIDAQABAoIBAHAr8EluooI/j61CnYk2p6LPG0aaTQJD4/YwHuwOBTviP2OghKgthGzg/szDerNfMyaoveqBvoIGqCZdQTbwwE7v1qTgXA83wYwTtBitQLVqkr1RTOJQXAMbPv5Jg5czUY3+q4DejQSKOE9/XJfKGJkSRH6Hy2C2CJ3dLnzYUqWGO3t70RLT1/sC6p6w3lXdy3dKZGkoR2wva+HXQxVrP8X5HOResXgNZwgMHt9KF1QHVCcySKYiEAefEKTSdKD2fOd4FxLgp3zWpvH3jrX0zd/DqzTlFD5Ns6Ayp2sIfHVp3sn99DZZM6DauMepQKtoSCnXZ+qKhekAwNVJnsVQkSECgYEA4spY9araeFUSl4uXCUQOpCkSshYOPRYN6sBbHsx8tV2eQtCT+5SuNYmzur3c5bkiraGEab8rZfGdDL6fLxQyaqbOmN31Db5kNh/2X+sRnxkak8lsROUWQZRF9doH73FDv6ZlI3V/JicZlOUCfN5BYT+x74R4/c1YXfyuD1J9gr0CgYEA/4K4SDwZUY4bOVCmKQz0OM+RW4PAAH6LHKenTAZNTeDNFFxc2nqnzRGMEKZTDGy0kbT5mBhBHFgShXcAiKxc5/MGkpt8Jcq6Fr5KGU9aZtYKji6mwMTsUndPNQydh3vOt5pOmcuMM6ovanNTvI8k6Qo53OY1IpO5CfOROu0hm5kCgYBnWsYd92YnDsYxUEldzKlLgPhnNov4pNNk15LvP0vaL7cPRhUaw1B9T6scAKjp/GxkasZ4lsnFZM4o37qV7wNm/WwL2KN0Rv9Od1SFtBBMzFkDXvk7kJeK/XLAr0OMiLbSYZeYCFUQ4yLSa2et1nA/TJLf0CR/rhSGiMAedX6DlQKBgAx1137OT33GrFUzNacy1oYeuTv5RNfBVA9lrabrd8GggN/JUU3mRWCexnHZaptkgbnJVZKxPBuhv+V6VDBWF4HIPD3SD0/YfxK03PA3CnWRYppkdAValRvAbcBsiRIeW4pgoAyn/IJYfk92qFK9uFMVCJVZNKYnBhMSKbbx8X2hAoGBAKwvzyAImbNB+493q1R/lSayxzG76bRJ/EseiTqwIec9c4C+Bd/sVXR+Re+xZb0FI/va1bz5CrduTzLSKBmf/+0lzl0MJvWY2+SXfGYdbl4+TTyqgDDfwqW0Tj8pDimye2BneyTmXko1rF+2Sxen7kMXnJLwpqjwZ6TZJuoqeK8q + peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb + peerKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH apiServer: listenAddrs: - 127.0.0.1:8081 tls: false nodes: - - peerId: 12D3KooWPuwdqpDQxWhD2Vh4yskx2T5VMrwdpTZLfACzgsGfQfNy + - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab address: 127.0.0.1:4430 - signingKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - encryptionKey: MIIEpAIBAAKCAQEAxnE9Htwto+2fVmonkG9/DxNre33n7kjfrZU73JcHmpKhPlRFirig5T8rs2MaTq1R72/8nGBJuSxsz1PnexI3die39pY1OFYfZCZ59LbT7uH/xHcvkVrK2n50Q41KbbGT9BEzyW+XPkKPDpTq3/igYP+yUQgoWLfMwxCCLKXDe6qUC0fuIxR80fvj3XvorB5dnAiQ01JkH4PtCV1OWT6ZpLGhzcYxsxTHozd6LdMOC7wgGhW26dOSa/vZ1t5avbewFVIz0qfqBncunb7tjO4xa3xVYaA5jBbixDQUYFjVzW7cksrrN4CFNBDBGJ8PLS80MuMg0OG0O+/Qi1mbGb2mUQIDAQABAoIBACODAD0VidVcILeGJ65hRYudHg7raSXrRJv7qMrA/EtdEh3lVsyMXb6on1lq0rphqdf/YmVZldfda1tu2G3dxK8QTIuENeHvB48Uk56HWUXWi77M1WZdqQ+QsZ2lGzymGqQCsBHMNnSd1Jv3alDKXWj+WRrHKvE1cx81RRZYU7M9cpurnF5YNjO7L+7sMxUA9uAQGbe3kDVzrygraicLYQpxSNHytName0A+k3ug0qer4I6PmZhhJykkz6MD3dz/n625HSS+X+TuTm52T2b87tL27xXmSnUK7eYWjZ1vQlP1fWmqnac6u5LApUZaRi0tTjtefSjRW4jr1q20RqOp1kECgYEA7Onh3zM9ejATsjW6WISGKiBPci0D7DUbIuGuJrdQRadlkZzmeQ/VOYAuxIQD4GnQDRhM1FyxsqiAWkJOyCLFiMmsgIEyW9/eRhF8NlCVU+DA/fxy9EagfBbVsgiSBwOex24hPXIVYlaHkLAloNoD4bpw0pQZSDWXr+xvMFNwoGsCgYEA1m3sWA/e8ZuXForaUOoJzBU9nwC79bXv2UNktsVvBlQ1o9pbjoYDcVoAPwuBVUL1UwqDNMzPdhDBKBjZmCyjS6zlYD5ZKjF2m8iTyc4QcaBCdM0iyQpSXTmrfMx+hK1aWwL1p8ssNcednp5ExSAaTyNNGVdbtddiQ6/KMPmhUzMCgYEAwDjLsUNr4BXeBTweo+9yw/9PNn5brm0wRU8C9BrMIJe/izPYs+UqxerBB2Vtl8mCqv1KaQuEika5TYJ7VVsRFvk641DwQScUu5k4RQGBB3tWWz1XL+eWEticLkVR5isDyyAKDEbiHtXCTJz/CtGZUK7rF5BeKv6AwpZ9aKJqwV0CgYEAqXDlQNURu+PR6TtBtoypvz3NmraO0GO7KvipPhAXYm3qkRa8IIxfbhPLfAYQZhpqFvuIoJFzIn2s1I2GbExhoSv3eSzrcn7xlbpSpjYSImeb/AYZhbmFSiuHCi/hjeAaNS7KhZPz1G9vaubvusFaaMyhYPP6AWA4QvpHEJpB06cCgYBqR6/7d2hQiq4MJUrBEzLwG4ijnPeq+UVLQjE598hVIj+8UhRZRRcNWVEJxfcIL1v6Bpo8XISDNVRb30T9bPGVnXvC1jutTUbXKUB1/8iXuyH3IVieobch+bGd4v7ehH/lI7vzB6hjJpFzHopfFUn4wacSQdcFi3tRAwUB/L0S/w== - types : ["tree", "file"] - - peerId: 12D3KooWBgHmDqtXH9SrZfAmwCFsD8LZhTD5dg5wkhdbqFoS8GBN + signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= + - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb address: 127.0.0.1:4431 - signingKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - encryptionKey: MIIEowIBAAKCAQEA4ltcn1AH048bMXcKOOW7/E0TZYPxL3OtcHXWHSAZjeeTA/rc45G2eaNgyY7Ji+feLtZERbXNWGFBdNp31NHDYZAYwbZmjEqTEgV4yVx7BQP3VBEzglTJaNLTf+XIJnVAEkoHS6ogjC0oXTM6paHu64EitoOCzF9zqL023swjE3HU0dm2xwsUdGnKeO5nPMso/6e3VMavkKnFmvB965ECCBujtediP4lVdIABNVtoMHCoeI5Sn+m7TKqJSyDOIEMhHT3orYUNZWVeAHE1YTM2cI5tSnDZP80CHZ674Z/bKL7Jaznmq87mVt1h9Use2EkxR07/dJuTGvFOos4jHoiR9QIDAQABAoIBAHAr8EluooI/j61CnYk2p6LPG0aaTQJD4/YwHuwOBTviP2OghKgthGzg/szDerNfMyaoveqBvoIGqCZdQTbwwE7v1qTgXA83wYwTtBitQLVqkr1RTOJQXAMbPv5Jg5czUY3+q4DejQSKOE9/XJfKGJkSRH6Hy2C2CJ3dLnzYUqWGO3t70RLT1/sC6p6w3lXdy3dKZGkoR2wva+HXQxVrP8X5HOResXgNZwgMHt9KF1QHVCcySKYiEAefEKTSdKD2fOd4FxLgp3zWpvH3jrX0zd/DqzTlFD5Ns6Ayp2sIfHVp3sn99DZZM6DauMepQKtoSCnXZ+qKhekAwNVJnsVQkSECgYEA4spY9araeFUSl4uXCUQOpCkSshYOPRYN6sBbHsx8tV2eQtCT+5SuNYmzur3c5bkiraGEab8rZfGdDL6fLxQyaqbOmN31Db5kNh/2X+sRnxkak8lsROUWQZRF9doH73FDv6ZlI3V/JicZlOUCfN5BYT+x74R4/c1YXfyuD1J9gr0CgYEA/4K4SDwZUY4bOVCmKQz0OM+RW4PAAH6LHKenTAZNTeDNFFxc2nqnzRGMEKZTDGy0kbT5mBhBHFgShXcAiKxc5/MGkpt8Jcq6Fr5KGU9aZtYKji6mwMTsUndPNQydh3vOt5pOmcuMM6ovanNTvI8k6Qo53OY1IpO5CfOROu0hm5kCgYBnWsYd92YnDsYxUEldzKlLgPhnNov4pNNk15LvP0vaL7cPRhUaw1B9T6scAKjp/GxkasZ4lsnFZM4o37qV7wNm/WwL2KN0Rv9Od1SFtBBMzFkDXvk7kJeK/XLAr0OMiLbSYZeYCFUQ4yLSa2et1nA/TJLf0CR/rhSGiMAedX6DlQKBgAx1137OT33GrFUzNacy1oYeuTv5RNfBVA9lrabrd8GggN/JUU3mRWCexnHZaptkgbnJVZKxPBuhv+V6VDBWF4HIPD3SD0/YfxK03PA3CnWRYppkdAValRvAbcBsiRIeW4pgoAyn/IJYfk92qFK9uFMVCJVZNKYnBhMSKbbx8X2hAoGBAKwvzyAImbNB+493q1R/lSayxzG76bRJ/EseiTqwIec9c4C+Bd/sVXR+Re+xZb0FI/va1bz5CrduTzLSKBmf/+0lzl0MJvWY2+SXfGYdbl4+TTyqgDDfwqW0Tj8pDimye2BneyTmXko1rF+2Sxen7kMXnJLwpqjwZ6TZJuoqeK8q - types : ["tree", "file"] - - peerId: 12D3KooWASsipDzkridiMBmE7VSqp8yZvGWPY1VqySgMSZk6tsiL + signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH + - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK address: 127.0.0.1:4432 - signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== - encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== - types : ["tree", "file"] + signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== space: gcTTL: 60 syncPeriod: 11 storage: - path: db + path: db/node/2/data metric: addr: "" log: production: false defaultLevel: "" namedLevels: {} +fileStorePogreb: + path: db/node/2/files diff --git a/etc/configs/node3.yml b/etc/configs/node3.yml index 5e678b80..63d8dc79 100755 --- a/etc/configs/node3.yml +++ b/etc/configs/node3.yml @@ -5,38 +5,37 @@ grpcServer: - 127.0.0.1:4432 tls: false account: - peerId: 12D3KooWASsipDzkridiMBmE7VSqp8yZvGWPY1VqySgMSZk6tsiL - peerKey: /6+uYFwFf9nU6fvXQVtpHhjd8+v4dXc7esZzqkhjyfMJWlMiZOtQeb913FXofD5f20WksU0l6i22B09sFFYwDQ== - signingKey: /6+uYFwFf9nU6fvXQVtpHhjd8+v4dXc7esZzqkhjyfMJWlMiZOtQeb913FXofD5f20WksU0l6i22B09sFFYwDQ== - encryptionKey: MIIEogIBAAKCAQEAwCy84lzkxtzgn4ixGm0LSUTujOBpOh9m7XDoDPZnMTmExdOe9a5v/LXzdlCOCuBvK5u1T3ALBJMA3Zgvjv/jPRQUdiHprP3sbdfc6IgZPBFdLKFTc9yAA7GMbI4y7LhGMLGOMOqQXs+DOeImfmxEs3ykLXHKNas5ORnZPVnB6E9Qod8KH7UyMmBjQkOZYOOw10X4JZiU6xJp/E+VVWcmeXgNBbj5xOWMSzM+hhoA4wNOzBxACucaKDmqD6qugzebOqyUVSzFnEbquro+MYTWYdUDjZTXdvxgUUo80MGQ164gZhkFUKrmSpUvu3YErFySEGqAdFNwOZ6y/4X3s0BHvQIDAQABAoIBAAZiNhAK5+qXMbr67m8jSimv6YCyf6xXmLKwenTbxofDEl8D7ZbZqYyqeqDmgiFoXSkErhwqa6NGQtQZlxLX+zNvNFLMQ5fkg3MOpZ7vzm7JYN/3p+8EVxhIUJLWkmh8opBBhaioUg1kNUa59W9jp1CTBl0gF4h63JbB/g5kqeVOllUw7J1igAoaX36nOJGOwIynCWdizhDhgyjR4OcYfOLwcPDJueKTc5vM10g3LuMSK/sJmaD3TkJFPtDHw+RMW6wqyjsnkrg2D2oohXEyGWYYIXo2so4HCez0AB1I1JAxtVnRPvSIp7xLMm7+AkDoq12QYDHfxZtDTpfmvJg+Sn0CgYEAxCd+oribtdQW+JUctjsDbSQX5CeRISH5Ith3jveBx2jKIqQVnoVPz6URHOvnlIsqYYLANB8B3JHMWfR2UmkK11x0OcZecB06+oBoCZukvSXF+GqVHzLAQUxaoEBDCCPneskj5w+riMWBiiGDp32rUnkqv0nh7dnH+GfORcJ44L8CgYEA+s5s5EALj1jyU9w4+HVUyVsIrUitFnQg6qw/Td3Kj+8CXImKlS+rlmbQv0m1aOcvtFjQRIjjzZJAf/ausfAME+MayoNODgZsDk5RyDKuSWzMLvZLAa1LD52Uli5Pg8KtpzKVTn4xE1MbjsQcUNhFRAgrNEKNyuzXzdp4uXgGOoMCgYASXwiTQOsEepq0KXMI9jn57Nl3+uSyz7W/t7pq329+N6hG2ktUD3RMJE+X/9gup2IOw+owd377I4SaIDU8vq3PQc944cVShspRT9lunO8u7+y8uW7B/0TWWMpcG+irSIGTlGcSavtL0gOx5jWoaDK1hLemNss8NZtu/nnpOq+LjQKBgDisVozJMBOHPNLYS4NROAR77p0BdCNDwIBmxbM5r+EQWA9DAS6u4+4Lc5YV+MkonG37N6yU5iz4pFyGCHmqzX/c7JvgSc3/g4FED1TWpu1uiUD/ZHmPiAuSRxYchtk2L3k9g+GFwF8mg26iP+fAxv4VfnXDqDi3hhg9CtSWG4ozAoGAOWZXlFKqzGAfcucIe54FVQnweXG9sEuIPAvWvVRs4406ggNmL5eHccXpPHWTgetsr2TYMqPTDVMRmhBzSkyrYgk+b2tme79HPzTWs2Yg/pzjOfTgw7MBX/KlvOW5/J+dvrF3Gx8AHHZ9QQdYqi/MS1NKb2K3IbD0/m5gL5Pwi6A= + peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK + peerKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== apiServer: listenAddrs: - 127.0.0.1:8082 tls: false nodes: - - peerId: 12D3KooWPuwdqpDQxWhD2Vh4yskx2T5VMrwdpTZLfACzgsGfQfNy + - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab address: 127.0.0.1:4430 - signingKey: yOEpD2+cPldXc2urGuU+szunm7fddRa8xew2uVjaxifRcVzNKhSERpOefjrXaky7PcKmSmTsH/5ZFtcrh1uzqg== - encryptionKey: MIIEpAIBAAKCAQEAxnE9Htwto+2fVmonkG9/DxNre33n7kjfrZU73JcHmpKhPlRFirig5T8rs2MaTq1R72/8nGBJuSxsz1PnexI3die39pY1OFYfZCZ59LbT7uH/xHcvkVrK2n50Q41KbbGT9BEzyW+XPkKPDpTq3/igYP+yUQgoWLfMwxCCLKXDe6qUC0fuIxR80fvj3XvorB5dnAiQ01JkH4PtCV1OWT6ZpLGhzcYxsxTHozd6LdMOC7wgGhW26dOSa/vZ1t5avbewFVIz0qfqBncunb7tjO4xa3xVYaA5jBbixDQUYFjVzW7cksrrN4CFNBDBGJ8PLS80MuMg0OG0O+/Qi1mbGb2mUQIDAQABAoIBACODAD0VidVcILeGJ65hRYudHg7raSXrRJv7qMrA/EtdEh3lVsyMXb6on1lq0rphqdf/YmVZldfda1tu2G3dxK8QTIuENeHvB48Uk56HWUXWi77M1WZdqQ+QsZ2lGzymGqQCsBHMNnSd1Jv3alDKXWj+WRrHKvE1cx81RRZYU7M9cpurnF5YNjO7L+7sMxUA9uAQGbe3kDVzrygraicLYQpxSNHytName0A+k3ug0qer4I6PmZhhJykkz6MD3dz/n625HSS+X+TuTm52T2b87tL27xXmSnUK7eYWjZ1vQlP1fWmqnac6u5LApUZaRi0tTjtefSjRW4jr1q20RqOp1kECgYEA7Onh3zM9ejATsjW6WISGKiBPci0D7DUbIuGuJrdQRadlkZzmeQ/VOYAuxIQD4GnQDRhM1FyxsqiAWkJOyCLFiMmsgIEyW9/eRhF8NlCVU+DA/fxy9EagfBbVsgiSBwOex24hPXIVYlaHkLAloNoD4bpw0pQZSDWXr+xvMFNwoGsCgYEA1m3sWA/e8ZuXForaUOoJzBU9nwC79bXv2UNktsVvBlQ1o9pbjoYDcVoAPwuBVUL1UwqDNMzPdhDBKBjZmCyjS6zlYD5ZKjF2m8iTyc4QcaBCdM0iyQpSXTmrfMx+hK1aWwL1p8ssNcednp5ExSAaTyNNGVdbtddiQ6/KMPmhUzMCgYEAwDjLsUNr4BXeBTweo+9yw/9PNn5brm0wRU8C9BrMIJe/izPYs+UqxerBB2Vtl8mCqv1KaQuEika5TYJ7VVsRFvk641DwQScUu5k4RQGBB3tWWz1XL+eWEticLkVR5isDyyAKDEbiHtXCTJz/CtGZUK7rF5BeKv6AwpZ9aKJqwV0CgYEAqXDlQNURu+PR6TtBtoypvz3NmraO0GO7KvipPhAXYm3qkRa8IIxfbhPLfAYQZhpqFvuIoJFzIn2s1I2GbExhoSv3eSzrcn7xlbpSpjYSImeb/AYZhbmFSiuHCi/hjeAaNS7KhZPz1G9vaubvusFaaMyhYPP6AWA4QvpHEJpB06cCgYBqR6/7d2hQiq4MJUrBEzLwG4ijnPeq+UVLQjE598hVIj+8UhRZRRcNWVEJxfcIL1v6Bpo8XISDNVRb30T9bPGVnXvC1jutTUbXKUB1/8iXuyH3IVieobch+bGd4v7ehH/lI7vzB6hjJpFzHopfFUn4wacSQdcFi3tRAwUB/L0S/w== - types : ["tree", "file"] - - peerId: 12D3KooWBgHmDqtXH9SrZfAmwCFsD8LZhTD5dg5wkhdbqFoS8GBN + signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== + encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= + - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb address: 127.0.0.1:4431 - signingKey: l6LFiKqr4ZHgcPbL+DR7KwMbzImufQPFgpoHOJ/nvfUbpb76DCADHuT1I4gIs+XByglnY1KV8jbMfW64XRW5XQ== - encryptionKey: MIIEowIBAAKCAQEA4ltcn1AH048bMXcKOOW7/E0TZYPxL3OtcHXWHSAZjeeTA/rc45G2eaNgyY7Ji+feLtZERbXNWGFBdNp31NHDYZAYwbZmjEqTEgV4yVx7BQP3VBEzglTJaNLTf+XIJnVAEkoHS6ogjC0oXTM6paHu64EitoOCzF9zqL023swjE3HU0dm2xwsUdGnKeO5nPMso/6e3VMavkKnFmvB965ECCBujtediP4lVdIABNVtoMHCoeI5Sn+m7TKqJSyDOIEMhHT3orYUNZWVeAHE1YTM2cI5tSnDZP80CHZ674Z/bKL7Jaznmq87mVt1h9Use2EkxR07/dJuTGvFOos4jHoiR9QIDAQABAoIBAHAr8EluooI/j61CnYk2p6LPG0aaTQJD4/YwHuwOBTviP2OghKgthGzg/szDerNfMyaoveqBvoIGqCZdQTbwwE7v1qTgXA83wYwTtBitQLVqkr1RTOJQXAMbPv5Jg5czUY3+q4DejQSKOE9/XJfKGJkSRH6Hy2C2CJ3dLnzYUqWGO3t70RLT1/sC6p6w3lXdy3dKZGkoR2wva+HXQxVrP8X5HOResXgNZwgMHt9KF1QHVCcySKYiEAefEKTSdKD2fOd4FxLgp3zWpvH3jrX0zd/DqzTlFD5Ns6Ayp2sIfHVp3sn99DZZM6DauMepQKtoSCnXZ+qKhekAwNVJnsVQkSECgYEA4spY9araeFUSl4uXCUQOpCkSshYOPRYN6sBbHsx8tV2eQtCT+5SuNYmzur3c5bkiraGEab8rZfGdDL6fLxQyaqbOmN31Db5kNh/2X+sRnxkak8lsROUWQZRF9doH73FDv6ZlI3V/JicZlOUCfN5BYT+x74R4/c1YXfyuD1J9gr0CgYEA/4K4SDwZUY4bOVCmKQz0OM+RW4PAAH6LHKenTAZNTeDNFFxc2nqnzRGMEKZTDGy0kbT5mBhBHFgShXcAiKxc5/MGkpt8Jcq6Fr5KGU9aZtYKji6mwMTsUndPNQydh3vOt5pOmcuMM6ovanNTvI8k6Qo53OY1IpO5CfOROu0hm5kCgYBnWsYd92YnDsYxUEldzKlLgPhnNov4pNNk15LvP0vaL7cPRhUaw1B9T6scAKjp/GxkasZ4lsnFZM4o37qV7wNm/WwL2KN0Rv9Od1SFtBBMzFkDXvk7kJeK/XLAr0OMiLbSYZeYCFUQ4yLSa2et1nA/TJLf0CR/rhSGiMAedX6DlQKBgAx1137OT33GrFUzNacy1oYeuTv5RNfBVA9lrabrd8GggN/JUU3mRWCexnHZaptkgbnJVZKxPBuhv+V6VDBWF4HIPD3SD0/YfxK03PA3CnWRYppkdAValRvAbcBsiRIeW4pgoAyn/IJYfk92qFK9uFMVCJVZNKYnBhMSKbbx8X2hAoGBAKwvzyAImbNB+493q1R/lSayxzG76bRJ/EseiTqwIec9c4C+Bd/sVXR+Re+xZb0FI/va1bz5CrduTzLSKBmf/+0lzl0MJvWY2+SXfGYdbl4+TTyqgDDfwqW0Tj8pDimye2BneyTmXko1rF+2Sxen7kMXnJLwpqjwZ6TZJuoqeK8q - types : ["tree", "file"] - - peerId: 12D3KooWASsipDzkridiMBmE7VSqp8yZvGWPY1VqySgMSZk6tsiL + signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== + encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH + - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK address: 127.0.0.1:4432 - signingKey: SGyNE0dFaQgtgNuzdcO7LB+TEz9VHAOtlQLk6WWkrkQyXiZV3casg8Q2/4PO1Oylc8Fu72RU001Hclj5JCbiLw== - encryptionKey: MIIEpAIBAAKCAQEA0k3mw4FyexRkLgLjHzYs4Ppeyv6r9ZrP00imNf15JTuM8ajMx5oJX7JQTm8KOLRJjUdZZAd5Gtp0ezfYAQK1ZjEWwCmfp8j8FBgJIDSLpjxl88SXMLgATXYfhklnQvKlQjs/X3Ka4zdTrav2tMH9IAo6TSNZhlPQNsUory1SGHs+KqHv4p0sG8oWuKYhfBj8rWHQdUVptkIBKgojFDeJJD04Tbf9kUakbK/8KuXB6zF5H4WN3p4rMMwkClyTGeYO4LDg5TzVn8NnUi3/b/vO/3us1G/TMoRe/6umUfpQxrwo+7S2T6A4YwetWRp6xALLhp+HfAWnn0lA/D8/w1WpKwIDAQABAoIBAQC5cdQxRa5rddm48PbSCPWeFWkNW3DLDI6CYyedqDvxZwer+QtKXzww1I4X+7ZptiC9odLjb+uMkGHyXZXtnjPTPyounQWZ8JLILUGu0mbqWYwVXp9raHVr2OOHiKaz1D+BnbkOM4L9JUZ2eJL9ZaoNXLd4WdmRp8qM4WI0xqQDzOANx2HhyL/+dJmQeIUND+pdeH+Z+fYowU3ho32txNvBnMXQhF1T5K9i1VO5W49RAjIRbENsT+paPGKbNubDHRt1j36ktK4eC4HSdgv8tccdsGyrEiIbAt1XsTZfM8ie4D3A8RhSxiTC6Fkgv6vIm+iFTLzBFZKesOBcd8sfKeyBAoGBAOts5PQQJhldPDzlbnqzxMOR98WHbkVZjCqWSkNA34vqyFuPcRuX0rHK/qpg23ilbUP0fGMDTGgFzTt51FZLL16SXyRfjNhzjdmryryeddQwbp92ta2GEgnU6t1FyCuSCtcLDKJd/D9A9dC5UI6z+ES4TOnbR3nakXK9t4cUOFthAoGBAOSu+wL+SEA5erR+m3LpOsELK68CCJQPxn3VpoVfJZawgF+fEoXVMLTERxJput1+ADomIEdNc9ex86TjKx9gJ4piNHscRPFeT/AgESOIGHLOc1gk2DPqNj6wBIarUJQ9t4KcHScboh1dTPJeqqv2NSwIiLQoqFUIhfKZLnrW3zwLAoGBAJh0hC+o5YM3ZXLqAIllMN6VACbidP5j5ukNOjojIKCzAdyJH24G+2I3WoNrBbUzK3b+NC7KTAhw+V6ynlbjiWFs2D/twH/LFOkI3tkWpKcsVfbeIPimAbhsMUvpjJ7qjCqF9UCQLHGp14W6+/ftg7C8yNIINlkquVXclaTb60MBAoGAPqmL8ogG+EJH00mWAujRxq/u6meePiQMedKfbJBj1mTK6GjIRI/kZsQZzXvXTnYGTejAk4kvov0KDDaLTG+mpg6+3rUiVxlGwj+nMptKR7s2dAK0k5UsBAVrWBN9YwF+VXW9r0etJmq4ePljvvcaHtS/0M4LQjGxsoYy7EoQpX0CgYAhnf0McB7F1MxSjB0soMNv/v5utVzVihS3re2yKNdkI/YUEMB+yU3Q4gh+OljjBM6Y5To3BsQBAx4l2CysMKFHjIE/5AtdbvIS+chZZqB3vcZXSayvX8P1Z1uFdw/saiO2cRDJmR+TxaOPa2C9SzDoNTACthwLErHfzvEvVroKmw== - types : ["tree", "file"] + signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== + encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== space: gcTTL: 60 syncPeriod: 11 storage: - path: db + path: db/node/3/data metric: addr: "" log: production: false defaultLevel: "" namedLevels: {} +fileStorePogreb: + path: db/node/3/files diff --git a/filenode/cmd/filenode.go b/filenode/cmd/filenode.go index 296e9e72..91003b8e 100644 --- a/filenode/cmd/filenode.go +++ b/filenode/cmd/filenode.go @@ -11,7 +11,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/server" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/secure" "github.com/anytypeio/go-anytype-infrastructure-experiments/filenode/config" - "github.com/anytypeio/go-anytype-infrastructure-experiments/filenode/filepogreb" + "github.com/anytypeio/go-anytype-infrastructure-experiments/node/filepogreb" "go.uber.org/zap" "net/http" _ "net/http/pprof" diff --git a/node/cmd/node.go b/node/cmd/node.go index a931bdc4..10248cfd 100644 --- a/node/cmd/node.go +++ b/node/cmd/node.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileserver" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/metric" @@ -16,6 +17,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/nodeconf" "github.com/anytypeio/go-anytype-infrastructure-experiments/node/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/node/api" + "github.com/anytypeio/go-anytype-infrastructure-experiments/node/filepogreb" "github.com/anytypeio/go-anytype-infrastructure-experiments/node/nodespace" "github.com/anytypeio/go-anytype-infrastructure-experiments/node/nodespace/nodecache" "github.com/anytypeio/go-anytype-infrastructure-experiments/node/storage" @@ -102,6 +104,8 @@ func Bootstrap(a *app.App) { Register(pool.New()). Register(nodespace.New()). Register(commonspace.New()). + Register(filepogreb.New()). + Register(fileserver.New()). Register(server.New()). Register(api.New()) } diff --git a/filenode/filepogreb/filepogreb.go b/node/filepogreb/filepogreb.go similarity index 100% rename from filenode/filepogreb/filepogreb.go rename to node/filepogreb/filepogreb.go diff --git a/util/cmd/nodesgen/gen.go b/util/cmd/nodesgen/gen.go index 3bbcd4ec..9c962b21 100644 --- a/util/cmd/nodesgen/gen.go +++ b/util/cmd/nodesgen/gen.go @@ -48,8 +48,8 @@ func main() { var configs []config.Config var nodes []config.Node - for _, n := range nodesMap.Nodes { - cfg, err := genNodeConfig(n.Addresses, n.APIAddresses) + for i, n := range nodesMap.Nodes { + cfg, err := genNodeConfig(n.Addresses, n.APIAddresses, i+1) if err != nil { panic(fmt.Sprintf("could not generate the config file: %s", err.Error())) } @@ -75,8 +75,8 @@ func main() { } var clientConfigs []config.Config - for _, c := range nodesMap.Clients { - cfg, err := genClientConfig(c.Addresses, c.APIAddresses, encClientKey, signClientKey) + for i, c := range nodesMap.Clients { + cfg, err := genClientConfig(c.Addresses, c.APIAddresses, encClientKey, signClientKey, i+1) if err != nil { panic(fmt.Sprintf("could not generate the config file: %s", err.Error())) } @@ -153,7 +153,7 @@ func main() { } } -func genNodeConfig(addresses []string, apiAddresses []string) (config.Config, error) { +func genNodeConfig(addresses []string, apiAddresses []string, num int) (config.Config, error) { encKey, _, err := encryptionkey.GenerateRandomRSAKeyPair(2048) if err != nil { return config.Config{}, err @@ -185,7 +185,7 @@ func genNodeConfig(addresses []string, apiAddresses []string) (config.Config, er ListenAddrs: addresses, TLS: false, }, - Storage: config.Storage{Path: "db"}, + Storage: config.Storage{Path: fmt.Sprintf("db/node/%d/data", num)}, Account: config.Account{ PeerId: peerID.String(), PeerKey: encSignKey, @@ -200,10 +200,13 @@ func genNodeConfig(addresses []string, apiAddresses []string) (config.Config, er GCTTL: 60, SyncPeriod: 11, }, + FileStorePogreb: config.FileStorePogreb{ + Path: fmt.Sprintf("db/node/%d/files", num), + }, }, nil } -func genClientConfig(addresses []string, apiAddresses []string, encKey encryptionkey.PrivKey, signKey signingkey.PrivKey) (config.Config, error) { +func genClientConfig(addresses []string, apiAddresses []string, encKey encryptionkey.PrivKey, signKey signingkey.PrivKey, num int) (config.Config, error) { peerKey, _, err := signingkey.GenerateRandomEd25519KeyPair() if err != nil { return config.Config{}, err @@ -235,7 +238,7 @@ func genClientConfig(addresses []string, apiAddresses []string, encKey encryptio ListenAddrs: addresses, TLS: false, }, - Storage: config.Storage{Path: "db"}, + Storage: config.Storage{Path: fmt.Sprintf("db/client/%d", num)}, Account: config.Account{ PeerId: peerID.String(), PeerKey: encPeerKey, From 439182cdfa453af85410daa10e191181ba7e04d0 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Wed, 21 Dec 2022 21:23:47 +0300 Subject: [PATCH 07/10] files: ref, proxyStore, index --- client/api/apiproto/api.pb.go | 1160 ++++++++++++++++- client/api/apiproto/api_drpc.pb.go | 122 +- client/api/apiproto/protos/api.proto | 29 +- client/api/rpchandler.go | 53 + client/api/service.go | 5 +- client/cmd/client.go | 4 +- .../badgerfilestore/badgerfileindex.go | 255 ++++ .../badgerfilestore/badgerfileindex_test.go | 104 ++ .../badgerfilestore.go} | 56 +- .../badgerfilestore/badgerfilestore_test.go | 101 ++ .../{filestorage.go => fileservice.go} | 27 +- client/filestorage/proxystore.go | 130 ++ .../filestorage/proxystore_test.go | 164 ++- .../filestorage}/rpcstore/client.go | 7 +- .../filestorage}/rpcstore/clientmgr.go | 2 +- .../filestorage}/rpcstore/service.go | 0 .../filestorage}/rpcstore/stat.go | 0 .../filestorage}/rpcstore/store.go | 0 .../filestorage}/rpcstore/store_test.go | 0 .../filestorage}/rpcstore/task.go | 0 client/filestorage/syncer.go | 133 ++ client/filestorage/syncer_test.go | 106 ++ .../fileblockstore/cachestore/cachestore.go | 122 -- .../fileblockstore/fileblockstore.go | 2 +- common/commonfile/fileserver/rpchandler.go | 16 +- common/commonfile/fileservice/fileservice.go | 12 +- debug.json | 64 + etc/configs/client1.yml | 35 +- etc/configs/client2.yml | 35 +- etc/configs/cons1.yml | 8 +- etc/configs/cons2.yml | 8 +- etc/configs/cons3.yml | 8 +- etc/configs/node1.yml | 35 +- etc/configs/node2.yml | 35 +- etc/configs/node3.yml | 35 +- filenode/go.mod | 1 + filenode/go.sum | 2 + node/filepogreb/filepogreb.go | 5 + playground/init.sh | 1 - util/cmd/debug/commands/client/service.go | 27 + util/cmd/debug/commands/clientcmds.go | 54 + util/cmd/nodesgen/gen.go | 1 + util/debug.json | 1 + 43 files changed, 2625 insertions(+), 340 deletions(-) create mode 100644 client/filestorage/badgerfilestore/badgerfileindex.go create mode 100644 client/filestorage/badgerfilestore/badgerfileindex_test.go rename client/filestorage/{filebadgerstore/filebadgerstore.go => badgerfilestore/badgerfilestore.go} (62%) create mode 100644 client/filestorage/badgerfilestore/badgerfilestore_test.go rename client/filestorage/{filestorage.go => fileservice.go} (62%) create mode 100644 client/filestorage/proxystore.go rename common/commonfile/fileblockstore/cachestore/cachestore_test.go => client/filestorage/proxystore_test.go (53%) rename {common/commonfile => client/filestorage}/rpcstore/client.go (97%) rename {common/commonfile => client/filestorage}/rpcstore/clientmgr.go (99%) rename {common/commonfile => client/filestorage}/rpcstore/service.go (100%) rename {common/commonfile => client/filestorage}/rpcstore/stat.go (100%) rename {common/commonfile => client/filestorage}/rpcstore/store.go (100%) rename {common/commonfile => client/filestorage}/rpcstore/store_test.go (100%) rename {common/commonfile => client/filestorage}/rpcstore/task.go (100%) create mode 100644 client/filestorage/syncer.go create mode 100644 client/filestorage/syncer_test.go delete mode 100644 common/commonfile/fileblockstore/cachestore/cachestore.go create mode 100644 debug.json create mode 100644 util/debug.json diff --git a/client/api/apiproto/api.pb.go b/client/api/apiproto/api.pb.go index e0fd415f..7c11b5fa 100644 --- a/client/api/apiproto/api.pb.go +++ b/client/api/apiproto/api.pb.go @@ -986,6 +986,278 @@ func (m *TreeParamsResponse) GetHeadIds() []string { return nil } +type PutFileRequest struct { + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + SpaceId string `protobuf:"bytes,2,opt,name=spaceId,proto3" json:"spaceId,omitempty"` +} + +func (m *PutFileRequest) Reset() { *m = PutFileRequest{} } +func (m *PutFileRequest) String() string { return proto.CompactTextString(m) } +func (*PutFileRequest) ProtoMessage() {} +func (*PutFileRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fc31080c27db9707, []int{21} +} +func (m *PutFileRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PutFileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PutFileRequest.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 *PutFileRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PutFileRequest.Merge(m, src) +} +func (m *PutFileRequest) XXX_Size() int { + return m.Size() +} +func (m *PutFileRequest) XXX_DiscardUnknown() { + xxx_messageInfo_PutFileRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_PutFileRequest proto.InternalMessageInfo + +func (m *PutFileRequest) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +func (m *PutFileRequest) GetSpaceId() string { + if m != nil { + return m.SpaceId + } + return "" +} + +type PutFileResponse struct { + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` +} + +func (m *PutFileResponse) Reset() { *m = PutFileResponse{} } +func (m *PutFileResponse) String() string { return proto.CompactTextString(m) } +func (*PutFileResponse) ProtoMessage() {} +func (*PutFileResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fc31080c27db9707, []int{22} +} +func (m *PutFileResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PutFileResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PutFileResponse.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 *PutFileResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_PutFileResponse.Merge(m, src) +} +func (m *PutFileResponse) XXX_Size() int { + return m.Size() +} +func (m *PutFileResponse) XXX_DiscardUnknown() { + xxx_messageInfo_PutFileResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_PutFileResponse proto.InternalMessageInfo + +func (m *PutFileResponse) GetHash() string { + if m != nil { + return m.Hash + } + return "" +} + +type GetFileRequest struct { + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` +} + +func (m *GetFileRequest) Reset() { *m = GetFileRequest{} } +func (m *GetFileRequest) String() string { return proto.CompactTextString(m) } +func (*GetFileRequest) ProtoMessage() {} +func (*GetFileRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fc31080c27db9707, []int{23} +} +func (m *GetFileRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetFileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetFileRequest.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 *GetFileRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetFileRequest.Merge(m, src) +} +func (m *GetFileRequest) XXX_Size() int { + return m.Size() +} +func (m *GetFileRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetFileRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetFileRequest proto.InternalMessageInfo + +func (m *GetFileRequest) GetHash() string { + if m != nil { + return m.Hash + } + return "" +} + +func (m *GetFileRequest) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +type GetFileResponse struct { + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` +} + +func (m *GetFileResponse) Reset() { *m = GetFileResponse{} } +func (m *GetFileResponse) String() string { return proto.CompactTextString(m) } +func (*GetFileResponse) ProtoMessage() {} +func (*GetFileResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fc31080c27db9707, []int{24} +} +func (m *GetFileResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetFileResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetFileResponse.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 *GetFileResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetFileResponse.Merge(m, src) +} +func (m *GetFileResponse) XXX_Size() int { + return m.Size() +} +func (m *GetFileResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetFileResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetFileResponse proto.InternalMessageInfo + +func (m *GetFileResponse) GetPath() string { + if m != nil { + return m.Path + } + return "" +} + +type DeleteFileRequest struct { + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` +} + +func (m *DeleteFileRequest) Reset() { *m = DeleteFileRequest{} } +func (m *DeleteFileRequest) String() string { return proto.CompactTextString(m) } +func (*DeleteFileRequest) ProtoMessage() {} +func (*DeleteFileRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_fc31080c27db9707, []int{25} +} +func (m *DeleteFileRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DeleteFileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DeleteFileRequest.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 *DeleteFileRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteFileRequest.Merge(m, src) +} +func (m *DeleteFileRequest) XXX_Size() int { + return m.Size() +} +func (m *DeleteFileRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteFileRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteFileRequest proto.InternalMessageInfo + +func (m *DeleteFileRequest) GetHash() string { + if m != nil { + return m.Hash + } + return "" +} + +type DeleteFileResponse struct { +} + +func (m *DeleteFileResponse) Reset() { *m = DeleteFileResponse{} } +func (m *DeleteFileResponse) String() string { return proto.CompactTextString(m) } +func (*DeleteFileResponse) ProtoMessage() {} +func (*DeleteFileResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_fc31080c27db9707, []int{26} +} +func (m *DeleteFileResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DeleteFileResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DeleteFileResponse.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 *DeleteFileResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeleteFileResponse.Merge(m, src) +} +func (m *DeleteFileResponse) XXX_Size() int { + return m.Size() +} +func (m *DeleteFileResponse) XXX_DiscardUnknown() { + xxx_messageInfo_DeleteFileResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_DeleteFileResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*CreateSpaceRequest)(nil), "clientapi.CreateSpaceRequest") proto.RegisterType((*CreateSpaceResponse)(nil), "clientapi.CreateSpaceResponse") @@ -1008,52 +1280,65 @@ func init() { proto.RegisterType((*LoadSpaceResponse)(nil), "clientapi.LoadSpaceResponse") proto.RegisterType((*TreeParamsRequest)(nil), "clientapi.TreeParamsRequest") proto.RegisterType((*TreeParamsResponse)(nil), "clientapi.TreeParamsResponse") + proto.RegisterType((*PutFileRequest)(nil), "clientapi.PutFileRequest") + proto.RegisterType((*PutFileResponse)(nil), "clientapi.PutFileResponse") + proto.RegisterType((*GetFileRequest)(nil), "clientapi.GetFileRequest") + proto.RegisterType((*GetFileResponse)(nil), "clientapi.GetFileResponse") + proto.RegisterType((*DeleteFileRequest)(nil), "clientapi.DeleteFileRequest") + proto.RegisterType((*DeleteFileResponse)(nil), "clientapi.DeleteFileResponse") } func init() { proto.RegisterFile("api/apiproto/protos/api.proto", fileDescriptor_fc31080c27db9707) } var fileDescriptor_fc31080c27db9707 = []byte{ - // 630 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0xcd, 0x6e, 0xda, 0x40, - 0x10, 0x8e, 0x09, 0x49, 0xf0, 0x50, 0xf1, 0xb3, 0x49, 0x90, 0xeb, 0x06, 0x8b, 0xae, 0x94, 0x08, - 0xa9, 0x11, 0xa8, 0xe9, 0xa9, 0xb7, 0x52, 0x50, 0x24, 0x54, 0x2a, 0xb5, 0x24, 0xbd, 0xf4, 0xb6, - 0xc5, 0x2b, 0xc5, 0x12, 0x60, 0xd7, 0x36, 0x55, 0x4e, 0x7d, 0x86, 0x3e, 0x56, 0x8f, 0x39, 0xf6, - 0x58, 0xc1, 0x6b, 0xf4, 0x50, 0xed, 0x7a, 0x6d, 0xef, 0xda, 0x26, 0x55, 0xc5, 0x05, 0x76, 0xfe, - 0xbe, 0xf9, 0x76, 0x99, 0x6f, 0x80, 0x36, 0xf1, 0x9c, 0x3e, 0xf1, 0x1c, 0xcf, 0x77, 0x43, 0xb7, - 0xcf, 0x3f, 0x03, 0x66, 0xf7, 0xf8, 0x11, 0xe9, 0xb3, 0xb9, 0x43, 0x97, 0x21, 0xf1, 0x1c, 0x7c, - 0x02, 0x68, 0xe8, 0x53, 0x12, 0xd2, 0x1b, 0x8f, 0xcc, 0xe8, 0x94, 0x7e, 0x5d, 0xd1, 0x20, 0xc4, - 0xe7, 0x70, 0xac, 0x78, 0x03, 0xcf, 0x5d, 0x06, 0x14, 0xd5, 0xa0, 0xe4, 0xd8, 0x86, 0xd6, 0xd1, - 0xba, 0xfa, 0xb4, 0xe4, 0xd8, 0xac, 0x78, 0x44, 0x7d, 0xe7, 0x5b, 0xae, 0x58, 0xf1, 0x6e, 0x29, - 0x7e, 0x09, 0xa7, 0x51, 0x8f, 0x91, 0x3b, 0x5b, 0x2d, 0xe8, 0x32, 0x14, 0xf5, 0xc8, 0x80, 0xa3, - 0x80, 0x55, 0x8e, 0xe3, 0xec, 0xd8, 0xc4, 0x5d, 0x68, 0x65, 0x4b, 0xb6, 0x80, 0x7f, 0x84, 0xd3, - 0x11, 0x9d, 0xd3, 0xff, 0x00, 0x47, 0x16, 0x80, 0x2d, 0x92, 0xc7, 0xb6, 0x51, 0xe2, 0x41, 0xc9, - 0x83, 0x0d, 0x68, 0x65, 0x21, 0xa3, 0xe6, 0xf8, 0x3b, 0xd4, 0x06, 0xb6, 0x7d, 0x4b, 0xef, 0x77, - 0xef, 0x82, 0x10, 0x94, 0x43, 0x7a, 0x1f, 0x1a, 0xfb, 0x3c, 0xc2, 0xcf, 0xac, 0xc6, 0x09, 0x6e, - 0x96, 0xc4, 0x0b, 0xee, 0xdc, 0xd0, 0x28, 0x77, 0xb4, 0x6e, 0x65, 0x2a, 0x79, 0x30, 0x81, 0x7a, - 0xd2, 0x5f, 0xbc, 0x87, 0xda, 0x46, 0xcb, 0xb5, 0x69, 0xc1, 0xe1, 0x1d, 0x25, 0x76, 0x42, 0x41, - 0x58, 0xcc, 0xef, 0xbb, 0x2e, 0xab, 0x89, 0x08, 0x08, 0x0b, 0xbf, 0x83, 0xfa, 0x68, 0xb5, 0xf0, - 0x6e, 0x7d, 0x4a, 0x77, 0x7f, 0xc9, 0x0b, 0x68, 0xa4, 0x60, 0x82, 0x30, 0x82, 0xb2, 0xbd, 0x5a, - 0x78, 0x02, 0x8a, 0x9f, 0xf1, 0x0b, 0xa8, 0x0f, 0xe6, 0x73, 0x96, 0x16, 0xfc, 0x7b, 0x36, 0x2e, - 0xa1, 0xcc, 0x32, 0xb3, 0x93, 0x80, 0x4e, 0xe0, 0x80, 0xdd, 0x2d, 0x30, 0x4a, 0x9d, 0xfd, 0xae, - 0x3e, 0x8d, 0x0c, 0xfc, 0x1a, 0x1a, 0x29, 0xb4, 0xa0, 0x70, 0x0e, 0x07, 0x21, 0x73, 0x18, 0x5a, - 0x67, 0xbf, 0x5b, 0xbd, 0xaa, 0xf7, 0x12, 0x95, 0xf4, 0x38, 0xd5, 0x28, 0x8a, 0x11, 0x2f, 0xe5, - 0xb3, 0x1d, 0xd3, 0xc2, 0x7d, 0x68, 0x4a, 0x3e, 0x81, 0x67, 0x42, 0x45, 0x90, 0x8b, 0x20, 0xf5, - 0x69, 0x62, 0xe3, 0x4b, 0x68, 0x4c, 0x5c, 0x62, 0xcb, 0xba, 0x79, 0xe4, 0x6e, 0xc7, 0xd0, 0x94, - 0xb2, 0xc5, 0xd4, 0xbd, 0x87, 0x26, 0xa3, 0xf5, 0x81, 0xf8, 0x64, 0x11, 0xec, 0xfe, 0xa3, 0x5c, - 0x03, 0x92, 0xe1, 0xc4, 0x1d, 0xd2, 0x79, 0xd0, 0xe4, 0x79, 0x60, 0x7d, 0xa2, 0x89, 0x89, 0xdf, - 0x35, 0x36, 0xaf, 0xfe, 0x1c, 0x80, 0x3e, 0xe4, 0x0f, 0x37, 0xf0, 0x1c, 0x34, 0x81, 0xaa, 0xb4, - 0x48, 0x50, 0x5b, 0x7a, 0xd3, 0xfc, 0xda, 0x31, 0xad, 0x6d, 0x61, 0xc1, 0x66, 0x02, 0x55, 0x69, - 0xb3, 0x28, 0x68, 0xf9, 0x3d, 0xa4, 0xa0, 0x15, 0x2d, 0xa4, 0x4f, 0x50, 0x53, 0xb7, 0x09, 0xea, - 0xe4, 0xfa, 0x67, 0xd6, 0x87, 0xf9, 0xfc, 0x91, 0x8c, 0x14, 0x56, 0xdd, 0x13, 0x0a, 0x6c, 0xe1, - 0x56, 0x52, 0x60, 0x8b, 0x97, 0x0c, 0x7a, 0x03, 0x47, 0x42, 0xe4, 0xe8, 0xa9, 0x94, 0xad, 0x2e, - 0x1e, 0xd3, 0x2c, 0x0a, 0x09, 0x84, 0x21, 0x54, 0x62, 0xd9, 0x21, 0x39, 0x2f, 0x23, 0x6c, 0xf3, - 0x59, 0x61, 0x4c, 0x80, 0x8c, 0x01, 0xd2, 0x31, 0x41, 0x67, 0x19, 0x8d, 0x28, 0xc3, 0x68, 0xb6, - 0xb7, 0x44, 0x53, 0x3e, 0xb1, 0x06, 0x15, 0x3e, 0x19, 0xcd, 0x2b, 0x7c, 0x72, 0xa2, 0xbd, 0x06, - 0x3d, 0x51, 0x1e, 0xca, 0x64, 0x2a, 0x1a, 0x35, 0xcf, 0x8a, 0x83, 0x29, 0x4e, 0x22, 0x31, 0x05, - 0x27, 0x2b, 0x53, 0x05, 0x27, 0xa7, 0xca, 0xb7, 0x17, 0x3f, 0xd7, 0x96, 0xf6, 0xb0, 0xb6, 0xb4, - 0xdf, 0x6b, 0x4b, 0xfb, 0xb1, 0xb1, 0xf6, 0x1e, 0x36, 0xd6, 0xde, 0xaf, 0x8d, 0xb5, 0xf7, 0xf9, - 0x89, 0xfc, 0x9f, 0xfc, 0xe5, 0x90, 0x7f, 0xbd, 0xfa, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x82, 0x87, - 0xed, 0x38, 0xaa, 0x07, 0x00, 0x00, + // 746 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x4f, 0x4f, 0xdb, 0x4e, + 0x10, 0xc5, 0x21, 0x10, 0x32, 0xfc, 0x94, 0x90, 0xe5, 0x8f, 0xfc, 0x73, 0x89, 0x95, 0xae, 0x04, + 0x8d, 0x54, 0x04, 0x2a, 0xbd, 0xb4, 0x97, 0x0a, 0x4a, 0x44, 0x15, 0x95, 0x4a, 0x34, 0xd0, 0x4b, + 0x6f, 0x5b, 0xbc, 0x52, 0x2c, 0x25, 0xb1, 0x1b, 0x3b, 0x15, 0xa7, 0x7e, 0x86, 0x7e, 0xac, 0x4a, + 0xbd, 0x70, 0xec, 0xb1, 0x82, 0x2f, 0x52, 0xad, 0xbd, 0xf6, 0xee, 0xac, 0x1d, 0x50, 0xc5, 0x05, + 0x76, 0x77, 0x66, 0xde, 0x7b, 0xeb, 0x9d, 0x79, 0x0a, 0xb4, 0x59, 0xe8, 0x1f, 0xb0, 0xd0, 0x0f, + 0xa7, 0x41, 0x1c, 0x1c, 0x24, 0x7f, 0x23, 0xb1, 0xdf, 0x4f, 0x96, 0xa4, 0x7e, 0x35, 0xf2, 0xf9, + 0x24, 0x66, 0xa1, 0x4f, 0x37, 0x80, 0x9c, 0x4c, 0x39, 0x8b, 0xf9, 0x45, 0xc8, 0xae, 0xf8, 0x80, + 0x7f, 0x9d, 0xf1, 0x28, 0xa6, 0x3b, 0xb0, 0x8e, 0x4e, 0xa3, 0x30, 0x98, 0x44, 0x9c, 0x34, 0xa0, + 0xe2, 0x7b, 0xb6, 0xd5, 0xb1, 0xba, 0xf5, 0x41, 0xc5, 0xf7, 0x44, 0x71, 0x8f, 0x4f, 0xfd, 0x6f, + 0x85, 0x62, 0x74, 0x3a, 0xa7, 0xf8, 0x05, 0x6c, 0xa6, 0x1c, 0xbd, 0xe0, 0x6a, 0x36, 0xe6, 0x93, + 0x58, 0xd6, 0x13, 0x1b, 0x6a, 0x91, 0xa8, 0xec, 0x67, 0xd9, 0xd9, 0x96, 0x76, 0x61, 0xcb, 0x2c, + 0x99, 0x03, 0xfe, 0x11, 0x36, 0x7b, 0x7c, 0xc4, 0xff, 0x01, 0x9c, 0xb8, 0x00, 0x9e, 0x4c, 0xee, + 0x7b, 0x76, 0x25, 0x09, 0x6a, 0x27, 0xd4, 0x86, 0x2d, 0x13, 0x32, 0x25, 0xa7, 0xdf, 0xa1, 0x71, + 0xec, 0x79, 0x97, 0xfc, 0xfa, 0xf1, 0x2c, 0x84, 0x40, 0x35, 0xe6, 0xd7, 0xb1, 0xbd, 0x98, 0x44, + 0x92, 0xb5, 0xa8, 0xf1, 0xa3, 0x8b, 0x09, 0x0b, 0xa3, 0x61, 0x10, 0xdb, 0xd5, 0x8e, 0xd5, 0x5d, + 0x19, 0x68, 0x27, 0x94, 0x41, 0x33, 0xe7, 0x97, 0xdf, 0x03, 0xd3, 0x58, 0x05, 0x9a, 0x2d, 0x58, + 0x1e, 0x72, 0xe6, 0xe5, 0x12, 0xe4, 0x4e, 0x9c, 0x4f, 0x83, 0x40, 0xd4, 0xa4, 0x02, 0xe4, 0x8e, + 0xbe, 0x87, 0x66, 0x6f, 0x36, 0x0e, 0x2f, 0xa7, 0x9c, 0x3f, 0xfe, 0x4b, 0xee, 0xc2, 0x9a, 0x02, + 0x93, 0x82, 0x09, 0x54, 0xbd, 0xd9, 0x38, 0x94, 0x50, 0xc9, 0x9a, 0x3e, 0x87, 0xe6, 0xf1, 0x68, + 0x24, 0xd2, 0xa2, 0x87, 0x7b, 0x63, 0x0f, 0xaa, 0x22, 0xd3, 0xec, 0x04, 0xb2, 0x01, 0x4b, 0xe2, + 0x6e, 0x91, 0x5d, 0xe9, 0x2c, 0x76, 0xeb, 0x83, 0x74, 0x43, 0x5f, 0xc3, 0x9a, 0x82, 0x96, 0x12, + 0x76, 0x60, 0x29, 0x16, 0x07, 0xb6, 0xd5, 0x59, 0xec, 0xae, 0x1e, 0x36, 0xf7, 0xf3, 0x29, 0xd9, + 0x4f, 0xa4, 0xa6, 0x51, 0x4a, 0x92, 0xd2, 0xa4, 0xb7, 0x33, 0x59, 0xf4, 0x00, 0x5a, 0xda, 0x99, + 0xc4, 0x73, 0x60, 0x45, 0x8a, 0x4b, 0x21, 0xeb, 0x83, 0x7c, 0x4f, 0xf7, 0x60, 0xed, 0x2c, 0x60, + 0x9e, 0x3e, 0x37, 0xf7, 0xdc, 0x6d, 0x1d, 0x5a, 0x5a, 0xb6, 0xec, 0xba, 0x0f, 0xd0, 0x12, 0xb2, + 0xce, 0xd9, 0x94, 0x8d, 0xa3, 0xc7, 0x3f, 0xca, 0x29, 0x10, 0x1d, 0x4e, 0xde, 0x41, 0xf5, 0x83, + 0xa5, 0xf7, 0x83, 0xe0, 0x49, 0x3b, 0x26, 0xfb, 0xae, 0xd9, 0x96, 0xbe, 0x81, 0xc6, 0xf9, 0x2c, + 0x3e, 0xf5, 0x47, 0xf9, 0xbd, 0x08, 0x54, 0x43, 0x16, 0x0f, 0xb3, 0xa7, 0x15, 0x6b, 0x5d, 0x67, + 0x05, 0xdf, 0x75, 0x07, 0x9a, 0x79, 0xbd, 0xea, 0x8d, 0x21, 0x8b, 0x72, 0x00, 0xb1, 0xa6, 0xaf, + 0xa0, 0xf1, 0x8e, 0x9b, 0x34, 0x66, 0x56, 0x4e, 0x5d, 0x51, 0xd4, 0x82, 0x20, 0xaf, 0x54, 0x04, + 0xa6, 0x42, 0xfa, 0x0c, 0x5a, 0xe9, 0xb8, 0x3f, 0xc0, 0x91, 0x9a, 0xa0, 0x4a, 0x4c, 0x21, 0x0f, + 0x7f, 0xd5, 0xa0, 0x7e, 0x92, 0xf4, 0xcf, 0x71, 0xe8, 0x93, 0x33, 0x58, 0xd5, 0xfc, 0x94, 0xb4, + 0xb5, 0xd6, 0x2a, 0xba, 0xaf, 0xe3, 0xce, 0x0b, 0x4b, 0xb9, 0x67, 0xb0, 0xaa, 0x19, 0x2c, 0x42, + 0x2b, 0xda, 0x31, 0x42, 0x2b, 0xf3, 0xe5, 0x4f, 0xd0, 0xc0, 0xa6, 0x4a, 0x3a, 0x05, 0x7e, 0xc3, + 0x45, 0x9d, 0xa7, 0xf7, 0x64, 0x28, 0x58, 0x6c, 0x97, 0x08, 0xb6, 0xd4, 0x9c, 0x11, 0x6c, 0xb9, + 0xd7, 0x92, 0x23, 0xa8, 0x49, 0xaf, 0x23, 0xff, 0x6b, 0xd9, 0xd8, 0x7f, 0x1d, 0xa7, 0x2c, 0x24, + 0x11, 0x4e, 0x60, 0x25, 0x73, 0x1f, 0xa2, 0xe7, 0x19, 0xfe, 0xe6, 0x3c, 0x29, 0x8d, 0x49, 0x90, + 0x3e, 0x80, 0x9a, 0x16, 0xb2, 0x6d, 0x58, 0x05, 0x9a, 0x49, 0xa7, 0x3d, 0x27, 0xaa, 0xf4, 0x64, + 0x56, 0x84, 0xf4, 0x18, 0xd6, 0x87, 0xf4, 0x14, 0xbc, 0xeb, 0x14, 0xea, 0xb9, 0x01, 0x11, 0x23, + 0x13, 0x59, 0x95, 0xb3, 0x5d, 0x1e, 0x54, 0x38, 0xb9, 0xd3, 0x20, 0x1c, 0xd3, 0xad, 0x10, 0x4e, + 0xc1, 0x9c, 0xc4, 0x33, 0xc9, 0x29, 0x46, 0xcf, 0x84, 0x9d, 0x01, 0x3d, 0x93, 0x39, 0xf4, 0x47, + 0x50, 0x93, 0x63, 0x8a, 0x10, 0xf0, 0xd0, 0x23, 0x04, 0x73, 0xaa, 0xfb, 0x00, 0x6a, 0x30, 0xd1, + 0x1b, 0x15, 0x06, 0xdb, 0x69, 0xcf, 0x89, 0xa6, 0x50, 0x6f, 0x77, 0x7f, 0xde, 0xba, 0xd6, 0xcd, + 0xad, 0x6b, 0xfd, 0xb9, 0x75, 0xad, 0x1f, 0x77, 0xee, 0xc2, 0xcd, 0x9d, 0xbb, 0xf0, 0xfb, 0xce, + 0x5d, 0xf8, 0xfc, 0x9f, 0xfe, 0x4b, 0xeb, 0xcb, 0x72, 0xf2, 0xef, 0xe5, 0xdf, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x0e, 0x8d, 0x9b, 0x46, 0x80, 0x09, 0x00, 0x00, } func (m *CreateSpaceRequest) Marshal() (dAtA []byte, err error) { @@ -1737,6 +2022,193 @@ func (m *TreeParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PutFileRequest) 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 *PutFileRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PutFileRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SpaceId) > 0 { + i -= len(m.SpaceId) + copy(dAtA[i:], m.SpaceId) + i = encodeVarintApi(dAtA, i, uint64(len(m.SpaceId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintApi(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PutFileResponse) 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 *PutFileResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PutFileResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Hash) > 0 { + i -= len(m.Hash) + copy(dAtA[i:], m.Hash) + i = encodeVarintApi(dAtA, i, uint64(len(m.Hash))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetFileRequest) 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 *GetFileRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetFileRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintApi(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0x12 + } + if len(m.Hash) > 0 { + i -= len(m.Hash) + copy(dAtA[i:], m.Hash) + i = encodeVarintApi(dAtA, i, uint64(len(m.Hash))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GetFileResponse) 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 *GetFileResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetFileResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintApi(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DeleteFileRequest) 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 *DeleteFileRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DeleteFileRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Hash) > 0 { + i -= len(m.Hash) + copy(dAtA[i:], m.Hash) + i = encodeVarintApi(dAtA, i, uint64(len(m.Hash))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DeleteFileResponse) 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 *DeleteFileResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DeleteFileResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintApi(dAtA []byte, offset int, v uint64) int { offset -= sovApi(v) base := offset @@ -2048,6 +2520,88 @@ func (m *TreeParamsResponse) Size() (n int) { return n } +func (m *PutFileRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Path) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + l = len(m.SpaceId) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *PutFileResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *GetFileRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + l = len(m.Path) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *GetFileResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Path) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *DeleteFileRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Hash) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *DeleteFileResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovApi(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -3926,6 +4480,530 @@ func (m *TreeParamsResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *PutFileRequest) 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 ErrIntOverflowApi + } + 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: PutFileRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PutFileRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpaceId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SpaceId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PutFileResponse) 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 ErrIntOverflowApi + } + 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: PutFileResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PutFileResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetFileRequest) 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 ErrIntOverflowApi + } + 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: GetFileRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetFileRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetFileResponse) 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 ErrIntOverflowApi + } + 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: GetFileResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetFileResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Path = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteFileRequest) 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 ErrIntOverflowApi + } + 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: DeleteFileRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteFileRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hash", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hash = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DeleteFileResponse) 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 ErrIntOverflowApi + } + 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: DeleteFileResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DeleteFileResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipApi(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/client/api/apiproto/api_drpc.pb.go b/client/api/apiproto/api_drpc.pb.go index adfe74ac..e3cc1c63 100644 --- a/client/api/apiproto/api_drpc.pb.go +++ b/client/api/apiproto/api_drpc.pb.go @@ -50,6 +50,9 @@ type DRPCClientApiClient interface { AllTrees(ctx context.Context, in *AllTreesRequest) (*AllTreesResponse, error) AllSpaces(ctx context.Context, in *AllSpacesRequest) (*AllSpacesResponse, error) LoadSpace(ctx context.Context, in *LoadSpaceRequest) (*LoadSpaceResponse, error) + PutFile(ctx context.Context, in *PutFileRequest) (*PutFileResponse, error) + GetFile(ctx context.Context, in *GetFileRequest) (*GetFileResponse, error) + DeleteFile(ctx context.Context, in *DeleteFileRequest) (*DeleteFileResponse, error) } type drpcClientApiClient struct { @@ -152,6 +155,33 @@ func (c *drpcClientApiClient) LoadSpace(ctx context.Context, in *LoadSpaceReques return out, nil } +func (c *drpcClientApiClient) PutFile(ctx context.Context, in *PutFileRequest) (*PutFileResponse, error) { + out := new(PutFileResponse) + err := c.cc.Invoke(ctx, "/clientapi.ClientApi/PutFile", drpcEncoding_File_api_apiproto_protos_api_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcClientApiClient) GetFile(ctx context.Context, in *GetFileRequest) (*GetFileResponse, error) { + out := new(GetFileResponse) + err := c.cc.Invoke(ctx, "/clientapi.ClientApi/GetFile", drpcEncoding_File_api_apiproto_protos_api_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *drpcClientApiClient) DeleteFile(ctx context.Context, in *DeleteFileRequest) (*DeleteFileResponse, error) { + out := new(DeleteFileResponse) + err := c.cc.Invoke(ctx, "/clientapi.ClientApi/DeleteFile", drpcEncoding_File_api_apiproto_protos_api_proto{}, in, out) + if err != nil { + return nil, err + } + return out, nil +} + type DRPCClientApiServer interface { CreateSpace(context.Context, *CreateSpaceRequest) (*CreateSpaceResponse, error) DeriveSpace(context.Context, *DeriveSpaceRequest) (*DeriveSpaceResponse, error) @@ -163,6 +193,9 @@ type DRPCClientApiServer interface { AllTrees(context.Context, *AllTreesRequest) (*AllTreesResponse, error) AllSpaces(context.Context, *AllSpacesRequest) (*AllSpacesResponse, error) LoadSpace(context.Context, *LoadSpaceRequest) (*LoadSpaceResponse, error) + PutFile(context.Context, *PutFileRequest) (*PutFileResponse, error) + GetFile(context.Context, *GetFileRequest) (*GetFileResponse, error) + DeleteFile(context.Context, *DeleteFileRequest) (*DeleteFileResponse, error) } type DRPCClientApiUnimplementedServer struct{} @@ -207,9 +240,21 @@ func (s *DRPCClientApiUnimplementedServer) LoadSpace(context.Context, *LoadSpace return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) } +func (s *DRPCClientApiUnimplementedServer) PutFile(context.Context, *PutFileRequest) (*PutFileResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCClientApiUnimplementedServer) GetFile(context.Context, *GetFileRequest) (*GetFileResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + +func (s *DRPCClientApiUnimplementedServer) DeleteFile(context.Context, *DeleteFileRequest) (*DeleteFileResponse, error) { + return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented) +} + type DRPCClientApiDescription struct{} -func (DRPCClientApiDescription) NumMethods() int { return 10 } +func (DRPCClientApiDescription) NumMethods() int { return 13 } func (DRPCClientApiDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) { switch n { @@ -303,6 +348,33 @@ func (DRPCClientApiDescription) Method(n int) (string, drpc.Encoding, drpc.Recei in1.(*LoadSpaceRequest), ) }, DRPCClientApiServer.LoadSpace, true + case 10: + return "/clientapi.ClientApi/PutFile", drpcEncoding_File_api_apiproto_protos_api_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCClientApiServer). + PutFile( + ctx, + in1.(*PutFileRequest), + ) + }, DRPCClientApiServer.PutFile, true + case 11: + return "/clientapi.ClientApi/GetFile", drpcEncoding_File_api_apiproto_protos_api_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCClientApiServer). + GetFile( + ctx, + in1.(*GetFileRequest), + ) + }, DRPCClientApiServer.GetFile, true + case 12: + return "/clientapi.ClientApi/DeleteFile", drpcEncoding_File_api_apiproto_protos_api_proto{}, + func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) { + return srv.(DRPCClientApiServer). + DeleteFile( + ctx, + in1.(*DeleteFileRequest), + ) + }, DRPCClientApiServer.DeleteFile, true default: return "", nil, nil, nil, false } @@ -471,3 +543,51 @@ func (x *drpcClientApi_LoadSpaceStream) SendAndClose(m *LoadSpaceResponse) error } return x.CloseSend() } + +type DRPCClientApi_PutFileStream interface { + drpc.Stream + SendAndClose(*PutFileResponse) error +} + +type drpcClientApi_PutFileStream struct { + drpc.Stream +} + +func (x *drpcClientApi_PutFileStream) SendAndClose(m *PutFileResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_api_apiproto_protos_api_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCClientApi_GetFileStream interface { + drpc.Stream + SendAndClose(*GetFileResponse) error +} + +type drpcClientApi_GetFileStream struct { + drpc.Stream +} + +func (x *drpcClientApi_GetFileStream) SendAndClose(m *GetFileResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_api_apiproto_protos_api_proto{}); err != nil { + return err + } + return x.CloseSend() +} + +type DRPCClientApi_DeleteFileStream interface { + drpc.Stream + SendAndClose(*DeleteFileResponse) error +} + +type drpcClientApi_DeleteFileStream struct { + drpc.Stream +} + +func (x *drpcClientApi_DeleteFileStream) SendAndClose(m *DeleteFileResponse) error { + if err := x.MsgSend(m, drpcEncoding_File_api_apiproto_protos_api_proto{}); err != nil { + return err + } + return x.CloseSend() +} diff --git a/client/api/apiproto/protos/api.proto b/client/api/apiproto/protos/api.proto index 0c5b7256..6b7e98dd 100644 --- a/client/api/apiproto/protos/api.proto +++ b/client/api/apiproto/protos/api.proto @@ -14,6 +14,9 @@ service ClientApi { rpc AllTrees(AllTreesRequest) returns(AllTreesResponse); rpc AllSpaces(AllSpacesRequest) returns(AllSpacesResponse); rpc LoadSpace(LoadSpaceRequest) returns(LoadSpaceResponse); + rpc PutFile(PutFileRequest) returns(PutFileResponse); + rpc GetFile(GetFileRequest) returns(GetFileResponse); + rpc DeleteFile(DeleteFileRequest) returns(DeleteFileResponse); } message CreateSpaceRequest { @@ -103,4 +106,28 @@ message TreeParamsRequest { message TreeParamsResponse { string rootId = 1; repeated string headIds = 2; -} \ No newline at end of file +} + +message PutFileRequest { + string path = 1; + string spaceId = 2; +} + +message PutFileResponse { + string hash = 1; +} + +message GetFileRequest { + string hash = 1; + string path = 2; +} + +message GetFileResponse { + string path = 1; +} + +message DeleteFileRequest { + string hash = 1; +} + +message DeleteFileResponse {} \ No newline at end of file diff --git a/client/api/rpchandler.go b/client/api/rpchandler.go index e1c85c2a..8fabfdfb 100644 --- a/client/api/rpchandler.go +++ b/client/api/rpchandler.go @@ -7,9 +7,14 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/client/document" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/account" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileservice" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/util/keys/symmetric" + "github.com/ipfs/go-cid" + "go.uber.org/zap" + "io" "math/rand" + "os" ) type rpcHandler struct { @@ -17,6 +22,7 @@ type rpcHandler struct { storageService storage.ClientStorage docService document.Service account account.Service + file fileservice.FileService } func (r *rpcHandler) LoadSpace(ctx context.Context, request *apiproto.LoadSpaceRequest) (resp *apiproto.LoadSpaceResponse, err error) { @@ -144,3 +150,50 @@ func (r *rpcHandler) TreeParams(ctx context.Context, request *apiproto.TreeParam } return } + +func (r *rpcHandler) PutFile(ctx context.Context, request *apiproto.PutFileRequest) (*apiproto.PutFileResponse, error) { + f, err := os.Open(request.Path) + if err != nil { + return nil, err + } + defer f.Close() + n, err := r.file.AddFile(ctx, f) + if err != nil { + return nil, err + } + return &apiproto.PutFileResponse{ + Hash: n.Cid().String(), + }, nil +} + +func (r *rpcHandler) GetFile(ctx context.Context, request *apiproto.GetFileRequest) (*apiproto.GetFileResponse, error) { + c, err := cid.Parse(request.Hash) + if err != nil { + return nil, err + } + + f, err := os.Create(request.Path) + if err != nil { + return nil, err + } + defer f.Close() + + rd, err := r.file.GetFile(ctx, c) + if err != nil { + return nil, err + } + defer rd.Close() + wr, err := io.Copy(f, rd) + if err != nil && err != io.EOF { + return nil, err + } + log.Info("copied bytes", zap.Int64("size", wr)) + return &apiproto.GetFileResponse{ + Path: request.Path, + }, nil +} + +func (r *rpcHandler) DeleteFile(ctx context.Context, request *apiproto.DeleteFileRequest) (*apiproto.DeleteFileResponse, error) { + //TODO implement me + panic("implement me") +} diff --git a/client/api/service.go b/client/api/service.go index 0c09a39f..bf12dde2 100644 --- a/client/api/service.go +++ b/client/api/service.go @@ -9,6 +9,7 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/common/account" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileservice" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace/storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/net/rpc/server" @@ -36,6 +37,7 @@ type service struct { storageService clientstorage.ClientStorage docService document.Service account account.Service + file fileservice.FileService *server.BaseDrpcServer } @@ -46,6 +48,7 @@ func (s *service) Init(a *app.App) (err error) { s.account = a.MustComponent(account.CName).(account.Service) s.cfg = a.MustComponent(config.CName).(*config.Config) s.transport = a.MustComponent(secure.CName).(secure.Service) + s.file = a.MustComponent(fileservice.CName).(fileservice.FileService) return nil } @@ -64,7 +67,7 @@ func (s *service) Run(ctx context.Context) (err error) { if err != nil { return } - return apiproto.DRPCRegisterClientApi(s, &rpcHandler{s.spaceService, s.storageService, s.docService, s.account}) + return apiproto.DRPCRegisterClientApi(s, &rpcHandler{s.spaceService, s.storageService, s.docService, s.account, s.file}) } func (s *service) Close(ctx context.Context) (err error) { diff --git a/client/cmd/client.go b/client/cmd/client.go index 437fc998..42193a19 100644 --- a/client/cmd/client.go +++ b/client/cmd/client.go @@ -11,10 +11,11 @@ import ( "github.com/anytypeio/go-anytype-infrastructure-experiments/client/clientspace/clientcache" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/document" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/rpcstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/storage" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/rpcstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileservice" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonspace" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/metric" @@ -111,6 +112,7 @@ func Bootstrap(a *app.App) { Register(server.New()). Register(document.New()). Register(rpcstore.New()). + Register(fileservice.New()). Register(filestorage.New()). Register(api.New()) } diff --git a/client/filestorage/badgerfilestore/badgerfileindex.go b/client/filestorage/badgerfilestore/badgerfileindex.go new file mode 100644 index 00000000..63d7e1de --- /dev/null +++ b/client/filestorage/badgerfilestore/badgerfileindex.go @@ -0,0 +1,255 @@ +package badgerfilestore + +import ( + "bytes" + "errors" + "github.com/dgraph-io/badger/v3" + "github.com/ipfs/go-cid" + "sync" + "time" +) + +const keyIndexPrefix = "files/indexes/" + +type Op string + +const ( + OpAdd Op = "add" + OpDelete Op = "del" + OpLoad Op = "load" +) + +func NewFileBadgerIndex(db *badger.DB) *FileBadgerIndex { + return &FileBadgerIndex{ + db: db, + workCh: make(chan struct{}, 1), + } +} + +var cidsPool = &sync.Pool{ + New: func() any { + return &Cids{} + }, +} + +type FileBadgerIndex struct { + db *badger.DB + workCh chan struct{} +} + +func (i *FileBadgerIndex) Add(cids *Cids) error { + addTimeBin, _ := time.Now().MarshalBinary() + defer i.pingWorkCh() + return i.db.Update(func(txn *badger.Txn) error { + keys := cids.Keys() + for _, k := range keys { + if err := txn.Set(k, addTimeBin); err != nil { + return err + } + } + return nil + }) +} + +func (i *FileBadgerIndex) Done(cids *Cids) (err error) { + if len(cids.SpaceOps) == 0 { + return nil + } + return i.db.Update(func(txn *badger.Txn) error { + keys := cids.Keys() + for _, k := range keys { + if err := txn.Delete(k); err != nil { + return err + } + } + return nil + }) +} +func (i *FileBadgerIndex) List(limit int) (cids *Cids, err error) { + cids = NewCids() + err = i.db.View(func(txn *badger.Txn) error { + it := txn.NewIterator(badger.IteratorOptions{ + PrefetchSize: limit, + PrefetchValues: false, + Prefix: []byte(keyIndexPrefix), + }) + defer it.Close() + var l int + for it.Rewind(); it.Valid(); it.Next() { + e := cids.AddKey(it.Item().Key()) + if e == nil { + l++ + if l == limit { + return nil + } + } + } + return nil + }) + return +} + +func (i *FileBadgerIndex) Len() (l int, err error) { + err = i.db.View(func(txn *badger.Txn) error { + it := txn.NewIterator(badger.IteratorOptions{ + PrefetchSize: 100, + PrefetchValues: false, + Prefix: []byte(keyIndexPrefix), + }) + defer it.Close() + var l int + for it.Rewind(); it.Valid(); it.Next() { + l++ + } + return nil + }) + return +} + +func (i *FileBadgerIndex) pingWorkCh() { + select { + case i.workCh <- struct{}{}: + default: + } +} + +func (i *FileBadgerIndex) HasWorkCh() chan struct{} { + l, err := i.Len() + if err != nil { + return i.workCh + } + if l > 0 { + i.pingWorkCh() + } + return i.workCh +} + +var errInvalidKey = errors.New("invalid key") + +var sep = []byte("/") + +func parseCIDOp(key []byte) (spaceId string, op Op, k cid.Cid, err error) { + if len(key) <= len(keyIndexPrefix) { + err = errInvalidKey + return + } + key = key[len(keyIndexPrefix):] + fi := bytes.Index(key, sep) + if fi < 0 { + err = errInvalidKey + return + } + spaceId = string(key[:fi]) + key = key[fi+1:] + fi = bytes.Index(key, sep) + if fi < 0 { + err = errInvalidKey + return + } + op = Op(key[:fi]) + k, err = cid.Cast(key[fi+1:]) + return +} + +func NewCids() *Cids { + return cidsPool.Get().(*Cids) +} + +type SpaceCidOps struct { + SpaceId string + Add []cid.Cid + Delete []cid.Cid + Load []cid.Cid +} + +type Cids struct { + SpaceOps []SpaceCidOps + keysBuf [][]byte +} + +func (c *Cids) Add(spaceId string, op Op, k cid.Cid) { + var spaceIndex = -1 + for i, so := range c.SpaceOps { + if so.SpaceId == spaceId { + spaceIndex = i + break + } + } + if spaceIndex == -1 { + spaceIndex = len(c.SpaceOps) + if len(c.SpaceOps) < cap(c.SpaceOps) { + c.SpaceOps = c.SpaceOps[0 : len(c.SpaceOps)+1] + c.SpaceOps[spaceIndex].SpaceId = spaceId + } else { + c.SpaceOps = append(c.SpaceOps, SpaceCidOps{SpaceId: spaceId}) + } + } + switch op { + case OpAdd: + c.SpaceOps[spaceIndex].Add = append(c.SpaceOps[spaceIndex].Add, k) + case OpDelete: + c.SpaceOps[spaceIndex].Delete = append(c.SpaceOps[spaceIndex].Delete, k) + case OpLoad: + c.SpaceOps[spaceIndex].Load = append(c.SpaceOps[spaceIndex].Load, k) + } +} + +func (c *Cids) Keys() [][]byte { + addKey := func(spaceId string, k cid.Cid, op Op) { + if len(c.keysBuf) < cap(c.keysBuf) { + c.keysBuf = c.keysBuf[:len(c.keysBuf)+1] + } else { + c.keysBuf = append(c.keysBuf, nil) + } + ki := len(c.keysBuf) - 1 + buf := bytes.NewBuffer(c.keysBuf[ki][:0]) + buf.WriteString(keyIndexPrefix) + buf.WriteString(spaceId) + buf.WriteString("/") + buf.WriteString(string(op)) + buf.WriteString("/") + buf.WriteString(k.KeyString()) + c.keysBuf[ki] = buf.Bytes() + } + for _, sop := range c.SpaceOps { + for _, k := range sop.Add { + addKey(sop.SpaceId, k, OpAdd) + } + for _, k := range sop.Delete { + addKey(sop.SpaceId, k, OpDelete) + } + for _, k := range sop.Load { + addKey(sop.SpaceId, k, OpLoad) + } + } + return c.keysBuf +} + +func (c *Cids) AddKey(key []byte) error { + spaceId, op, k, err := parseCIDOp(key) + if err != nil { + return err + } + c.Add(spaceId, op, k) + return nil +} + +func (c *Cids) Len() (l int) { + for _, so := range c.SpaceOps { + l += len(so.Load) + l += len(so.Delete) + l += len(so.Add) + } + return +} + +func (c *Cids) Release() { + c.keysBuf = c.keysBuf[:0] + for i, sop := range c.SpaceOps { + c.SpaceOps[i].Add = sop.Add[:0] + c.SpaceOps[i].Delete = sop.Delete[:0] + c.SpaceOps[i].Load = sop.Load[:0] + } + c.SpaceOps = c.SpaceOps[:0] + cidsPool.Put(c) +} diff --git a/client/filestorage/badgerfilestore/badgerfileindex_test.go b/client/filestorage/badgerfilestore/badgerfileindex_test.go new file mode 100644 index 00000000..810a4291 --- /dev/null +++ b/client/filestorage/badgerfilestore/badgerfileindex_test.go @@ -0,0 +1,104 @@ +package badgerfilestore + +import ( + "bytes" + "fmt" + "github.com/dgraph-io/badger/v3" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "os" + "testing" +) + +func TestFileBadgerIndex_Add(t *testing.T) { + tmpDir, err := os.MkdirTemp("", "badgerfileindextest_*") + require.NoError(t, err) + defer os.RemoveAll(tmpDir) + db, err := badger.Open(badger.DefaultOptions(tmpDir)) + require.NoError(t, err) + defer db.Close() + index := NewFileBadgerIndex(db) + var cids = NewCids() + defer cids.Release() + for _, spaceId := range []string{"space1", "space2"} { + for i := 0; i < 5; i++ { + cids.Add(spaceId, OpAdd, blocks.NewBlock([]byte(fmt.Sprint("add", i))).Cid()) + } + for i := 0; i < 3; i++ { + cids.Add(spaceId, OpDelete, blocks.NewBlock([]byte(fmt.Sprint("del", i))).Cid()) + } + for i := 0; i < 2; i++ { + cids.Add(spaceId, OpLoad, blocks.NewBlock([]byte(fmt.Sprint("load", i))).Cid()) + } + } + require.NoError(t, index.Add(cids)) + + cids, err = index.List(100) + require.NoError(t, err) + assert.Len(t, cids.SpaceOps, 2) + for _, s := range cids.SpaceOps { + assert.Len(t, s.Add, 5) + assert.Len(t, s.Delete, 3) + assert.Len(t, s.Load, 2) + } +} + +func TestCids_Add(t *testing.T) { + for i := 0; i < 3; i++ { + var bs = []blocks.Block{ + blocks.NewBlock([]byte("1")), + blocks.NewBlock([]byte("2")), + blocks.NewBlock([]byte("3")), + blocks.NewBlock([]byte("4")), + blocks.NewBlock([]byte("5")), + } + cids := NewCids() + for _, b := range bs { + cids.Add("1", OpAdd, b.Cid()) + } + keys := cids.Keys() + contains := func(c cid.Cid) bool { + for _, k := range keys { + if bytes.HasSuffix(k, c.Bytes()) { + return true + } + } + return false + } + for _, b := range bs { + assert.True(t, contains(b.Cid())) + } + kcids := NewCids() + for _, k := range keys { + require.NoError(t, kcids.AddKey(k)) + } + + require.Len(t, kcids.SpaceOps, 1) + assert.Equal(t, kcids.SpaceOps[0].Add, cids.SpaceOps[0].Add) + + cids.Release() + kcids.Release() + } +} + +func BenchmarkCids_Add(b *testing.B) { + var bs = []blocks.Block{ + blocks.NewBlock([]byte("1")), + blocks.NewBlock([]byte("2")), + blocks.NewBlock([]byte("3")), + blocks.NewBlock([]byte("4")), + blocks.NewBlock([]byte("5")), + } + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + cids := NewCids() + for _, b := range bs { + cids.Add("1", OpAdd, b.Cid()) + } + cids.Keys() + cids.Release() + } +} diff --git a/client/filestorage/filebadgerstore/filebadgerstore.go b/client/filestorage/badgerfilestore/badgerfilestore.go similarity index 62% rename from client/filestorage/filebadgerstore/filebadgerstore.go rename to client/filestorage/badgerfilestore/badgerfilestore.go index d0044eee..7860841a 100644 --- a/client/filestorage/filebadgerstore/filebadgerstore.go +++ b/client/filestorage/badgerfilestore/badgerfilestore.go @@ -1,4 +1,4 @@ -package filebadgerstore +package badgerfilestore import ( "context" @@ -6,11 +6,12 @@ import ( "github.com/dgraph-io/badger/v3" blocks "github.com/ipfs/go-block-format" "github.com/ipfs/go-cid" + format "github.com/ipfs/go-ipld-format" ) const keyPrefix = "files/blocks/" -func NewBadgerStorage(db *badger.DB) fileblockstore.BlockStoreExistsCIDs { +func NewBadgerStorage(db *badger.DB) fileblockstore.BlockStoreLocal { return &badgerStorage{db: db} } @@ -19,16 +20,19 @@ type badgerStorage struct { } func (f *badgerStorage) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { - err = f.db.View(func(txn *badger.Txn) error { - it, gerr := txn.Get(key(k)) - if gerr != nil { - return gerr + err = f.db.View(func(txn *badger.Txn) (e error) { + it, e := txn.Get(key(k)) + if e != nil { + return e } - return it.Value(func(val []byte) error { - b = blocks.NewBlock(val) - return nil - }) + if b, e = blockFromItem(it); e != nil { + return e + } + return }) + if err == badger.ErrKeyNotFound { + err = &format.ErrNotFound{Cid: k} + } return } @@ -43,10 +47,11 @@ func (f *badgerStorage) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks if gerr != nil { return gerr } - _ = it.Value(func(val []byte) error { - res <- blocks.NewBlock(val) - return nil - }) + b, berr := blockFromItem(it) + if berr != nil { + return berr + } + res <- b } return nil }) @@ -86,3 +91,26 @@ func (f *badgerStorage) ExistsCids(ctx context.Context, ks []cid.Cid) (exists [] func key(c cid.Cid) []byte { return []byte(keyPrefix + c.String()) } + +func parseCID(key []byte) (cid.Cid, error) { + if len(key) <= len(keyPrefix) { + return cid.Cid{}, errInvalidKey + } + return cid.Decode(string(key[len(keyPrefix):])) +} + +func blockFromItem(it *badger.Item) (b blocks.Block, err error) { + c, err := parseCID(it.Key()) + if err != nil { + return nil, err + } + if err = it.Value(func(val []byte) error { + if b, err = blocks.NewBlockWithCid(val, c); err != nil { + return err + } + return nil + }); err != nil { + return + } + return +} diff --git a/client/filestorage/badgerfilestore/badgerfilestore_test.go b/client/filestorage/badgerfilestore/badgerfilestore_test.go new file mode 100644 index 00000000..4039a748 --- /dev/null +++ b/client/filestorage/badgerfilestore/badgerfilestore_test.go @@ -0,0 +1,101 @@ +package badgerfilestore + +import ( + "context" + "github.com/dgraph-io/badger/v3" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "os" + "testing" + "time" +) + +var ctx = context.Background() + +func TestBadgerStorage_Add(t *testing.T) { + tmpDir, err := os.MkdirTemp("", "badgerfilestore_*") + require.NoError(t, err) + defer os.RemoveAll(tmpDir) + db, err := badger.Open(badger.DefaultOptions(tmpDir)) + require.NoError(t, err) + defer db.Close() + + s := NewBadgerStorage(db) + bs := []blocks.Block{ + blocks.NewBlock([]byte("1")), + blocks.NewBlock([]byte("2")), + blocks.NewBlock([]byte("3")), + } + assert.NoError(t, s.Add(ctx, bs)) + +} + +func TestBadgerStorage_Get(t *testing.T) { + tmpDir, err := os.MkdirTemp("", "badgerfilestore_*") + require.NoError(t, err) + defer os.RemoveAll(tmpDir) + db, err := badger.Open(badger.DefaultOptions(tmpDir)) + require.NoError(t, err) + defer db.Close() + + s := NewBadgerStorage(db) + bs := []blocks.Block{ + blocks.NewBlock([]byte("1")), + blocks.NewBlock([]byte("2")), + blocks.NewBlock([]byte("3")), + } + require.NoError(t, s.Add(ctx, bs)) + + cids := make([]cid.Cid, 0, len(bs)) + for _, b := range bs { + cids = append(cids, b.Cid()) + } + cids = append(cids, blocks.NewBlock([]byte("4")).Cid()) + + b, err := s.Get(ctx, bs[0].Cid()) + require.NoError(t, err) + assert.Equal(t, bs[0].RawData(), b.RawData()) + + ecids, err := s.ExistsCids(ctx, cids) + require.NoError(t, err) + assert.Len(t, ecids, 3) +} + +func TestBadgerStorage_GetMany(t *testing.T) { + tmpDir, err := os.MkdirTemp("", "badgerfilestore_*") + require.NoError(t, err) + defer os.RemoveAll(tmpDir) + db, err := badger.Open(badger.DefaultOptions(tmpDir)) + require.NoError(t, err) + defer db.Close() + + s := NewBadgerStorage(db) + bs := []blocks.Block{ + blocks.NewBlock([]byte("1")), + blocks.NewBlock([]byte("2")), + blocks.NewBlock([]byte("3")), + } + require.NoError(t, s.Add(ctx, bs)) + + cids := make([]cid.Cid, 0, len(bs)) + for _, b := range bs { + cids = append(cids, b.Cid()) + } + + res := s.GetMany(ctx, cids) + var resB []blocks.Block + for i := 0; i < len(bs); i++ { + select { + case b := <-res: + resB = append(resB, b) + case <-time.After(time.Second): + t.Error("timeout") + return + } + } + assert.Len(t, resB, 3) + _, ok := <-res + assert.False(t, ok) +} diff --git a/client/filestorage/filestorage.go b/client/filestorage/fileservice.go similarity index 62% rename from client/filestorage/filestorage.go rename to client/filestorage/fileservice.go index 1714e8d1..ae9f594d 100644 --- a/client/filestorage/filestorage.go +++ b/client/filestorage/fileservice.go @@ -3,16 +3,18 @@ package filestorage import ( "context" "github.com/anytypeio/go-anytype-infrastructure-experiments/client/badgerprovider" - "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/filebadgerstore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/badgerfilestore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/rpcstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore/cachestore" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/rpcstore" "io" ) const CName = fileblockstore.CName +var log = logger.NewNamed(CName) + func New() FileStorage { return &fileStorage{} } @@ -24,15 +26,20 @@ type FileStorage interface { type fileStorage struct { fileblockstore.BlockStore + syncer *syncer + syncerCancel context.CancelFunc } func (f *fileStorage) Init(a *app.App) (err error) { db := a.MustComponent(badgerprovider.CName).(badgerprovider.BadgerProvider).Badger() - bs := filebadgerstore.NewBadgerStorage(db) - f.BlockStore = &cachestore.CacheStore{ - Cache: bs, - Origin: a.MustComponent(rpcstore.CName).(rpcstore.Service).NewStore(), + bs := badgerfilestore.NewBadgerStorage(db) + ps := &proxyStore{ + cache: bs, + origin: a.MustComponent(rpcstore.CName).(rpcstore.Service).NewStore(), + index: badgerfilestore.NewFileBadgerIndex(db), } + f.BlockStore = ps + f.syncer = &syncer{ps: ps, done: make(chan struct{})} return } @@ -41,9 +48,15 @@ func (f *fileStorage) Name() (name string) { } func (f *fileStorage) Run(ctx context.Context) (err error) { + ctx, f.syncerCancel = context.WithCancel(ctx) + go f.syncer.run(ctx) return } func (f *fileStorage) Close(ctx context.Context) (err error) { + if f.syncerCancel != nil { + f.syncerCancel() + <-f.syncer.done + } return f.BlockStore.(io.Closer).Close() } diff --git a/client/filestorage/proxystore.go b/client/filestorage/proxystore.go new file mode 100644 index 00000000..ad726288 --- /dev/null +++ b/client/filestorage/proxystore.go @@ -0,0 +1,130 @@ +package filestorage + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/badgerfilestore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + blocks "github.com/ipfs/go-block-format" + "github.com/ipfs/go-cid" + format "github.com/ipfs/go-ipld-format" + "go.uber.org/zap" + "io" +) + +type proxyStore struct { + cache fileblockstore.BlockStoreLocal + origin fileblockstore.BlockStore + index *badgerfilestore.FileBadgerIndex +} + +func (c *proxyStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { + log.Debug("get cid", zap.String("cid", k.String())) + if b, err = c.cache.Get(ctx, k); err != nil { + if format.IsNotFound(err) { + err = nil + log.Debug("proxyStore local cid not found", zap.String("cid", k.String())) + } else { + return + } + } else { + return + } + if b, err = c.origin.Get(ctx, k); err != nil { + log.Debug("proxyStore remote cid error", zap.String("cid", k.String()), zap.Error(err)) + return + } + if addErr := c.cache.Add(ctx, []blocks.Block{b}); addErr != nil { + log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) + } + return +} + +func (c *proxyStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { + cachedCids, localErr := c.cache.ExistsCids(ctx, ks) + var originCids []cid.Cid + if localErr != nil { + log.Error("proxy store hasCIDs error", zap.Error(localErr)) + originCids = ks + } else { + if len(cachedCids) != len(ks) { + set := cid.NewSet() + for _, cCid := range cachedCids { + set.Add(cCid) + } + originCids = ks[:0] + for _, k := range ks { + if !set.Has(k) { + originCids = append(originCids, k) + } + } + } + } + log.Debug("get many cids", zap.Int("cached", len(cachedCids)), zap.Int("origin", len(originCids))) + if len(originCids) == 0 { + return c.cache.GetMany(ctx, cachedCids) + } + var results = make(chan blocks.Block) + + go func() { + defer close(results) + localResults := c.cache.GetMany(ctx, cachedCids) + originResults := c.origin.GetMany(ctx, originCids) + oOk, cOk := true, true + for { + var cb, ob blocks.Block + select { + case cb, cOk = <-localResults: + if cOk { + results <- cb + } + case ob, oOk = <-originResults: + if oOk { + if addErr := c.cache.Add(ctx, []blocks.Block{ob}); addErr != nil { + log.Error("add block to cache error", zap.Error(addErr)) + } + results <- ob + } + case <-ctx.Done(): + return + } + if !oOk && !cOk { + return + } + } + }() + return results +} + +func (c *proxyStore) Add(ctx context.Context, bs []blocks.Block) error { + indexCids := badgerfilestore.NewCids() + defer indexCids.Release() + for _, b := range bs { + indexCids.Add(fileblockstore.CtxGetSpaceId(ctx), badgerfilestore.OpAdd, b.Cid()) + } + if err := c.index.Add(indexCids); err != nil { + return err + } + return c.cache.Add(ctx, bs) +} + +func (c *proxyStore) Delete(ctx context.Context, k cid.Cid) error { + indexCids := badgerfilestore.NewCids() + defer indexCids.Release() + indexCids.Add(fileblockstore.CtxGetSpaceId(ctx), badgerfilestore.OpDelete, k) + if err := c.index.Add(indexCids); err != nil { + return err + } + return c.cache.Delete(ctx, k) +} + +func (c *proxyStore) Close() (err error) { + if closer, ok := c.cache.(io.Closer); ok { + if localErr := closer.Close(); localErr != nil { + log.Error("error while closing cache store", zap.Error(localErr)) + } + } + if closer, ok := c.origin.(io.Closer); ok { + return closer.Close() + } + return nil +} diff --git a/common/commonfile/fileblockstore/cachestore/cachestore_test.go b/client/filestorage/proxystore_test.go similarity index 53% rename from common/commonfile/fileblockstore/cachestore/cachestore_test.go rename to client/filestorage/proxystore_test.go index a554052f..c33c86bd 100644 --- a/common/commonfile/fileblockstore/cachestore/cachestore_test.go +++ b/client/filestorage/proxystore_test.go @@ -1,13 +1,17 @@ -package cachestore +package filestorage import ( "context" "fmt" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/badgerfilestore" + "github.com/dgraph-io/badger/v3" blocks "github.com/ipfs/go-block-format" "github.com/ipfs/go-cid" format "github.com/ipfs/go-ipld-format" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "os" + "sync" "testing" "time" ) @@ -16,29 +20,29 @@ var ctx = context.Background() func TestCacheStore_Add(t *testing.T) { t.Run("success", func(t *testing.T) { - cs := &CacheStore{ - Cache: newTestStore(nil), - Origin: newTestStore(nil), - } - defer cs.Close() + cs := newPSFixture(t) + defer cs.Finish(t) testBlocks := newTestBocks("1", "2", "3") require.NoError(t, cs.Add(ctx, testBlocks)) for _, b := range testBlocks { - gb, err := cs.Cache.Get(ctx, b.Cid()) + gb, err := cs.cache.Get(ctx, b.Cid()) assert.NoError(t, err) assert.NotNil(t, gb) } + cids, err := cs.index.List(100) + require.NoError(t, err) + require.Len(t, cids.SpaceOps, 1) + assert.Len(t, cids.SpaceOps[0].Add, len(testBlocks)) }) } func TestCacheStore_Get(t *testing.T) { t.Run("exists local", func(t *testing.T) { testBlocks := newTestBocks("1", "2", "3") - cs := &CacheStore{ - Cache: newTestStore(testBlocks), - Origin: newTestStore(testBlocks), - } - defer cs.Close() + cs := newPSFixture(t) + defer cs.Finish(t) + require.NoError(t, cs.cache.Add(ctx, testBlocks)) + require.NoError(t, cs.origin.Add(ctx, testBlocks)) for _, b := range testBlocks { gb, err := cs.Get(ctx, b.Cid()) assert.NoError(t, err) @@ -47,18 +51,17 @@ func TestCacheStore_Get(t *testing.T) { }) t.Run("exists remote", func(t *testing.T) { testBlocks := newTestBocks("1", "2", "3") - cs := &CacheStore{ - Cache: newTestStore(testBlocks[:1]), - Origin: newTestStore(testBlocks), - } - defer cs.Close() + cs := newPSFixture(t) + defer cs.Finish(t) + require.NoError(t, cs.cache.Add(ctx, testBlocks[:1])) + require.NoError(t, cs.origin.Add(ctx, testBlocks)) for _, b := range testBlocks { gb, err := cs.Get(ctx, b.Cid()) assert.NoError(t, err) assert.NotNil(t, gb) } for _, b := range testBlocks { - lb, err := cs.Cache.Get(ctx, b.Cid()) + lb, err := cs.cache.Get(ctx, b.Cid()) assert.NoError(t, err) assert.NotNil(t, lb) } @@ -68,61 +71,63 @@ func TestCacheStore_Get(t *testing.T) { func TestCacheStore_GetMany(t *testing.T) { t.Run("all local", func(t *testing.T) { testBlocks := newTestBocks("1", "2", "3") - cs := &CacheStore{ - Cache: newTestStore(testBlocks), - Origin: newTestStore(testBlocks), - } - defer cs.Close() + cs := newPSFixture(t) + defer cs.Finish(t) + require.NoError(t, cs.cache.Add(ctx, testBlocks)) + require.NoError(t, cs.origin.Add(ctx, testBlocks)) var cids, resCids []cid.Cid for _, b := range testBlocks { cids = append(cids, b.Cid()) } ch := cs.GetMany(ctx, cids) - for { - select { - case b, ok := <-ch: - if !ok { + func() { + for { + select { + case b, ok := <-ch: + if !ok { + return + } else { + resCids = append(resCids, b.Cid()) + } + case <-time.After(time.Second): + assert.NoError(t, fmt.Errorf("timeout")) return - } else { - resCids = append(resCids, b.Cid()) } - case <-time.After(time.Second): - assert.NoError(t, fmt.Errorf("timeout")) - return } - } + }() assert.ElementsMatch(t, cids, resCids) }) t.Run("partial local", func(t *testing.T) { testBlocks := newTestBocks("1", "2", "3") - cs := &CacheStore{ - Cache: newTestStore(testBlocks[:1]), - Origin: newTestStore(testBlocks), - } - defer cs.Close() + cs := newPSFixture(t) + defer cs.Finish(t) + require.NoError(t, cs.cache.Add(ctx, testBlocks[:1])) + require.NoError(t, cs.origin.Add(ctx, testBlocks)) var cids, resCids []cid.Cid for _, b := range testBlocks { cids = append(cids, b.Cid()) } ch := cs.GetMany(ctx, cids) - for { - select { - case b, ok := <-ch: - if !ok { + func() { + for { + select { + case b, ok := <-ch: + if !ok { + return + } else { + resCids = append(resCids, b.Cid()) + } + case <-time.After(time.Second): + assert.NoError(t, fmt.Errorf("timeout")) return - } else { - resCids = append(resCids, b.Cid()) } - case <-time.After(time.Second): - assert.NoError(t, fmt.Errorf("timeout")) - return } - } - assert.ElementsMatch(t, cids, resCids) + }() + require.Equal(t, len(cids), len(resCids)) for _, b := range testBlocks { - gb, err := cs.Cache.Get(ctx, b.Cid()) + gb, err := cs.cache.Get(ctx, b.Cid()) assert.NoError(t, err) assert.NotNil(t, gb) } @@ -131,14 +136,12 @@ func TestCacheStore_GetMany(t *testing.T) { func TestCacheStore_Delete(t *testing.T) { testBlocks := newTestBocks("1", "2", "3") - cs := &CacheStore{ - Cache: newTestStore(testBlocks[:1]), - Origin: newTestStore(testBlocks), - } - defer cs.Close() + cs := newPSFixture(t) + defer cs.Finish(t) + require.NoError(t, cs.cache.Add(ctx, testBlocks)) for _, b := range testBlocks { require.NoError(t, cs.Delete(ctx, b.Cid())) - gb, err := cs.Get(ctx, b.Cid()) + gb, err := cs.cache.Get(ctx, b.Cid()) assert.Nil(t, gb) assert.True(t, format.IsNotFound(err)) } @@ -146,18 +149,21 @@ func TestCacheStore_Delete(t *testing.T) { func newTestStore(bs []blocks.Block) *testStore { ts := &testStore{ - store: make(map[cid.Cid]blocks.Block), + store: make(map[string]blocks.Block), } ts.Add(context.Background(), bs) return ts } type testStore struct { - store map[cid.Cid]blocks.Block + store map[string]blocks.Block + mu sync.Mutex } func (t *testStore) Get(ctx context.Context, k cid.Cid) (blocks.Block, error) { - if b, ok := t.store[k]; ok { + t.mu.Lock() + defer t.mu.Unlock() + if b, ok := t.store[k.String()]; ok { return b, nil } return nil, &format.ErrNotFound{Cid: k} @@ -182,8 +188,10 @@ func (t *testStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Blo } func (t *testStore) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) { + t.mu.Lock() + defer t.mu.Unlock() for _, k := range ks { - if _, ok := t.store[k]; ok { + if _, ok := t.store[k.String()]; ok { exists = append(exists, k) } } @@ -191,15 +199,19 @@ func (t *testStore) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid. } func (t *testStore) Add(ctx context.Context, bs []blocks.Block) error { + t.mu.Lock() + defer t.mu.Unlock() for _, b := range bs { - t.store[b.Cid()] = b + t.store[b.Cid().String()] = b } return nil } func (t *testStore) Delete(ctx context.Context, c cid.Cid) error { - if _, ok := t.store[c]; ok { - delete(t.store, c) + t.mu.Lock() + defer t.mu.Unlock() + if _, ok := t.store[c.String()]; ok { + delete(t.store, c.String()) return nil } return &format.ErrNotFound{Cid: c} @@ -209,6 +221,32 @@ func (t *testStore) Close() (err error) { return nil } +type psFixture struct { + *proxyStore + tmpDir string + db *badger.DB +} + +func newPSFixture(t *testing.T) *psFixture { + var err error + fx := &psFixture{} + fx.tmpDir, err = os.MkdirTemp("", "proxyStore_*") + require.NoError(t, err) + fx.db, err = badger.Open(badger.DefaultOptions(fx.tmpDir).WithLoggingLevel(badger.ERROR)) + require.NoError(t, err) + fx.proxyStore = &proxyStore{ + cache: newTestStore(nil), + origin: newTestStore(nil), + index: badgerfilestore.NewFileBadgerIndex(fx.db), + } + return fx +} + +func (fx *psFixture) Finish(t *testing.T) { + assert.NoError(t, fx.db.Close()) + _ = os.RemoveAll(fx.tmpDir) +} + func newTestBocks(ids ...string) (bs []blocks.Block) { for _, id := range ids { bs = append(bs, blocks.NewBlock([]byte(id))) diff --git a/common/commonfile/rpcstore/client.go b/client/filestorage/rpcstore/client.go similarity index 97% rename from common/commonfile/rpcstore/client.go rename to client/filestorage/rpcstore/client.go index 8a1841c3..0b0327e6 100644 --- a/common/commonfile/rpcstore/client.go +++ b/client/filestorage/rpcstore/client.go @@ -125,6 +125,7 @@ func (c *client) put(ctx context.Context, t *task) (err error) { }); err != nil { return rpcerr.Unwrap(err) } + log.Debug("put cid", zap.String("cid", t.cid.String())) t.ready <- t c.stat.Add(st, len(t.data)) return @@ -164,7 +165,7 @@ func (c *client) get(ctx context.Context, t *task) (err error) { return } -func (c *client) readStream() { +func (c *client) readStream(stream fileproto.DRPCFile_GetBlocksClient) { var err error defer func() { log.Info("readStream closed", zap.String("peerId", c.peerId), zap.Error(err)) @@ -174,7 +175,7 @@ func (c *client) readStream() { }() for { var resp *fileproto.GetBlockResponse - resp, err = c.blocksStream.Recv() + resp, err = stream.Recv() if err != nil { return } @@ -230,7 +231,7 @@ func (c *client) getStream(ctx context.Context) (fileproto.DRPCFile_GetBlocksCli if c.blocksStream, err = fileproto.NewDRPCFileClient(peer).GetBlocks(context.Background()); err != nil { return nil, err } - go c.readStream() + go c.readStream(c.blocksStream) return c.blocksStream, nil } diff --git a/common/commonfile/rpcstore/clientmgr.go b/client/filestorage/rpcstore/clientmgr.go similarity index 99% rename from common/commonfile/rpcstore/clientmgr.go rename to client/filestorage/rpcstore/clientmgr.go index 528db372..45d4c579 100644 --- a/common/commonfile/rpcstore/clientmgr.go +++ b/client/filestorage/rpcstore/clientmgr.go @@ -13,7 +13,7 @@ import ( const ( maxConnections = 10 - maxTasks = 1000 + maxTasks = 100 ) var ( diff --git a/common/commonfile/rpcstore/service.go b/client/filestorage/rpcstore/service.go similarity index 100% rename from common/commonfile/rpcstore/service.go rename to client/filestorage/rpcstore/service.go diff --git a/common/commonfile/rpcstore/stat.go b/client/filestorage/rpcstore/stat.go similarity index 100% rename from common/commonfile/rpcstore/stat.go rename to client/filestorage/rpcstore/stat.go diff --git a/common/commonfile/rpcstore/store.go b/client/filestorage/rpcstore/store.go similarity index 100% rename from common/commonfile/rpcstore/store.go rename to client/filestorage/rpcstore/store.go diff --git a/common/commonfile/rpcstore/store_test.go b/client/filestorage/rpcstore/store_test.go similarity index 100% rename from common/commonfile/rpcstore/store_test.go rename to client/filestorage/rpcstore/store_test.go diff --git a/common/commonfile/rpcstore/task.go b/client/filestorage/rpcstore/task.go similarity index 100% rename from common/commonfile/rpcstore/task.go rename to client/filestorage/rpcstore/task.go diff --git a/client/filestorage/syncer.go b/client/filestorage/syncer.go new file mode 100644 index 00000000..ee4d2d23 --- /dev/null +++ b/client/filestorage/syncer.go @@ -0,0 +1,133 @@ +package filestorage + +import ( + "context" + "github.com/anytypeio/go-anytype-infrastructure-experiments/client/filestorage/badgerfilestore" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" + blocks "github.com/ipfs/go-block-format" + "go.uber.org/zap" + "sync" + "time" +) + +const syncerOpBatch = 10 + +type syncer struct { + ps *proxyStore + done chan struct{} +} + +func (s *syncer) run(ctx context.Context) { + defer close(s.done) + for { + select { + case <-ctx.Done(): + return + case <-time.After(time.Minute): + case <-s.ps.index.HasWorkCh(): + } + for s.sync(ctx) > 0 { + } + } +} + +func (s *syncer) sync(ctx context.Context) (l int) { + cids, err := s.ps.index.List(syncerOpBatch) + if err != nil { + log.Error("index list error", zap.Error(err)) + return + } + defer cids.Release() + l = cids.Len() + log.Debug("remote file sync, got tasks to sync", zap.Int("count", l)) + if l == 0 { + return + } + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, time.Minute) + defer cancel() + var wg sync.WaitGroup + for _, sOps := range cids.SpaceOps { + if len(sOps.Load) > 0 { + wg.Add(1) + go func(opt badgerfilestore.SpaceCidOps) { + defer wg.Done() + s.load(ctx, opt) + }(sOps) + } + if len(sOps.Delete) > 0 { + wg.Add(1) + go func(opt badgerfilestore.SpaceCidOps) { + defer wg.Done() + s.delete(ctx, opt) + }(sOps) + } + if len(sOps.Add) > 0 { + wg.Add(1) + go func(opt badgerfilestore.SpaceCidOps) { + defer wg.Done() + s.add(ctx, opt) + }(sOps) + } + } + wg.Wait() + return +} + +func (s *syncer) load(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) { + ctx = fileblockstore.CtxWithSpaceId(ctx, spaceOps.SpaceId) + res := s.ps.origin.GetMany(ctx, spaceOps.Load) + doneCids := badgerfilestore.NewCids() + defer doneCids.Release() + for b := range res { + if err := s.ps.cache.Add(ctx, []blocks.Block{b}); err != nil { + log.Error("syncer: can't add to local store", zap.Error(err)) + continue + } + doneCids.Add(spaceOps.SpaceId, badgerfilestore.OpLoad, b.Cid()) + } + if err := s.ps.index.Done(doneCids); err != nil { + log.Error("syncer: index.Done error", zap.Error(err)) + return + } + log.Info("successfully loaded cids", zap.Int("count", doneCids.Len())) +} + +func (s *syncer) add(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) { + doneCids := badgerfilestore.NewCids() + defer doneCids.Release() + res := s.ps.cache.GetMany(ctx, spaceOps.Add) + var bs []blocks.Block + for b := range res { + bs = append(bs, b) + doneCids.Add(spaceOps.SpaceId, badgerfilestore.OpAdd, b.Cid()) + } + ctx = fileblockstore.CtxWithSpaceId(ctx, spaceOps.SpaceId) + if err := s.ps.origin.Add(ctx, bs); err != nil { + log.Debug("syncer: can't add to remote store", zap.Error(err)) + return + } + + if err := s.ps.index.Done(doneCids); err != nil { + log.Error("syncer: index.Done error", zap.Error(err)) + return + } + log.Info("successfully added cids", zap.Int("count", doneCids.Len()), zap.Stringers("cids", doneCids.SpaceOps[0].Add)) +} + +func (s *syncer) delete(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) { + doneCids := badgerfilestore.NewCids() + defer doneCids.Release() + ctx = fileblockstore.CtxWithSpaceId(ctx, spaceOps.SpaceId) + for _, c := range spaceOps.Delete { + if err := s.ps.origin.Delete(ctx, c); err != nil { + log.Debug("syncer: can't remove from remote", zap.Error(err)) + continue + } + doneCids.Add(spaceOps.SpaceId, badgerfilestore.OpDelete, c) + } + if err := s.ps.index.Done(doneCids); err != nil { + log.Error("syncer: index.Done error", zap.Error(err)) + } + log.Info("successfully removed cids", zap.Int("count", doneCids.Len())) +} diff --git a/client/filestorage/syncer_test.go b/client/filestorage/syncer_test.go new file mode 100644 index 00000000..d7df8f8d --- /dev/null +++ b/client/filestorage/syncer_test.go @@ -0,0 +1,106 @@ +package filestorage + +import ( + "context" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "testing" + "time" +) + +func TestSyncer_add(t *testing.T) { + t.Log("start test") + fx := newPSFixture(t) + defer fx.Finish(t) + s := &syncer{ps: fx.proxyStore, done: make(chan struct{})} + ctx, cancel := context.WithCancel(ctx) + defer func() { + cancel() + <-s.done + }() + bs := newTestBocks("1", "2") + require.NoError(t, fx.Add(ctx, bs)) + go func() { + s.run(ctx) + }() + time.Sleep(time.Millisecond * 10) + bs2 := newTestBocks("3", "4") + require.NoError(t, fx.Add(ctx, bs2)) + var done = make(chan struct{}) + go func() { + defer close(done) + for _, b := range append(bs, bs2...) { + t.Log("check", b.Cid().String()) + for { + select { + case <-ctx.Done(): + return + default: + } + ab, err := fx.origin.Get(ctx, b.Cid()) + if err == nil { + assert.Equal(t, b.RawData(), ab.RawData()) + break + } + time.Sleep(time.Millisecond) + } + } + }() + select { + case <-done: + case <-time.After(time.Second): + t.Errorf("timeout") + } +} + +func TestSyncer_delete(t *testing.T) { + fx := newPSFixture(t) + defer fx.Finish(t) + s := &syncer{ps: fx.proxyStore, done: make(chan struct{})} + ctx, cancel := context.WithCancel(ctx) + defer func() { + cancel() + <-s.done + }() + go func() { + s.run(ctx) + }() + bs := newTestBocks("1", "2") + require.NoError(t, fx.cache.Add(ctx, bs)) + require.NoError(t, fx.origin.Add(ctx, bs)) + + for cid := range fx.cache.(*testStore).store { + t.Log("cache", cid) + } + for cid := range fx.origin.(*testStore).store { + t.Log("origin", cid) + } + + for _, b := range bs { + require.NoError(t, fx.Delete(ctx, b.Cid())) + } + + var done = make(chan struct{}) + go func() { + defer close(done) + for _, b := range bs { + for { + select { + case <-ctx.Done(): + return + default: + } + _, err := fx.origin.Get(ctx, b.Cid()) + if err != nil { + break + } + time.Sleep(time.Millisecond) + } + } + }() + select { + case <-done: + case <-time.After(time.Second): + t.Errorf("timeout") + } +} diff --git a/common/commonfile/fileblockstore/cachestore/cachestore.go b/common/commonfile/fileblockstore/cachestore/cachestore.go deleted file mode 100644 index a7592291..00000000 --- a/common/commonfile/fileblockstore/cachestore/cachestore.go +++ /dev/null @@ -1,122 +0,0 @@ -package cachestore - -import ( - "context" - "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" - blocks "github.com/ipfs/go-block-format" - "github.com/ipfs/go-cid" - format "github.com/ipfs/go-ipld-format" - "go.uber.org/zap" - "io" -) - -type CacheStore struct { - Cache fileblockstore.BlockStoreExistsCIDs - Origin fileblockstore.BlockStore - Log *zap.Logger -} - -func (c *CacheStore) Get(ctx context.Context, k cid.Cid) (b blocks.Block, err error) { - if b, err = c.Cache.Get(ctx, k); err != nil { - if format.IsNotFound(err) { - err = nil - } else { - return - } - } else { - return - } - if b, err = c.Origin.Get(ctx, k); err != nil { - return - } - if addErr := c.Cache.Add(ctx, []blocks.Block{b}); addErr != nil { - c.Log.Error("block fetched from origin but got error for add to cache", zap.Error(addErr)) - } - return -} - -func (c *CacheStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { - cachedCids, localErr := c.Cache.ExistsCids(ctx, ks) - var originCids []cid.Cid - if localErr != nil { - c.Log.Error("hasCIDs error", zap.Error(localErr)) - originCids = ks - } else { - if len(cachedCids) != len(ks) { - set := cid.NewSet() - for _, cCid := range cachedCids { - set.Add(cCid) - } - originCids = ks[:0] - for _, k := range ks { - if !set.Has(k) { - originCids = append(originCids, k) - } - } - } - } - - if len(originCids) == 0 { - return c.Cache.GetMany(ctx, cachedCids) - } - - var results = make(chan blocks.Block) - - go func() { - defer close(results) - localResults := c.Cache.GetMany(ctx, cachedCids) - originResults := c.Origin.GetMany(ctx, originCids) - for { - var cb, ob blocks.Block - var cOk, oOk bool - select { - case cb, cOk = <-localResults: - if cOk { - results <- cb - } - case ob, oOk = <-originResults: - if oOk { - if addErr := c.Cache.Add(ctx, []blocks.Block{ob}); addErr != nil { - c.Log.Error("add block to cache error", zap.Error(addErr)) - } - results <- ob - } - case <-ctx.Done(): - return - } - if !oOk && !cOk { - return - } - } - }() - - return results -} - -func (c *CacheStore) Add(ctx context.Context, b []blocks.Block) error { - if localErr := c.Cache.Add(ctx, b); localErr != nil { - c.Log.Error("cache add error", zap.Error(localErr)) - } - return c.Origin.Add(ctx, b) -} - -func (c *CacheStore) Delete(ctx context.Context, k cid.Cid) error { - if localErr := c.Cache.Delete(ctx, k); localErr != nil { - if !format.IsNotFound(localErr) { - c.Log.Error("error while delete block", zap.Error(localErr)) - } - } - return c.Origin.Delete(ctx, k) -} - -func (c *CacheStore) Close() (err error) { - if closer, ok := c.Cache.(io.Closer); ok { - if localErr := closer.Close(); localErr != nil { - c.Log.Error("error while closing cache store", zap.Error(localErr)) - } - } - if closer, ok := c.Origin.(io.Closer); ok { - return closer.Close() - } - return nil -} diff --git a/common/commonfile/fileblockstore/fileblockstore.go b/common/commonfile/fileblockstore/fileblockstore.go index 4d29e582..0eb08a68 100644 --- a/common/commonfile/fileblockstore/fileblockstore.go +++ b/common/commonfile/fileblockstore/fileblockstore.go @@ -30,7 +30,7 @@ type BlockStore interface { Delete(ctx context.Context, c cid.Cid) error } -type BlockStoreExistsCIDs interface { +type BlockStoreLocal interface { BlockStore ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) } diff --git a/common/commonfile/fileserver/rpchandler.go b/common/commonfile/fileserver/rpchandler.go index fac8b9bc..6a6e563d 100644 --- a/common/commonfile/fileserver/rpchandler.go +++ b/common/commonfile/fileserver/rpchandler.go @@ -22,7 +22,7 @@ func (r *rpcHandler) GetBlocks(stream fileproto.DRPCFile_GetBlocksStream) error resp := &fileproto.GetBlockResponse{ Cid: req.Cid, } - _, c, err := cid.CidFromBytes(req.Cid) + c, err := cid.Cast(req.Cid) if err != nil { resp.Code = fileproto.CIDError_CIDErrorUnexpected } else { @@ -44,9 +44,15 @@ func (r *rpcHandler) GetBlocks(stream fileproto.DRPCFile_GetBlocksStream) error } func (r *rpcHandler) PushBlock(ctx context.Context, req *fileproto.PushBlockRequest) (*fileproto.PushBlockResponse, error) { - if err := r.store.Add(fileblockstore.CtxWithSpaceId(ctx, req.SpaceId), []blocks.Block{ - blocks.NewBlock(req.Data), - }); err != nil { + c, err := cid.Cast(req.Cid) + if err != nil { + return nil, err + } + b, err := blocks.NewBlockWithCid(req.Data, c) + if err != nil { + return nil, err + } + if err = r.store.Add(fileblockstore.CtxWithSpaceId(ctx, req.SpaceId), []blocks.Block{b}); err != nil { return nil, fileprotoerr.ErrUnexpected } return &fileproto.PushBlockResponse{}, nil @@ -54,7 +60,7 @@ func (r *rpcHandler) PushBlock(ctx context.Context, req *fileproto.PushBlockRequ func (r *rpcHandler) DeleteBlocks(ctx context.Context, req *fileproto.DeleteBlocksRequest) (*fileproto.DeleteBlocksResponse, error) { for _, cd := range req.Cid { - _, c, err := cid.CidFromBytes(cd) + c, err := cid.Cast(cd) if err == nil { if err = r.store.Delete(fileblockstore.CtxWithSpaceId(ctx, req.SpaceId), c); err != nil { // TODO: log diff --git a/common/commonfile/fileservice/fileservice.go b/common/commonfile/fileservice/fileservice.go index 029d83bd..30236d5e 100644 --- a/common/commonfile/fileservice/fileservice.go +++ b/common/commonfile/fileservice/fileservice.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" "github.com/ipfs/go-cid" chunker "github.com/ipfs/go-ipfs-chunker" @@ -13,11 +14,14 @@ import ( "github.com/ipfs/go-unixfs/importer/helpers" ufsio "github.com/ipfs/go-unixfs/io" "github.com/multiformats/go-multihash" + "go.uber.org/zap" "io" ) const CName = "common.commonfile.fileservice" +var log = logger.NewNamed(CName) + func New() FileService { return &fileService{} } @@ -66,10 +70,16 @@ func (fs *fileService) AddFile(ctx context.Context, r io.Reader) (ipld.Node, err if err != nil { return nil, err } - return balanced.Layout(dbh) + n, err := balanced.Layout(dbh) + if err != nil { + return nil, err + } + log.Debug("add file", zap.String("cid", n.Cid().String())) + return n, nil } func (fs *fileService) GetFile(ctx context.Context, c cid.Cid) (ufsio.ReadSeekCloser, error) { + log.Debug("get file", zap.String("cid", c.String())) n, err := fs.merkledag.Get(ctx, c) if err != nil { return nil, err diff --git a/debug.json b/debug.json new file mode 100644 index 00000000..ee1cc111 --- /dev/null +++ b/debug.json @@ -0,0 +1,64 @@ +{"level":"debug","ts":"2022-12-15T15:13:18.511+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:13:31.837+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:13:39.610+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:04.659+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:07.447+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:10.704+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:13.893+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:18.286+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:24.064+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:34.095+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:46.708+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:15:55.627+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:16:12.023+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:18:29.361+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:26:53.897+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"fatal","ts":"2022-12-15T15:27:40.336+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} +{"level":"fatal","ts":"2022-12-15T15:29:16.006+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} +{"level":"fatal","ts":"2022-12-15T15:29:23.018+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} +{"level":"debug","ts":"2022-12-15T15:29:30.862+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:32:12.137+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:32:48.922+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"info","ts":"2022-12-15T15:34:00.976+0300","logger":"debug.drpcclient","caller":"ocache/ocache.go:386","msg":"GC: removed 0; cache size: 1"} +{"level":"info","ts":"2022-12-15T15:35:00.921+0300","logger":"debug.drpcclient","caller":"ocache/ocache.go:386","msg":"GC: removed 0; cache size: 1"} +{"level":"debug","ts":"2022-12-15T15:35:20.899+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:39:29.678+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:39:51.228+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:40:45.462+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"fatal","ts":"2022-12-15T15:43:26.123+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --hash","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} +{"level":"debug","ts":"2022-12-15T15:44:13.688+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:46:59.113+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:49:53.064+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:51:27.476+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:55:07.937+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-15T15:57:54.861+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:01:50.865+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:01:57.057+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"fatal","ts":"2022-12-21T20:02:20.880+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} +{"level":"fatal","ts":"2022-12-21T20:03:06.554+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} +{"level":"debug","ts":"2022-12-21T20:03:25.197+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:05:33.936+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:05:39.936+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:06:29.434+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:06:46.064+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:10:43.822+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:12:47.419+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:13:54.671+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:18:50.319+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:19:00.083+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:23:20.406+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:27:26.865+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:38:02.101+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:38:45.284+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:39:02.077+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:52:39.255+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T20:53:53.551+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:01:28.892+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:08:07.054+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:10:22.401+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:17:50.135+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:18:33.961+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:19:26.619+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:20:03.619+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:22:33.831+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} +{"level":"debug","ts":"2022-12-21T21:23:11.575+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} diff --git a/etc/configs/client1.yml b/etc/configs/client1.yml index 08f4542e..a677c23d 100755 --- a/etc/configs/client1.yml +++ b/etc/configs/client1.yml @@ -5,27 +5,36 @@ grpcServer: - 127.0.0.1:4630 tls: false account: - peerId: 12D3KooWDPdgoAcpvHcED4FsU3iz1mX4D2XBi4KN8NXaSt82sn7j - peerKey: ZOaSbsUfam6r9KYA9jlkbDjQ+hZ6wpPXvDNRyjVyn7k1GMYeRlDTNSniNutKr32daIDQuowdjwaCeQ+hoij/Wg== - signingKey: OYgzXHbYZDouketIP3AJJ3MwmdQ/7ZepdkE1kUCnc6CLc02ua64saYnkFcoROcSgrVjrL9k8aaetWCLEXgM+kw== - encryptionKey: MIIEpAIBAAKCAQEA0/0eVsifbPXKWxGj/Upfnc7Sgv2i0f4Nd6h2ahHurxZt4+H+3MZ5fcmdBo2mrk8XArvIAl6CHxM0KnE8ZQPU7xKi8o45jibIipCaB1CfTgOtmJ8a9wZ2fwheEtbiy39Twb7Hyg71IeACmTmS3YPYX3nGAkR5/vln25r1G9K9dX5JIybhEsylvyS+w3L6noY0t7zyDQOuzX2S6VDwE4UrNJvTxM5f1ezs4z9LlbkTqPEN61K2Ji2UHyg1b2BONfIA+20hZsWwzmUdXdguMIaN0D1eTE+PSxHXU/myMBdfXeGFhNVsSaYhAm/KcPVt6oOd0gDRfuIOyT/QAeQA0VoWfwIDAQABAoIBAAZ97urrc+5rTIojbSk5mNoFVm8Kg2z44cKzVwUCjZOxFSZwalSqg1f1z6g+uEcIRwUfaQ2hhUycUvGlzBqv1lqH8JOLBXoz99o+eWkV7/r8o9lTrgi4mvJi+DaNfB6NRKxfQlEOyjUCXjIBEF1WR08NNKInJLFJRAP2p+D1QDYT3LUpVknIfrxCciBbisysx9QlS7sP9rAncUWUgn1bvYlyRmMg88EASanViQzdvrjIp6LTu2MqO5Q8mfRRcz3oK2qAuArE25KuyF/BRnMlFGDT0n4stgxCMDYw2vdJcvCsMXkfngbOsYeDBB4755vVi6NDGekDRBmI0S0//WCCqkkCgYEA8BgwhIgn//QE47Rx15F9H36msV3WPcxpSga9BBFQzKPXVij3oBxlyxTKnf/iFTIIeCvefne21R1MwOWuXavDr2tCQs322HI87DjrMKQStaf2wyn7E2So+7mW9psD5QGcQfXP0s/LoehinoChKTitWfqD1P0RX6YNQjaKYq80QG0CgYEA4ghHLE+dDkqG/08UH1L9B1Q9bWjvOiQjyrtRtnPz99xuSSH7XywxdXdPs8jCgquKRPHrEfBUd4Ry9uhqcCzjBVPx6T/J07L5wVa3ZE2g7n22DAT3eBPJ3bkeFsPV1zQzpJYnQSed/j8Zl2899242w0rUd1OeST9lvVz+uDfTlxsCgYEAokKGz5rBBa7hew4g/eHaYOWUPDxBpQQ3iArjxRL6u0JjLlyDdZabiNLlWEBth4uHw8dKF8hKLN8fVyIiZDXICw5++mz9zSvvVmnlMLtB1bjNAPqnL2UQ+wZjKwh6alNbSgyZRkyevy4xMBOYVyZxqWSvocrh6fVr8nqvrZ/gvUUCgYEAiA9nmHrMFcAzBxh5CmoQOgsxdtzFtH/ws6aSh3vBDiC4mnlEMYQOuaD6b0SYIcRU1S+yyveaQN+PvKUm/SNn/NsNMdTeDvsbcJBckJpSF33AyfdrZ/KxfzBhtl5oKMUZmSdxtby9VEBzjT6/VGQZvvEaeEHzdDAfdB+4jPe9/KUCgYBf7IhDH3+9Rrl6xQtIyErtaAWm+wQlucbMMoJgjXL6F9V6HqUer3+7OvNJQdrZiYcxHRlXynT7cN8iw59rOHQxEaNOXPwz9TS+wlvUerUHibgS1GOnLVke/NFoEi8M+B2pdo1M2x+YBdX3hi0kMYB0VtZM75uPKS9I1ZSFfLmZgQ== + peerId: 12D3KooWPSPh4BL6TMzttZciuxCNxovDMd9MmVHYjmLfeDzW85JY + peerKey: jyf2O72bAAPZ0gtfv0GM04vzftA+61XYr2+4tDnKxhXKYo+Ppdp9INRSlTZ6tlm6wotuArL4sahipmHE/ZWukQ== + signingKey: s64C2pRvQVGrHWJhnB+otY2UsBQRe9tQjWpW2YWJX5bCgn65KvGUalciIW3bawsVXXcjVEKRUcSnsPh70xux4g== + encryptionKey: MIIEoAIBAAKCAQEAn4Yfcri3RetiOo6rc3wzUUciBMWS/v2cKJc563ralqhtUTdgTiNv82pFP8A4zPmOyLcn2qNkidPlRMGXHtuABbqBNGjViwIYykKkZaPsP9ogrPvd5zKDaXXJaLZODZC3LVmco37FxWBctaQvUcWwvhBRFyu6writC3k27hdZXfgheGjd461wPFUibAvpyrlQVA0i57O2yobkTsStITID88MTCHdKJuNXmSJg/hI1ABAzLIOb+lm2kuseCBJtu9d6DoJwDXS9+H51sQQhHYSph9YGYMpyX2MmbbR0HMQjOEy/1wlX8l/R9m59A7wFQsjdb1Ug9OI3BYrA5k8nO8zlLQIDAQABAoH/eEOlcdfQU+YhKARnPallBuGZw/8v0w1frTpVcDIumWZhA9m7wSz2OYzkqCtCp0V9X9S1Nx/3q/ET58ILLDhPTAJPZjOiyinKhrG3PulWMs0/1SoNIT/z0o36Sfcm4RM5BfeJH7lzYFpFiqs9AWkI1kF24QEWy7ZuvzejMdxog25dDMqFW3bDJYYS8IzDI+gNmgrNLxh32ST5Ugrjeq4SgUjfKWMGARWPzQk+x9fxzhDJkIXtRqL3SDQmlN9Jy+/p3NuCC5gKTIYcoNEsrTnKqDQQL+Hr8KY8MaywmK1CRWcp1lguheAQqmcqyWdl11dAdIe+sSG0jtYeN4RD+dV9AoGBAMaRFki8e0FprmKk/sT6xGtLimptBh2YPO3Rfooow7aCcCP0ZRDxGUs56aCla4Cg7BBoWldHaPPdgG0rxe/Tocu5AUjohH+s8OOAP0trZzE6gavJV1Uv9XPKUs+EDpATbjFJTFeBN4Im/3uBnOx1CLE0tEOkAvW+NI8zKRUYj+8nAoGBAM2qGh2T+6QQnSvuBEEUCy/3JAJ1gkmvfJpZcE4M5kaQr0iu64L4oYE/68HqcK+IPzSAGgafn4cgodOh59syMMJ+7W2S5YS84JdLZER15SOQ+9q8qVpvqnsi1oW6tcRKdTFinnf/AmRQzWdkLsTp88ew+CSl7VGbgmVcFtcfIH2LAoGARrOMUrPB00W00OzcxfhgDbAlBcXyAoGdWDRasQjYvths43B2t/SQxAdH12pu/6rMwv7VA/SqOwKoYrbOUJlzJ52lBne8DdXfI7IbV1hTsuSZHTigfvWHmQX2PGtR4Bz7BFOL+jBJOm92UlyRKmR1hts0QE1avHNQNZjKzPck8MsCgYBwc8PXzGRZbuQhcwFMfCMp1N4RoiLdG2DsHF81rgPzLYVKHqqTcFMOkt7bps56i+rTT//rAzh88DDLwMk/pw/WKQS1Vw68J3I+B3EJpdTmP44WKfYHhusWbRQTBuYAMB4oJJ41SnAKXcwR7ktMTAeJdpAXqco7RuZjeZjbgx+GxQKBgDycT84wvDxoSz90iY+6pzzBQkbh6sDgy2IPV+nSXKIfvuhefZP4tawwHjwg7oscHv81J0/tkucf1k2VN3NyiqnYlT5Q5EgUxmyOiKw+jkrXBAjQtUgSzPAth0j/mMeQSCw+VrFLNJVGrc6g9s5gNrUFJLa2YnQT1c3PzeyVwlOQ apiServer: listenAddrs: - 127.0.0.1:8090 tls: false nodes: - - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab + - peerId: 12D3KooWS7Z835JwmJ5pGHJxpEsJ3vab5M4RjJsWHXmDD5895DT9 address: 127.0.0.1:4430 - signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= - - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb + signingKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + encryptionKey: MIIEpAIBAAKCAQEAtw1tn95/mQ2cpYgOKxaRwgZITgsrmZQIyH+bYFaUYUWoUp/AxAdPrh5cLehMUNXH8ZoyHkhV3bIMWpHoUyG+QJzz7etktAVz6MtEl3Wo/jAgAEDvXXgFMku2hnh6coWyhzyXR190ZHgGazJ0K1OtugsIFXwFro93j0+8iPuifsWkH6RaAhvZJUWaQGGmNQKSZnbdFokGmo5FM0z0eOI/sZGhCtxuWbpZz0hhvW3sXEWEyzq8WwTFLGoppIETnhjzcSJDO+pq0b934WuMTGazUH0sPc/AnoZJp00237Ar8g+h10CVxQ5SsTba7VYDCr7/zeHS+vvUYNgB4NO0lylaTQIDAQABAoIBADhUKoLCjhNEDAsoFewOcuX41vElINKOqjFAi0iW++v+6nAadtAby9oxv33k+O77Ch7/qyKEcd/ZtVF9irdiL9BkO+/fuspmzyc4va+55jnqBz7svHvPvhGfGNjCZDOvjqNs8sRkzEVKZfdAvFzE0DXqxR8PXhQ8U7dG+yZQAM3vcE/ib/14OxXgANrPwOKO04Lhff2xoXuuqrx9XAG+PbLlxi0gYGK55E1whgBldPC3nKA38hh1QDt+uh8AVdZ/Y0ehW7t2CG8zPNNTO7TjrZHwMeFgvVODN+0X1W9e7nIuDGVJ74FzvC5PZwBURJ/tjHSUCR0Pf9t87yaQqEQT/sECgYEA44Ve23Fnn97kNqpYzJJAq3+1Cg72cEg8gG9RA+AtOcMUO9EspWxiu/MPXGbaP/R/5L9UTikv7oN7an4gsO4FN9cFH/j4SY/fI6twi55DwpOFbgjLf6lT0tzEnHymPXjGCCHdc3BRIsjd3ehmQcwBZ/pPl8CggDxj24/xlqt7kbECgYEAzfceXEEpGmOZ1Hno3Xck/ZBcl12KjLVOK8ACe890BjWIPDMXaYfGJJpX0terR7BcqrLrq0komPUinoeelpIAitTXQ+zr6ULYXpZgxSTOz7aV7OAsudowp+m5z594ZagIgs3lKVILeclAqaYB4eq9/pHzHazS0YIwWwce753CfV0CgYEAzJ89YYTLmoe+nb90n3+Fc/gmHQa58t+0shnrNd4fLozZHLcSPTCOV9TQ4tyJuu0tPNAqhSUbu5o6m9sVkapvvPm/3TJwMtCW8aCVVqwe6tb8MKruQkFKZyEwHkEoza5aBCRY4yKHhg47JAGIPfK47Qe9H5EZiFtHv8bkkwpk1vECgYBuFJy6a+0e+IrYIAwQicRQbV6/W7RYPfK4uVfaemclhmj428mwkmuZVpCH1NLrbtwoM5Z3ppM3JRVKq2tcSE5X5SfkWvU/Z4WjEDZKR8DtDUYWIz5kWrRUmjvANxgvJN7folHPgtU1UxXnVh19dGv1amYIvzyx0yYrEKQ9JxEy1QKBgQC8zAG011S0HopmpBFizKanlmKPM9BHKk9GCl8dEQltxr+KA6734YwMy63fxaRBje0WUJJPMwOoxNUWfvJ6cRTi4BpEbOhy3ZfPCpVoVX71QPMuOqAvUbF/AQrv7tLCSs1WSA98k8DVeIITHAI/ITzCxuRxPyzU7agi0D9EBLoaPQ== + types: + - tree + - file + - peerId: 12D3KooWKkWv85fkYiCnvKVsVoCu9VwFupNejVBA2bFGBjic6gHP address: 127.0.0.1:4431 - signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH - - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK + signingKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + encryptionKey: MIIEowIBAAKCAQEAyL/fnKl6ztxVtXkxdl48HEawDKmJmBxs6rGl+kNx+cb6Jio/GyKz4d1bCW5Ni5glyVg11RqA09wPaJxKMlp/svz+46a9MtZmC4/pFOiSaMkmMOs61apTruJNNDK/9O0j+irCnJFRGactt/AlCKU+9WjwsTtJtmqEkt0uuD0Tn709Itx86nzXhCqNtEKPvo83FaZ60RFpe72KNLcyP7DgR8m7Csa4JWfK1Ig0539rFxM5Co/GGNna3mqShDbIN0Aw8k7yCuDaCx/akd0Yd2BEjBApHtlonu3BYfCAF3bAus9sejogeA+mu52akN7H0YnC1BeftFAzlZ5yJV1gKwsYmwIDAQABAoIBAQCzzPaw0DMIV9wEP9oHVHuuL7m6fZaZQMxkoFwyfHn25zphOHFxEnHemG3TUpHtt4YQggslJSnBl1XNsj3aP6gkXejFaTAH+nNHY8u1SGDprU+hfO4jNPzipBnV6KZ47nTMucO4i4cB3PRbzKC+z5JGJ4l8k8d/tIOtLqGLrliHNlRZ7LRfovCP+ekPrPpxtJBp48GUQFRexXqsytiEYlAjXPUVHh+8b1lmDJXzxzTf2Nhx1lXykrrRYlOOYSz0fufFzsLcJSzPbfnomgjaNGKPCSWfREFp3Ch1P6+G9hClMORL5Vc58I5j3SlacsoWEw3ywyE0Visfn7ojIuqboLHBAoGBAMnbL0TeKaKIkRGdKXFhUzpUrH1mPg7QOLH65GbbtO5DHTwDRjX0I8pc+XT7u/qVhG+h72wBZ3J/egAlvLUOtwuuNhjir5BqS90QhtofsHy7IbzAkMhPpQ/3p2+ZrfTGylzUHLwR/hr9aiP5PizMJQ2JSQU3k8YozVGENnmpnydLAoGBAP6YskbZU6+TPXlconbg2G+D6KSYScu8h1d6mYHjcbCOc5ILVa1DJGr/ufYl2dqPTA63Mj9PJ8Dla4WI9iXwh0cbTI/N+XD27y54sWonuWymX/9i2tlhmnLeLqGq7zQ+eCQMMnhH2rbN/+hEYMwbsTAdu4txbPDMGVoL9K09PXHxAoGAGBuASrZJvKqYwMTHVU4tVXMVYqiaUsSVcNQpAQvOUQJc9HTjpr/wolN2S31hFu1Scs6hPIHya99Dn87h+bG3NMLqnRA9rX60bsNxh41vU4Y54kQRRosUiJKoQZDWELzJIEsI34E6mtiXG5LB1THQXwx9Vw0rLehjlQ+4PdF/O38CgYBjHbs6Dd2gmufx2Xh+Y2afc3EcsxT3tjvSeK5OfOeD3tFrZ/JA88S3yzrwcyfvCJ6JlBSBxSUq2aYUZI+/kXZ43k3eJkgYDGptYxtewnxTqinxWODuhCsG0SzCT7O0WSWYkw8K+J5TULtyBzzP+W/v1YNv9AZ/cFXmUoU89Hx5YQKBgBPx7Dm8s8M/8EQoV0NQwgk0I2W7WCnaNxNaNnIg1MtEsBkI+UkxnAGPUwEDtv5cRmciBO6SdsvUrZh+t41Ui/MLTMJOsQO53HAbng4tjxcAmDM/R/iYyI6gCCYhxUudPTaKDZchV41TrhGaqXliV6CgCRVm2WsKFgJdFNW7QVq3 + types: + - tree + - file + - peerId: 12D3KooWCYAzw5jFx3VNkJ8jn6VFq4WcayT6sZzdBx5fJFeCjXbV address: 127.0.0.1:4432 - signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== + signingKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + encryptionKey: MIIEpAIBAAKCAQEAs/jLbBcMpkjqZ8R7ySsE9FkUdVZsJJk4BWI4OHbRg5+RMt74AeoKK+NW81zxw5tzLXvW9AZVccO742xB5mRfyrvZ22YrPedTvQymmyY5RCh9qduk0OOfItlNVyG7zRBgK90TAmkwbg4B1jCFIt3cuttK7A6gUKqy9deNhYZd67a7byJIgGmKcqK4ETbeLw8vJv08Htagn3/7CRjwAQcuLNzWw7G4SiTyIOcLpX14oQl3/v1/gYleFVyqebvo4xftQ/pCzDZoD6/t/HK70zzD+TsCmWK/o6iO42hsARIkuuuufASW9mIGcjKj8v+mftLEqqkSSEwtZTuLATJRG2bwiQIDAQABAoIBAQCC+GKpVZjKBjQ3scBXpGvlmlIOFgd7Ftmy6Uh6ptVP0Tasa6DWW8htKfNkBVaXgC/wgLfsPBPAR64bEfRfQtqHQe+H/7EmSosg/+za6ZUxKbpRe1tU/OEZTkQ/TXhLAkjKgwbLcVtiK+VgR00ME6MHhIDgisBWE/NKf0QpUKBW4Rp/0l3bUYO+b7aAIBT0Q/Noc+kaXbHygYuzTMYCvItGDe0WtvrNE/IQEnjC51i02rpa5GI29T4OVvumKbLjFMlT0EttkTjZNVEicP8RHqSKlE7+lMPT1eH3CEVepV7QKCzgPN9pBudLmzmb7HhSZvwMzzkTTt1WczWshBrKZKHRAoGBAMynv1toSLzznwQzffhwLQzvzxnjhdxNKKbJ7cVG4CNVKRVh9iPVBv+XWgBYInnpC/ByX5HDKleRvo54wXzYoMlxtqz8ZCOFxcWrocehbLAIxtGDlSAOGAgSVMrJDJr28Hc7n0zesIyQzymoWfN7yDxcKLB34hC0qUQVuaY7PjTNAoGBAOEfuQkzdrIcT7hEuX+Jv9SmkBnxSocpUZyF7vCm03Dg8FhGK16WWXwa5ii0R6LL4A31J1A/ydpFTd+kxqaQ0dyrc9QWkwzuyy3JYO2R/J7ejFO5KfuKMojXPMwum69y95vL4ZGfYXmF/vYv7TYaBhoI0oeJA5+w9dX20z1jgkqtAoGBAJRqJky8sNtOdYhPa1BK0XDrTC6DIKVl01A5alRBlPQqoxOdqinMKDoc4akUQVRVnFHwL7x+Y2uEB0Q88FyAoQHVlFuY4WodbhJu6HDkcPSsOLriCLhpYCYiXRl+ecS7xiFBvMG7UR9vOL0GGM2Je+nCD8QB/JCO4527f5m8pt0VAoGAd2Vht5WJ0DDfvvUEBLZD/T5RktC8HC83z3HhJdT0sxs5nTep7MKEtyN1CgWDML48GGr67L7ICXFUOdakXNbV1tk/1y4Z03QaYjA5rgYNGx0hA45iy7uhzZ2J6yiU/VpWJFTfT2JeShtc+6izgEwRDGG9dpCeUWWDHHWJ1zcddQkCgYB//JrVbMtkB+L5OV0UfAFlhGaVoThfCL5QHAwmXq+gsX7dxCu5NGJDWJ6fQ+e+0zQms6nB/BvLXcKWo0rEZJsyiUpWN8X06nsyHN1Nxk7PiPlL12dV9/RGD98kNmFQorYhO/lOWImqy7ZpuNNSc69l1B9Q/G/FLU8itzSp2irSEA== + types: + - tree + - file space: gcTTL: 60 syncPeriod: 11 diff --git a/etc/configs/client2.yml b/etc/configs/client2.yml index 886fa9ae..5b5caf2d 100755 --- a/etc/configs/client2.yml +++ b/etc/configs/client2.yml @@ -5,27 +5,36 @@ grpcServer: - 127.0.0.1:4631 tls: false account: - peerId: 12D3KooWJ8avwNEYgR14WMWoPaeNvfEAqyNnCCP8Doimfb6JhorD - peerKey: fcg/sg0QzcK+1JUSslS7pbLu1CHCBK4lciqdAnjUG5R7iGFFpfjlYvk9Kvt6FXCP1QFDD+ALbsEw/e6SJXBpjg== - signingKey: OYgzXHbYZDouketIP3AJJ3MwmdQ/7ZepdkE1kUCnc6CLc02ua64saYnkFcoROcSgrVjrL9k8aaetWCLEXgM+kw== - encryptionKey: MIIEpAIBAAKCAQEA0/0eVsifbPXKWxGj/Upfnc7Sgv2i0f4Nd6h2ahHurxZt4+H+3MZ5fcmdBo2mrk8XArvIAl6CHxM0KnE8ZQPU7xKi8o45jibIipCaB1CfTgOtmJ8a9wZ2fwheEtbiy39Twb7Hyg71IeACmTmS3YPYX3nGAkR5/vln25r1G9K9dX5JIybhEsylvyS+w3L6noY0t7zyDQOuzX2S6VDwE4UrNJvTxM5f1ezs4z9LlbkTqPEN61K2Ji2UHyg1b2BONfIA+20hZsWwzmUdXdguMIaN0D1eTE+PSxHXU/myMBdfXeGFhNVsSaYhAm/KcPVt6oOd0gDRfuIOyT/QAeQA0VoWfwIDAQABAoIBAAZ97urrc+5rTIojbSk5mNoFVm8Kg2z44cKzVwUCjZOxFSZwalSqg1f1z6g+uEcIRwUfaQ2hhUycUvGlzBqv1lqH8JOLBXoz99o+eWkV7/r8o9lTrgi4mvJi+DaNfB6NRKxfQlEOyjUCXjIBEF1WR08NNKInJLFJRAP2p+D1QDYT3LUpVknIfrxCciBbisysx9QlS7sP9rAncUWUgn1bvYlyRmMg88EASanViQzdvrjIp6LTu2MqO5Q8mfRRcz3oK2qAuArE25KuyF/BRnMlFGDT0n4stgxCMDYw2vdJcvCsMXkfngbOsYeDBB4755vVi6NDGekDRBmI0S0//WCCqkkCgYEA8BgwhIgn//QE47Rx15F9H36msV3WPcxpSga9BBFQzKPXVij3oBxlyxTKnf/iFTIIeCvefne21R1MwOWuXavDr2tCQs322HI87DjrMKQStaf2wyn7E2So+7mW9psD5QGcQfXP0s/LoehinoChKTitWfqD1P0RX6YNQjaKYq80QG0CgYEA4ghHLE+dDkqG/08UH1L9B1Q9bWjvOiQjyrtRtnPz99xuSSH7XywxdXdPs8jCgquKRPHrEfBUd4Ry9uhqcCzjBVPx6T/J07L5wVa3ZE2g7n22DAT3eBPJ3bkeFsPV1zQzpJYnQSed/j8Zl2899242w0rUd1OeST9lvVz+uDfTlxsCgYEAokKGz5rBBa7hew4g/eHaYOWUPDxBpQQ3iArjxRL6u0JjLlyDdZabiNLlWEBth4uHw8dKF8hKLN8fVyIiZDXICw5++mz9zSvvVmnlMLtB1bjNAPqnL2UQ+wZjKwh6alNbSgyZRkyevy4xMBOYVyZxqWSvocrh6fVr8nqvrZ/gvUUCgYEAiA9nmHrMFcAzBxh5CmoQOgsxdtzFtH/ws6aSh3vBDiC4mnlEMYQOuaD6b0SYIcRU1S+yyveaQN+PvKUm/SNn/NsNMdTeDvsbcJBckJpSF33AyfdrZ/KxfzBhtl5oKMUZmSdxtby9VEBzjT6/VGQZvvEaeEHzdDAfdB+4jPe9/KUCgYBf7IhDH3+9Rrl6xQtIyErtaAWm+wQlucbMMoJgjXL6F9V6HqUer3+7OvNJQdrZiYcxHRlXynT7cN8iw59rOHQxEaNOXPwz9TS+wlvUerUHibgS1GOnLVke/NFoEi8M+B2pdo1M2x+YBdX3hi0kMYB0VtZM75uPKS9I1ZSFfLmZgQ== + peerId: 12D3KooWQpz99Dc9Z2sCsXBjUzRbWtiXJ6oV3rZDccqUwTjop89Q + peerKey: jac8YPezUIiHZ5leof47XxiwwBWpPLnAg9fIVkvkPqTfB/pd44QRIgBwilG9/PLspWjEe2PifvwU7Gjsz/nI2w== + signingKey: s64C2pRvQVGrHWJhnB+otY2UsBQRe9tQjWpW2YWJX5bCgn65KvGUalciIW3bawsVXXcjVEKRUcSnsPh70xux4g== + encryptionKey: MIIEoAIBAAKCAQEAn4Yfcri3RetiOo6rc3wzUUciBMWS/v2cKJc563ralqhtUTdgTiNv82pFP8A4zPmOyLcn2qNkidPlRMGXHtuABbqBNGjViwIYykKkZaPsP9ogrPvd5zKDaXXJaLZODZC3LVmco37FxWBctaQvUcWwvhBRFyu6writC3k27hdZXfgheGjd461wPFUibAvpyrlQVA0i57O2yobkTsStITID88MTCHdKJuNXmSJg/hI1ABAzLIOb+lm2kuseCBJtu9d6DoJwDXS9+H51sQQhHYSph9YGYMpyX2MmbbR0HMQjOEy/1wlX8l/R9m59A7wFQsjdb1Ug9OI3BYrA5k8nO8zlLQIDAQABAoH/eEOlcdfQU+YhKARnPallBuGZw/8v0w1frTpVcDIumWZhA9m7wSz2OYzkqCtCp0V9X9S1Nx/3q/ET58ILLDhPTAJPZjOiyinKhrG3PulWMs0/1SoNIT/z0o36Sfcm4RM5BfeJH7lzYFpFiqs9AWkI1kF24QEWy7ZuvzejMdxog25dDMqFW3bDJYYS8IzDI+gNmgrNLxh32ST5Ugrjeq4SgUjfKWMGARWPzQk+x9fxzhDJkIXtRqL3SDQmlN9Jy+/p3NuCC5gKTIYcoNEsrTnKqDQQL+Hr8KY8MaywmK1CRWcp1lguheAQqmcqyWdl11dAdIe+sSG0jtYeN4RD+dV9AoGBAMaRFki8e0FprmKk/sT6xGtLimptBh2YPO3Rfooow7aCcCP0ZRDxGUs56aCla4Cg7BBoWldHaPPdgG0rxe/Tocu5AUjohH+s8OOAP0trZzE6gavJV1Uv9XPKUs+EDpATbjFJTFeBN4Im/3uBnOx1CLE0tEOkAvW+NI8zKRUYj+8nAoGBAM2qGh2T+6QQnSvuBEEUCy/3JAJ1gkmvfJpZcE4M5kaQr0iu64L4oYE/68HqcK+IPzSAGgafn4cgodOh59syMMJ+7W2S5YS84JdLZER15SOQ+9q8qVpvqnsi1oW6tcRKdTFinnf/AmRQzWdkLsTp88ew+CSl7VGbgmVcFtcfIH2LAoGARrOMUrPB00W00OzcxfhgDbAlBcXyAoGdWDRasQjYvths43B2t/SQxAdH12pu/6rMwv7VA/SqOwKoYrbOUJlzJ52lBne8DdXfI7IbV1hTsuSZHTigfvWHmQX2PGtR4Bz7BFOL+jBJOm92UlyRKmR1hts0QE1avHNQNZjKzPck8MsCgYBwc8PXzGRZbuQhcwFMfCMp1N4RoiLdG2DsHF81rgPzLYVKHqqTcFMOkt7bps56i+rTT//rAzh88DDLwMk/pw/WKQS1Vw68J3I+B3EJpdTmP44WKfYHhusWbRQTBuYAMB4oJJ41SnAKXcwR7ktMTAeJdpAXqco7RuZjeZjbgx+GxQKBgDycT84wvDxoSz90iY+6pzzBQkbh6sDgy2IPV+nSXKIfvuhefZP4tawwHjwg7oscHv81J0/tkucf1k2VN3NyiqnYlT5Q5EgUxmyOiKw+jkrXBAjQtUgSzPAth0j/mMeQSCw+VrFLNJVGrc6g9s5gNrUFJLa2YnQT1c3PzeyVwlOQ apiServer: listenAddrs: - 127.0.0.1:8091 tls: false nodes: - - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab + - peerId: 12D3KooWS7Z835JwmJ5pGHJxpEsJ3vab5M4RjJsWHXmDD5895DT9 address: 127.0.0.1:4430 - signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= - - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb + signingKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + encryptionKey: MIIEpAIBAAKCAQEAtw1tn95/mQ2cpYgOKxaRwgZITgsrmZQIyH+bYFaUYUWoUp/AxAdPrh5cLehMUNXH8ZoyHkhV3bIMWpHoUyG+QJzz7etktAVz6MtEl3Wo/jAgAEDvXXgFMku2hnh6coWyhzyXR190ZHgGazJ0K1OtugsIFXwFro93j0+8iPuifsWkH6RaAhvZJUWaQGGmNQKSZnbdFokGmo5FM0z0eOI/sZGhCtxuWbpZz0hhvW3sXEWEyzq8WwTFLGoppIETnhjzcSJDO+pq0b934WuMTGazUH0sPc/AnoZJp00237Ar8g+h10CVxQ5SsTba7VYDCr7/zeHS+vvUYNgB4NO0lylaTQIDAQABAoIBADhUKoLCjhNEDAsoFewOcuX41vElINKOqjFAi0iW++v+6nAadtAby9oxv33k+O77Ch7/qyKEcd/ZtVF9irdiL9BkO+/fuspmzyc4va+55jnqBz7svHvPvhGfGNjCZDOvjqNs8sRkzEVKZfdAvFzE0DXqxR8PXhQ8U7dG+yZQAM3vcE/ib/14OxXgANrPwOKO04Lhff2xoXuuqrx9XAG+PbLlxi0gYGK55E1whgBldPC3nKA38hh1QDt+uh8AVdZ/Y0ehW7t2CG8zPNNTO7TjrZHwMeFgvVODN+0X1W9e7nIuDGVJ74FzvC5PZwBURJ/tjHSUCR0Pf9t87yaQqEQT/sECgYEA44Ve23Fnn97kNqpYzJJAq3+1Cg72cEg8gG9RA+AtOcMUO9EspWxiu/MPXGbaP/R/5L9UTikv7oN7an4gsO4FN9cFH/j4SY/fI6twi55DwpOFbgjLf6lT0tzEnHymPXjGCCHdc3BRIsjd3ehmQcwBZ/pPl8CggDxj24/xlqt7kbECgYEAzfceXEEpGmOZ1Hno3Xck/ZBcl12KjLVOK8ACe890BjWIPDMXaYfGJJpX0terR7BcqrLrq0komPUinoeelpIAitTXQ+zr6ULYXpZgxSTOz7aV7OAsudowp+m5z594ZagIgs3lKVILeclAqaYB4eq9/pHzHazS0YIwWwce753CfV0CgYEAzJ89YYTLmoe+nb90n3+Fc/gmHQa58t+0shnrNd4fLozZHLcSPTCOV9TQ4tyJuu0tPNAqhSUbu5o6m9sVkapvvPm/3TJwMtCW8aCVVqwe6tb8MKruQkFKZyEwHkEoza5aBCRY4yKHhg47JAGIPfK47Qe9H5EZiFtHv8bkkwpk1vECgYBuFJy6a+0e+IrYIAwQicRQbV6/W7RYPfK4uVfaemclhmj428mwkmuZVpCH1NLrbtwoM5Z3ppM3JRVKq2tcSE5X5SfkWvU/Z4WjEDZKR8DtDUYWIz5kWrRUmjvANxgvJN7folHPgtU1UxXnVh19dGv1amYIvzyx0yYrEKQ9JxEy1QKBgQC8zAG011S0HopmpBFizKanlmKPM9BHKk9GCl8dEQltxr+KA6734YwMy63fxaRBje0WUJJPMwOoxNUWfvJ6cRTi4BpEbOhy3ZfPCpVoVX71QPMuOqAvUbF/AQrv7tLCSs1WSA98k8DVeIITHAI/ITzCxuRxPyzU7agi0D9EBLoaPQ== + types: + - tree + - file + - peerId: 12D3KooWKkWv85fkYiCnvKVsVoCu9VwFupNejVBA2bFGBjic6gHP address: 127.0.0.1:4431 - signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH - - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK + signingKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + encryptionKey: MIIEowIBAAKCAQEAyL/fnKl6ztxVtXkxdl48HEawDKmJmBxs6rGl+kNx+cb6Jio/GyKz4d1bCW5Ni5glyVg11RqA09wPaJxKMlp/svz+46a9MtZmC4/pFOiSaMkmMOs61apTruJNNDK/9O0j+irCnJFRGactt/AlCKU+9WjwsTtJtmqEkt0uuD0Tn709Itx86nzXhCqNtEKPvo83FaZ60RFpe72KNLcyP7DgR8m7Csa4JWfK1Ig0539rFxM5Co/GGNna3mqShDbIN0Aw8k7yCuDaCx/akd0Yd2BEjBApHtlonu3BYfCAF3bAus9sejogeA+mu52akN7H0YnC1BeftFAzlZ5yJV1gKwsYmwIDAQABAoIBAQCzzPaw0DMIV9wEP9oHVHuuL7m6fZaZQMxkoFwyfHn25zphOHFxEnHemG3TUpHtt4YQggslJSnBl1XNsj3aP6gkXejFaTAH+nNHY8u1SGDprU+hfO4jNPzipBnV6KZ47nTMucO4i4cB3PRbzKC+z5JGJ4l8k8d/tIOtLqGLrliHNlRZ7LRfovCP+ekPrPpxtJBp48GUQFRexXqsytiEYlAjXPUVHh+8b1lmDJXzxzTf2Nhx1lXykrrRYlOOYSz0fufFzsLcJSzPbfnomgjaNGKPCSWfREFp3Ch1P6+G9hClMORL5Vc58I5j3SlacsoWEw3ywyE0Visfn7ojIuqboLHBAoGBAMnbL0TeKaKIkRGdKXFhUzpUrH1mPg7QOLH65GbbtO5DHTwDRjX0I8pc+XT7u/qVhG+h72wBZ3J/egAlvLUOtwuuNhjir5BqS90QhtofsHy7IbzAkMhPpQ/3p2+ZrfTGylzUHLwR/hr9aiP5PizMJQ2JSQU3k8YozVGENnmpnydLAoGBAP6YskbZU6+TPXlconbg2G+D6KSYScu8h1d6mYHjcbCOc5ILVa1DJGr/ufYl2dqPTA63Mj9PJ8Dla4WI9iXwh0cbTI/N+XD27y54sWonuWymX/9i2tlhmnLeLqGq7zQ+eCQMMnhH2rbN/+hEYMwbsTAdu4txbPDMGVoL9K09PXHxAoGAGBuASrZJvKqYwMTHVU4tVXMVYqiaUsSVcNQpAQvOUQJc9HTjpr/wolN2S31hFu1Scs6hPIHya99Dn87h+bG3NMLqnRA9rX60bsNxh41vU4Y54kQRRosUiJKoQZDWELzJIEsI34E6mtiXG5LB1THQXwx9Vw0rLehjlQ+4PdF/O38CgYBjHbs6Dd2gmufx2Xh+Y2afc3EcsxT3tjvSeK5OfOeD3tFrZ/JA88S3yzrwcyfvCJ6JlBSBxSUq2aYUZI+/kXZ43k3eJkgYDGptYxtewnxTqinxWODuhCsG0SzCT7O0WSWYkw8K+J5TULtyBzzP+W/v1YNv9AZ/cFXmUoU89Hx5YQKBgBPx7Dm8s8M/8EQoV0NQwgk0I2W7WCnaNxNaNnIg1MtEsBkI+UkxnAGPUwEDtv5cRmciBO6SdsvUrZh+t41Ui/MLTMJOsQO53HAbng4tjxcAmDM/R/iYyI6gCCYhxUudPTaKDZchV41TrhGaqXliV6CgCRVm2WsKFgJdFNW7QVq3 + types: + - tree + - file + - peerId: 12D3KooWCYAzw5jFx3VNkJ8jn6VFq4WcayT6sZzdBx5fJFeCjXbV address: 127.0.0.1:4432 - signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== + signingKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + encryptionKey: MIIEpAIBAAKCAQEAs/jLbBcMpkjqZ8R7ySsE9FkUdVZsJJk4BWI4OHbRg5+RMt74AeoKK+NW81zxw5tzLXvW9AZVccO742xB5mRfyrvZ22YrPedTvQymmyY5RCh9qduk0OOfItlNVyG7zRBgK90TAmkwbg4B1jCFIt3cuttK7A6gUKqy9deNhYZd67a7byJIgGmKcqK4ETbeLw8vJv08Htagn3/7CRjwAQcuLNzWw7G4SiTyIOcLpX14oQl3/v1/gYleFVyqebvo4xftQ/pCzDZoD6/t/HK70zzD+TsCmWK/o6iO42hsARIkuuuufASW9mIGcjKj8v+mftLEqqkSSEwtZTuLATJRG2bwiQIDAQABAoIBAQCC+GKpVZjKBjQ3scBXpGvlmlIOFgd7Ftmy6Uh6ptVP0Tasa6DWW8htKfNkBVaXgC/wgLfsPBPAR64bEfRfQtqHQe+H/7EmSosg/+za6ZUxKbpRe1tU/OEZTkQ/TXhLAkjKgwbLcVtiK+VgR00ME6MHhIDgisBWE/NKf0QpUKBW4Rp/0l3bUYO+b7aAIBT0Q/Noc+kaXbHygYuzTMYCvItGDe0WtvrNE/IQEnjC51i02rpa5GI29T4OVvumKbLjFMlT0EttkTjZNVEicP8RHqSKlE7+lMPT1eH3CEVepV7QKCzgPN9pBudLmzmb7HhSZvwMzzkTTt1WczWshBrKZKHRAoGBAMynv1toSLzznwQzffhwLQzvzxnjhdxNKKbJ7cVG4CNVKRVh9iPVBv+XWgBYInnpC/ByX5HDKleRvo54wXzYoMlxtqz8ZCOFxcWrocehbLAIxtGDlSAOGAgSVMrJDJr28Hc7n0zesIyQzymoWfN7yDxcKLB34hC0qUQVuaY7PjTNAoGBAOEfuQkzdrIcT7hEuX+Jv9SmkBnxSocpUZyF7vCm03Dg8FhGK16WWXwa5ii0R6LL4A31J1A/ydpFTd+kxqaQ0dyrc9QWkwzuyy3JYO2R/J7ejFO5KfuKMojXPMwum69y95vL4ZGfYXmF/vYv7TYaBhoI0oeJA5+w9dX20z1jgkqtAoGBAJRqJky8sNtOdYhPa1BK0XDrTC6DIKVl01A5alRBlPQqoxOdqinMKDoc4akUQVRVnFHwL7x+Y2uEB0Q88FyAoQHVlFuY4WodbhJu6HDkcPSsOLriCLhpYCYiXRl+ecS7xiFBvMG7UR9vOL0GGM2Je+nCD8QB/JCO4527f5m8pt0VAoGAd2Vht5WJ0DDfvvUEBLZD/T5RktC8HC83z3HhJdT0sxs5nTep7MKEtyN1CgWDML48GGr67L7ICXFUOdakXNbV1tk/1y4Z03QaYjA5rgYNGx0hA45iy7uhzZ2J6yiU/VpWJFTfT2JeShtc+6izgEwRDGG9dpCeUWWDHHWJ1zcddQkCgYB//JrVbMtkB+L5OV0UfAFlhGaVoThfCL5QHAwmXq+gsX7dxCu5NGJDWJ6fQ+e+0zQms6nB/BvLXcKWo0rEZJsyiUpWN8X06nsyHN1Nxk7PiPlL12dV9/RGD98kNmFQorYhO/lOWImqy7ZpuNNSc69l1B9Q/G/FLU8itzSp2irSEA== + types: + - tree + - file space: gcTTL: 60 syncPeriod: 11 diff --git a/etc/configs/cons1.yml b/etc/configs/cons1.yml index f1103489..8787bde5 100755 --- a/etc/configs/cons1.yml +++ b/etc/configs/cons1.yml @@ -3,10 +3,10 @@ grpcServer: - 127.0.0.1:4530 tls: false account: - peerId: 12D3KooWNMsLYe7L5vArsgeXouWZoR3yyyPB7mvWbVhPp6psTjyq - peerKey: 3tPwUjvQHSkMuJ22kP4BdmTDYznn/32ijYEQ/+ALvoW6XjrM4KV2Y+tDC0Rb77Htrsn3alVNo/E/dhyZd2tlGA== - signingKey: 3tPwUjvQHSkMuJ22kP4BdmTDYznn/32ijYEQ/+ALvoW6XjrM4KV2Y+tDC0Rb77Htrsn3alVNo/E/dhyZd2tlGA== - encryptionKey: MIIEowIBAAKCAQEA3KtHqztTQ5yvWF3onxT2+NVhLUErwi+TT1jXiZF4jIPXRnLZBIf3g/6RvN5uS6EzDfoSnm+oAcXFlVSsEu9aWtcR5iinVvIjdulkruzMqMM72zbXVB5QtPFxpC4/ySMjcZRyYml2b4aZ+RMl7fK03ciiyvC4Cm1PoY3Guy/95mq0Z7Kc/y5+Lvcpx+g3sgfHnspBYaPGbQdiUymZGyr0MqfmrKiwcZSLqRKOcWiIzPz72PZyTXgM2pds1FBwHpkJZTIUrHjy+CCoMKA4NzhjML2+ao5VQOhmJsWIa5PtdatqycxxYpzyTMOIV1FcigmdIQpSqhoAVKIO80l0rdhstQIDAQABAoIBAQDKXnGdgQx9JwZPXd/ldE6CKP2ziN7eeM75p5oS2UvaYVZdjxmi5CaD8EQrFznDNhQiL0I/9ln3Ni5bIomj28nbIP2TO5krTWhktunU2eleo50TDpou1JZjOkFjtd5dUVJB6Ud1JQ6ufJxcJclVDI3+Du/seRHuzgyHNgQYyoxob6IlMn8TPC9E9wJhdHGswo3k9wNstBE3KXW3XAruahqstELl5CPAjjDxwskpKMn3EMluk1cA8gKq7PnjyO8HJU4LV+JBuJ7Kgb2lVQyZzVcyM7SDPcHuCQICyRST90444iYDFK2Lzfx2qJ7wCOQoIp2sYaMS7bAydbthlIkD/JnBAoGBAN7WRiyBmxL0oJEJG+0mbvo9lJnCaWufth6T3BLY5rXf2IiPcbYsQBaDC14FhHLkt4qbFUnHeCvW8pli0Vyqiyad9EcwCAcsQg486GAD+jNfRH+wnRgOrfZ/quG9H5NkpoXhHEcRQx1JLt1K39cuJp+dGje+b+yks4OzTFQd0GN9AoGBAP2CaR/aK59+ofloH6s81tEUNlw0r1GhaI0q8rQoDuTNz0rrpc0GNJlnrO2Q1DOfJpfttJBbxpmQCTnEv2PNhI6REgJLz891Nqj7tLOMZsZdhziutG9dVpLe3SXP9arMgBtmF1n6i7nRrmNm+4aHuK2PzJEb06K1qCLlnwRUNIOZAoGAT2aaapFj6EUyUXulb8MaGCCJKqCTX73w7sRQzoZq7rNsPHygUAFEdMEM89uTbj0BCWppE3j34OceWnlTkGlUW9Y8jIEY2zVx9BDP3CaOqG9xwO31i/TvF7417WmuLp7Wly23HbuQ5oaFJGThjZLsQEOCbAp3ZyLotCzXLcHR1yECgYAIpzPpZ2wHxK3IspoqISh/+H2mhhHZ6nWEJAwmxBtGChRiTUrahbSz68sGTORBYtRRaUa5irhrs3PtKd8SjAhTSXZg56+POEQGXpkba9ZyPO0JrUTxbDExUDQiP0f2bYaN6N0xMBEm5ZZbRD+fpvBR1E+6QEXoDuVPU6Eq56jnOQKBgHfK9Y4DjjBJgSGyw0N3BfjhfevqHM4Qs0hoodI3z/90SPWG66+wfIqAC5jshSMvaH5UGB4E2DAnHcyGyK0dQ4i5OmxlLAfqAfVD9CAvVWgEhY4fQ+Io3WTzEq92fgmyIG+nVZiNFEICkHHVJIYuIwxgeY7qswIeP0oAbnUNrjTW + peerId: 12D3KooWJdzYSrwqKT6zWeS7UDGBwASSkagX6tfWjHP4PoKA6p7R + peerKey: jjgPiYRm+jHkWMucfm3z0xdBhD4KFlcEVOeePBE2iA6DEOv+XZGd8+E10wzIgkzddR/H3Aj097VTp2XQvfmuKA== + signingKey: jjgPiYRm+jHkWMucfm3z0xdBhD4KFlcEVOeePBE2iA6DEOv+XZGd8+E10wzIgkzddR/H3Aj097VTp2XQvfmuKA== + encryptionKey: MIIEpAIBAAKCAQEAy0oPQJI47puSNmKiTZFitSLTGf3NPZw7l7ee+1P2BU0ZGsRIdJ4U/vebpNpnnpgQa2qV8Z/gALON3YUSUSYg15qfjFGfGvm31TOTd29RptonfCOczkNN7qteZwmNt0BYx9rKakJhYl8nNF4no9vIqk7FVZAOIHSHNnHIlSUpdXSCakrJxx60/JQrPtLnUSKwwlBNLAPo4sKl8Y7sDjDiQ8dyWsj4KDbDj0PLjv4Zr9xk4rm+OAv7lI139T2e3pJ42QUWNw1iC42kgGzfKpGg5xbYdjfb6iO0y82hu6qo08sfP86n9h55s2FwPf1QBJimbVtklKccpu5bmFEkHGkZowIDAQABAoIBAQCR8cdlahSpaNLdbI5s9bVRqYC4pjdUxfcagt8GPE7hm2osh0IlRuB387ev8IR3nWAcXdbsMwUUO9Pbdw+hZqgpYX6ttGNvcFwEGhUCp86M5Q131/FZO4SVlj4d5wPwzadvQ6oSAzn676krtXTr9HvpmMefF96sejwgYCvKt3U+Nm9c2OSsJ/q4nr1dq957kt9+9r6xiGCw/CtVCiO3MhXdAJGjDiGs9qDao7Q92eJ9nEEOxDXBZ42kcieVsT8q5tjU/JW7FeEsoIVvVEkoe8cmQ3HgyfpFQ56Vo/ANTmG+yOiopQchpxLRR2gHp1pNL0ReQnITTg4KfYFflMR5dpWxAoGBAP71t1b87L30AY2pzUIBeGEhk0vq+agQVx9ewjowoZ+rVqbP2CNYo2wBoQ/ZhUSnquW7DvQDMpOV3seupCcs1i649g0TH4fbHMr2VZLFOKpg3aS9dR9S0iR6FyKJjN/OOrQAwLk22B3Wr4wqoScqZNVtDPHUPcp2KCVYBSh/2C81AoGBAMweYMBn3IwMg9OyPpczQXqBBtdmdSKpEEct0S9Zkopuyu10BkEJo/W6SuN8Mvp9oNaNz1nGefnWAaRngJNd0vKJXg6jN+zIq9zb+BB23M0H5sfbj+79bOZ3J7ccnzitDpPT7u5O5Re0uVO9yXhMmMWDKJZ6jEnicqN6qtSWW4h3AoGAZmGrbs4AD0NFwGpYV1IZ0f9Wk9zWxgtRwPIfUpimvmRiVngOFhuI/F0nHSM/JdOih7/3ADuseqFrJYpWtriFhZuWiqeMONTfGg2TTW3PFHPzbSz7NEngwu8YDTFpFZJN9mx696UzYcANHF8d+YlHloDE+vM8oOmTs3NGFv5HhKUCgYA7SE9dUkzxt+jJoSkgjNhllffAs5ctm+CIa7wnfmJbJlZ1pI70cLJX+eUqMLY1nisKZWFld4mRkCAl+ZGUO1m66z6QDcN+V8HigViIn5z9R2A1h4VEKgJo5Q551ixAL7LeKF1qhStwOSLiOWq8L7LnGnK9UZZRFx2ocUYQPCMVfQKBgQCBM0YutMekCc0VUUlJvN6jq5S093xeXrjJFQ8qRwnRJL8mF8+XLPS0jxGlV4f/2NkrxrFIhXL0J6MsADwqXf84iuwyMHPBP3vFDoOhtTgw8CBq/JG5PwXOhiRIRrtd30HrEIktEMVMWbOJ1uQHfTO93sjySZR8J1oTJvImmuT69Q== mongo: connect: mongodb://localhost:27017/?w=majority database: consensus diff --git a/etc/configs/cons2.yml b/etc/configs/cons2.yml index b9afa807..fd86db6e 100755 --- a/etc/configs/cons2.yml +++ b/etc/configs/cons2.yml @@ -3,10 +3,10 @@ grpcServer: - 127.0.0.1:4531 tls: false account: - peerId: 12D3KooWSNzU7m619iEC6PVnRPUqzM5XtiFX3VZekyowTAzRW4yF - peerKey: hEvfnX4IwcbH2Mqw1hI4q4xBHrlbZufPXBFq4ztz6hz2Fp7n1RsiG7MFgk6mqxLmXuB1drhlqfLZPCDYWRkoEg== - signingKey: hEvfnX4IwcbH2Mqw1hI4q4xBHrlbZufPXBFq4ztz6hz2Fp7n1RsiG7MFgk6mqxLmXuB1drhlqfLZPCDYWRkoEg== - encryptionKey: MIIEpQIBAAKCAQEA0nsJzf+y8waYqOu2jvH78q2typXTIKluz+RJ6CdRNH9CGwq2Ag7hwkYxxtr0Cq5EeI24+OAdHuJIeFQ+LLm1YE+RG+Hv/tP06kv3lk6b1jCaUVzu7y0Z+V/O4MclILMAF3gn+8K3+TFHdTfM8u3J3Hdbs2gA9y81Y/B+HXBpqnJ64E5fFFCTip+WUW+3HMyH+XC0c2JrCGdsuPQqdjIAO7HRb8us54kKP299BfKRe5FlAN4d8NliFGQVKnJiJP7RXH15Tlv3pUxMNefZFJCLFkU3oocHjs5/ykXC8PVTY7kkSpqa384ZN16ip+JWKcg+AqhWYDkiPy0mh5lFSZkO0wIDAQABAoIBAEzOXy6Pz1JFpvGFSlHxVbohzJhvgeKaUXiFWr7fkg9xHMNXbkFkAtfs238wKPu4yf2f4c7XoWjCtCVMwH97qQcjIdWl5fj8iZPx8sAjoVRQ2g80tXAL6j2Iy6pUoWTETRVDYHvLe2zwoZ3RpfVD9nSADbNzEV8iF/6HJM5DVhu/D1PQW7x/3jmI+GwnLDpDQ1UCv/xSiXqbqjZeL/+pU1L9NrSs2nPBsn1V4D6YCwRp84VgYLxaxl90wwDMhg1VBuakHLff7ZWl/BYiowCNZQQEvYRqWoeFopI7T8LjWoifIJxLWOL6ma3wgTkXPd4OQt319m5rWekUMZfUWH7bbyECgYEA6PGPuddpSC8faaP3jnKAEaBYZ6Jej6UB+PDsETB0YUruxbA/0/eSLo63mLJjgQ1BEZpuQmtj2x9qGQ6pkjwTcF9pEp1o7Hizemd1EClX6MLAATnKFlkqmCjlnVIAP5dgz0lfHMFaw1OEB7Re7UKwCYzTwuHx97lZ+Mq7ti1pOLECgYEA51BMhJ9hD9iqz7JCNuMPT7ZXdQWnky8wQ109DOOLTH2Nr9RGaojVtBVAdyU3NIWYuLcpR/Cub4WrOe6jOCGT87sCyctZxURjG1h55uO+xF+DGRZukxihC7IN982eC2qzlgqT9A76KdBDOCm6Hw8xSV0rObs19ddGYoWTtGRY4MMCgYEArdO85fhaJzSK42EpFdJZwU1/Su5+VADVRPg7oOQgpI2vOjQ4nSuMmVOEq9zKpf3HBaTRDJ1oqZZ6rPIlFevgsaVxGiP+rR+xBvF3CLVhVV8muoNuS1kEkQFLvyb26n1DD8v3vtSGr2V+C+XMRI7UIHxHdZD36F0XR7G5e8vNTjECgYEA5riAajRy4xRxY9NhGlAm4JJ274FhYXzK/hZNI8L/GZ+OKNhqGC8+QW6FK5JSWy/6YhxHr7sQsqo4XQN7iCxt38kkAdW0SABrfkYk6Tk2+bZvFCH8zvndAMZsCkTspGSclkccxm399qEFu0pbnElSFuQ4jk/+haVhTjoAVwlUYXMCgYEAyFjuNKLBDvOI3YNjKXmja8kDAi8xJSue4W2RmQoHuPXfH9VWec1cxsWMzOb20Y/9FhdhIXBumrFFaywIMh2CNEgEYpuE/cw89Nf6wMAt9p/hv1RtgwfWT2MV/VADm1teNvHjGweOS2ylvKfd01uGH63eWcmXrFP90RbGMl7zmv8= + peerId: 12D3KooWHrxbA48bJ23sK2T5cYWDFsoFtG4NPmcQQykXfjQhEKam + peerKey: D7vuDE5ZNrY9k4m7BP2nbslmD/LnzqBgByjGWJw54sB3h5Otv6oy7IB323eBi08Mm/2/zNPdBg9vAF3RBEA9lg== + signingKey: D7vuDE5ZNrY9k4m7BP2nbslmD/LnzqBgByjGWJw54sB3h5Otv6oy7IB323eBi08Mm/2/zNPdBg9vAF3RBEA9lg== + encryptionKey: MIIEowIBAAKCAQEAusKaR2QZwH/v2cdbuLiSmgiJ0f3b4/NqKpyq3Bc2r0rrxrvRHHagywRwwNAy+TsyHRzVys3pgZTL2iWBzxGn1gvAhPv/EFSm24KJObx/GIG+fzefvK7SRJz4AWt8x2ijSLZFA5kqXLE2Gkl7GqsG1vK9SzPIvsKPr/Nt7sj1DO0DFu0taRxS7lmK1kGt3dw4rkkb0iVWQ3QDoYnABdKnKVqiaJc0mFrjndqvozC/qWte/VggSpJQ79I/Dklm+TQcT6bLByQe/iB0zVWnrCq6JRFxrqVsBBO47bDW94BuH1lfnLrrn5m46rT+TOwHRwPfZ1WxnPl1OJGAIAYPRTUU8wIDAQABAoIBAHDjPFo22ZIQQyzCYmDPwF23F4eFCStKcTv8oxKSPY3LnaTs1kN8OUk+D+Gcd5NLAsmyKlCCEsku5eGglkxSAb9SLzazE8QNRyacStJJbBGmKz2+o6FrktHCh+5jyHLIfxpuglzgckjBHVDaZb0C8AlxhJY2YPtdo3jZjfOuKOF8Qb8Y1SpJRBQJ4v/7NduPQ1SZ9Pm+yZmJ/UQ9M4m+Sav/pwtxnEEFS8rNUODCMTFlgYd6g53SyAo1/X1zlD0b7tr3Veq7OKqa5hB37sWgY65qiTQo/PC3wGbH0Ao+IMM0yhg6Lfp9lZ6qApMV/azDHqP3RUsD0ytkpxK4TyhzaFECgYEA0mkXXel0E6w55d8uhRp36kQzye8A8v6rP86b/lmt0CVA7mQ4X5/Z29h8UcaVlJ6IygI4afk8IY4OwdMB9E21otS5RdcKfz21vOGZoAqj3HFaXFozqNfSTRNlmh9YyIWY2TQHPvacrJIvg3p04uT0TKI7EQG+1CNPYpiqQHcsr9cCgYEA4zmwnIrLqJLMykrnOqi1PDRO4FvB10q0171Nen1ow1sMpHl21cfo8+r/jY2xmxOhb3RBDQcK837HiVvKcSc79tF/EqK43ErKsW/MoUu86KTgTX8HtTqflWb6ZrG6hFYvOtThSNNBUN7+HHOewGEtQ+jAP+OJHrDIWTgbs7Wt0EUCgYEAncyO57FzimV5rnnoq44kLJ8lr+X88kAoMlxDBUhAYH/v6FllJeH+QzBiW/nwqFsU/1sW7/MpM4kUbCxRpOS6ufmLUWNqze5748HVsv8H0QV53RUQ9SmW4JMRebrUnN4EubCZVpEhAxNHavVlv9wxk19/qMuEUBiDKtCPrnUyIFUCgYBGmec5TJro/uvoswtTm5XsZehYJ8p75Xd5TRVkyNCjWof8Fs2IsTu9hjfvOKaFo7zWT43iyVxqueqv0Dh/ngwwrXlJRgwgTpDaPv2a5FiHBKu5CI5RjiyFlGCbRf/JHKpCImD5asJxqUfVeUtLRSZ2YjxR3ZX+Vjl6F0fsN7gQ7QKBgHVCnFcLx8HLx9pTsIWxDJuYVwsCHEp9EYExp/68PU8eN4Q0fDhJ6MDzekG3HnrcrVRry7fSiZcepDs12/iWZsFfNnLAtAUzfDpsHOVq+QgSZfsoLdxGYGdl2gW9NvKmS6YYaWsgHrswbeb4Jh4AIrs/Acs4t6/Wf33DWmQEQe5x mongo: connect: mongodb://localhost:27017/?w=majority database: consensus diff --git a/etc/configs/cons3.yml b/etc/configs/cons3.yml index d0b3836f..3f9f5235 100755 --- a/etc/configs/cons3.yml +++ b/etc/configs/cons3.yml @@ -3,10 +3,10 @@ grpcServer: - 127.0.0.1:4532 tls: false account: - peerId: 12D3KooWMrYk1QLiE46aJBnLCfAawXJ6fVgppWp1DUNfXSiH5MxE - peerKey: 7nBRbL4urB+itm7SJ40gjPYe/N5Irunyr6qkpKqlg1Cy21w4WpuKN/TSgaDoVqxvTbReLbu27hhxEzdTrLNO0w== - signingKey: 7nBRbL4urB+itm7SJ40gjPYe/N5Irunyr6qkpKqlg1Cy21w4WpuKN/TSgaDoVqxvTbReLbu27hhxEzdTrLNO0w== - encryptionKey: MIIEpQIBAAKCAQEAvBXWnAyZ/CGX4ROQjg4xrKd2CQw8uOHJjJaB66UDawAz5TLcL2WDfHHp7Mxua6+Fy/a62xp3OBwywyYGelGzNIWPd8oR5X1SUYzKqCR/p0ThybRKeUkYnj/UvjF1UzC8NUYNWBCjaZkO4HalYpjlbf0vVDryMWow4YE/0cb+rsxdxJx2t/ThKS808rz0WsKNcZObOM8Vt7RNkIfOKsdwP8GUKx7JMPa6bkobW7FvLkmCgHMPOo2uoAkQIMZLXSB9F9RKDCSBToW0a2r9Wilo99x1t9PZLzQbAKkuM4ZYkp63rfBzRRRPOJaAj9Cb0tan2nyQkRrVJ3yqGwyFjbe/qwIDAQABAoIBAQC7fElhZG5almH/SrFd6Wg64vMWMcyVvvxZ1+3KJ8MwdhNE9V3nIRngguzbzyyCy4RjvJ6mqcsNc45mWRE7/RTV1g0dK6CLUlEsWVvqH/fflRo9JirWm7aeiKJYtJRvSLVTpXDHyE4chSX/OkXB8wdAjJERNXEXMPNo1p33TpWxRu6x8mwAIBK+YFI+SjQNuAteOT+qKAKZsyLbv+kr0tBRyHfEVdYq6RHzbtMCJ2h2P6t1vywLGTPw9rUAYSFOnsYfl+RPAmmZDF4hH4teIJIWNlfESpppAFAIrIg5+RjKVM5Bm3Ez7vx3sXDPd+aabxKoqC3nakHcRwRYJD2Pc1cBAoGBAMYkxYj1C7FkJ16R9msptdiV+aILzGkpP7WLYSX6dtQbrwe8FK7UrCwfkm9Zbyr9HOik1SEem8ePgmZktCdzGyi7mci2BEvQTzDnN3T6aTG8808jP7X3Apgxw7ENhuNbxtygJdNZC3Szrvz7NS7bcD/SYsSJ7dNEn7StUZjGrf4zAoGBAPMBNOwvFQCALNPQFIY2tTStL6TlIJgcIfhUhF9pcwv6V9syOxepWe3v6d5aL0ooXU+59/V3pytNzc2SGeiKB0EuRye2Z7b79riBw+EqOMj6jG1DX8n8FfNhX++8mH7LMsxbcAN9jucIZHCUQm6WYedHwq6vvc5CYbCmsJ6z6VCpAoGABzhHylnDd09C7/s5k2YNrjqowfLUG/DY1XCitZOOyOPJWOrNhiFRtLnhyBTmLBbU+tUmvvIyku7zvW9l8RoMn0tWqy2WsnyApjOGnciSFLHh27xZEfRSL+GAU+8+PwKVGGztc+oGtNXnRmiQ44gzat/roWW1OMGDYD4AfySeKmkCgYEA4c62Qd7CUlPI1A6gc9M0cT2Zb03nCtHhkyPeWdbgLDo2F57GoIci5OIyXQdKuEtn4iT6UCQeuDO1URg5cQeKFDyPrExodfYO3obe4UXdvIxtnz6jLUtNjnpmrpx+zBvAGXvCS8wJ1Y/L3X03ehHN6h+Zvb/azWaL5p4Os3qVDPkCgYEAkwlmHO1BjozslDlY+GqhxOTWZ3lKR/B3C/QttmK9iBdRDc0A8Yj/TJteOgBkGxGKRz+1Z9JS+CTIY6/TVvib4NDLIZiomO+zIMrn4m5O77YnupIWwxoOf9MHPmQJaMQuPyxoon7eUL29rEmz0sYZMI8/QrACqPqTDyEcl4YJreQ= + peerId: 12D3KooWN2qtMAhoDpXL49iYQE5BTxbDwfAeZbwEAo6UBUXXdG3x + peerKey: N4dfL4wZUsxUqut/2I0h69+/5F3c4YRi7PIx4Whx+r21fo2KKMH7nnncZULK1959KeJu1jzuQcP9HdWvKhmCxw== + signingKey: N4dfL4wZUsxUqut/2I0h69+/5F3c4YRi7PIx4Whx+r21fo2KKMH7nnncZULK1959KeJu1jzuQcP9HdWvKhmCxw== + encryptionKey: MIIEpAIBAAKCAQEAvVOwhYbGUYrdOeje7ODF/RAkr9pXsO20tkimaW+q5LFdNiUgdSugG7e1lZWPghcBARrBsIPNVe4m412q3gbV8cB0ObNbONOJ3cnKV5o5x8MG2GB5TYRvdCLznqRP7ySzAconHRhZ9s6Ff7IT/Vex3bKr7Q8vRscIUMqNUWPnnvCZHwUcbhAgjwPpmcK5xfja2EPw8JupcBntg/cP/h6Zy/60G6YOgRiwnfWMV+Fhip3ALSMh8vA9bLXImJ3LUHE1hAYlQEPw2dPa+J+3lK4Ou/5qKMdygp2/YiwmJrseXbf/6qcySumuezK3NtDoR/AqA2bGEdfOdtl2G5xbUaN1sQIDAQABAoIBAQCais30sOcBeNDMjIIr6e6ze5H22cvq6J4yjWsJddWRiBYGNJgiDNJMzdCzobna/twbArRIWc4q7pNf1P287ueExwwYbYdxA3vuRuGcUJAJt/DGfzmFRS2VJ1KllIqLMvHL7C+xWEdXZ40hh0M58XOG/GnKwDJfG+h1ymFApsRSv7ri+LToTEm905JPESou8RzvsMxiaPtkzxNY0W4RbMchPU/RiR21I/iRYozaV+ylaRh9RAbvfSAg92NrN+rW7i9uJQSm65Y9dBlvxRHMiaOR/gpCeUr9QYOvoSzvM23K3X/Tj60HcsDUBeKi1fEd700JQjtU3YC2xXQV31IEgCYBAoGBAOdNvPB+LvedoWZKPhCOw5uavOYC+f34cWkV7eM8FJVnW6Y+MmoIKmK8nMyzWch9bESzwEHx2uv/TbmcFYJdf0v2voyTG/LxfoS3yRi9zbA0M9mMJcuejR6l4H9bWQev5TpIF7kdm1NpBm7WBRnOhWIueIgdrJgtlIuey58bubvpAoGBANGKmAfyK7nVuAl7EWJaVhNTXBuQ7BCLtPVnd2+WOr/CwRAq5O0aoZh3+e3xJlz/dd3BTH9cSvRogi9ckaxz4MTusHDXzXcvEc+EG/GjaEY0BRRhWhzZNZESfHDaAXAUGbKuAm9hcuo3xfVDAk2OWyWVsLLp1A1+fd4k+jJLzPaJAoGAErEFg6muwfPLBykYut3OkNSAT1YOPafGAmfzQVmpkCk6DsUX7dmbEz+KrEASEVGRXjvoXWvd9RQ8g7NJSa+kic72twVsTMWXI8J2TbmI1aRiTEI3C61UWhWtfp0zJJviOkN5J0xtMOBb1LkW0G8P+E8pDlbXi7SjPGUor0LeT4ECgYEAvE093jYkUTXb0rlDoAzqOSe6KBON8Dh7/+RhEmgAl37enDbPzrsV6Lw4XzlMblorg4JHylQYD5czFnireDwSCycsa9uiiq5D5SYlLnrYI+5veicaIb6YQqxII+nlTODjTwzMp2b9K7m/LW5wTV3WTuo8BivXIeFAHzc/l59Cq3ECgYBlW+VPH1CX0lXmO7A8Q7Ih2oIbASTMdoJUHg8tdo0PlDUKxjRP7ECUBaKLiCSaz01RKgonnUZTFh26iAqPs6aSLhcIxabq5jLDy2G9VbK0trEOYhn70cZ7j7Oev/8gAy1z4fGQLZEboA0S49LvQAT2iY01pHO84H7f4BVpIVzO5A== mongo: connect: mongodb://localhost:27017/?w=majority database: consensus diff --git a/etc/configs/node1.yml b/etc/configs/node1.yml index d15215d7..eaf2385c 100755 --- a/etc/configs/node1.yml +++ b/etc/configs/node1.yml @@ -5,27 +5,36 @@ grpcServer: - 127.0.0.1:4430 tls: false account: - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab - peerKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= + peerId: 12D3KooWS7Z835JwmJ5pGHJxpEsJ3vab5M4RjJsWHXmDD5895DT9 + peerKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + signingKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + encryptionKey: MIIEpAIBAAKCAQEAtw1tn95/mQ2cpYgOKxaRwgZITgsrmZQIyH+bYFaUYUWoUp/AxAdPrh5cLehMUNXH8ZoyHkhV3bIMWpHoUyG+QJzz7etktAVz6MtEl3Wo/jAgAEDvXXgFMku2hnh6coWyhzyXR190ZHgGazJ0K1OtugsIFXwFro93j0+8iPuifsWkH6RaAhvZJUWaQGGmNQKSZnbdFokGmo5FM0z0eOI/sZGhCtxuWbpZz0hhvW3sXEWEyzq8WwTFLGoppIETnhjzcSJDO+pq0b934WuMTGazUH0sPc/AnoZJp00237Ar8g+h10CVxQ5SsTba7VYDCr7/zeHS+vvUYNgB4NO0lylaTQIDAQABAoIBADhUKoLCjhNEDAsoFewOcuX41vElINKOqjFAi0iW++v+6nAadtAby9oxv33k+O77Ch7/qyKEcd/ZtVF9irdiL9BkO+/fuspmzyc4va+55jnqBz7svHvPvhGfGNjCZDOvjqNs8sRkzEVKZfdAvFzE0DXqxR8PXhQ8U7dG+yZQAM3vcE/ib/14OxXgANrPwOKO04Lhff2xoXuuqrx9XAG+PbLlxi0gYGK55E1whgBldPC3nKA38hh1QDt+uh8AVdZ/Y0ehW7t2CG8zPNNTO7TjrZHwMeFgvVODN+0X1W9e7nIuDGVJ74FzvC5PZwBURJ/tjHSUCR0Pf9t87yaQqEQT/sECgYEA44Ve23Fnn97kNqpYzJJAq3+1Cg72cEg8gG9RA+AtOcMUO9EspWxiu/MPXGbaP/R/5L9UTikv7oN7an4gsO4FN9cFH/j4SY/fI6twi55DwpOFbgjLf6lT0tzEnHymPXjGCCHdc3BRIsjd3ehmQcwBZ/pPl8CggDxj24/xlqt7kbECgYEAzfceXEEpGmOZ1Hno3Xck/ZBcl12KjLVOK8ACe890BjWIPDMXaYfGJJpX0terR7BcqrLrq0komPUinoeelpIAitTXQ+zr6ULYXpZgxSTOz7aV7OAsudowp+m5z594ZagIgs3lKVILeclAqaYB4eq9/pHzHazS0YIwWwce753CfV0CgYEAzJ89YYTLmoe+nb90n3+Fc/gmHQa58t+0shnrNd4fLozZHLcSPTCOV9TQ4tyJuu0tPNAqhSUbu5o6m9sVkapvvPm/3TJwMtCW8aCVVqwe6tb8MKruQkFKZyEwHkEoza5aBCRY4yKHhg47JAGIPfK47Qe9H5EZiFtHv8bkkwpk1vECgYBuFJy6a+0e+IrYIAwQicRQbV6/W7RYPfK4uVfaemclhmj428mwkmuZVpCH1NLrbtwoM5Z3ppM3JRVKq2tcSE5X5SfkWvU/Z4WjEDZKR8DtDUYWIz5kWrRUmjvANxgvJN7folHPgtU1UxXnVh19dGv1amYIvzyx0yYrEKQ9JxEy1QKBgQC8zAG011S0HopmpBFizKanlmKPM9BHKk9GCl8dEQltxr+KA6734YwMy63fxaRBje0WUJJPMwOoxNUWfvJ6cRTi4BpEbOhy3ZfPCpVoVX71QPMuOqAvUbF/AQrv7tLCSs1WSA98k8DVeIITHAI/ITzCxuRxPyzU7agi0D9EBLoaPQ== apiServer: listenAddrs: - 127.0.0.1:8080 tls: false nodes: - - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab + - peerId: 12D3KooWS7Z835JwmJ5pGHJxpEsJ3vab5M4RjJsWHXmDD5895DT9 address: 127.0.0.1:4430 - signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= - - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb + signingKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + encryptionKey: MIIEpAIBAAKCAQEAtw1tn95/mQ2cpYgOKxaRwgZITgsrmZQIyH+bYFaUYUWoUp/AxAdPrh5cLehMUNXH8ZoyHkhV3bIMWpHoUyG+QJzz7etktAVz6MtEl3Wo/jAgAEDvXXgFMku2hnh6coWyhzyXR190ZHgGazJ0K1OtugsIFXwFro93j0+8iPuifsWkH6RaAhvZJUWaQGGmNQKSZnbdFokGmo5FM0z0eOI/sZGhCtxuWbpZz0hhvW3sXEWEyzq8WwTFLGoppIETnhjzcSJDO+pq0b934WuMTGazUH0sPc/AnoZJp00237Ar8g+h10CVxQ5SsTba7VYDCr7/zeHS+vvUYNgB4NO0lylaTQIDAQABAoIBADhUKoLCjhNEDAsoFewOcuX41vElINKOqjFAi0iW++v+6nAadtAby9oxv33k+O77Ch7/qyKEcd/ZtVF9irdiL9BkO+/fuspmzyc4va+55jnqBz7svHvPvhGfGNjCZDOvjqNs8sRkzEVKZfdAvFzE0DXqxR8PXhQ8U7dG+yZQAM3vcE/ib/14OxXgANrPwOKO04Lhff2xoXuuqrx9XAG+PbLlxi0gYGK55E1whgBldPC3nKA38hh1QDt+uh8AVdZ/Y0ehW7t2CG8zPNNTO7TjrZHwMeFgvVODN+0X1W9e7nIuDGVJ74FzvC5PZwBURJ/tjHSUCR0Pf9t87yaQqEQT/sECgYEA44Ve23Fnn97kNqpYzJJAq3+1Cg72cEg8gG9RA+AtOcMUO9EspWxiu/MPXGbaP/R/5L9UTikv7oN7an4gsO4FN9cFH/j4SY/fI6twi55DwpOFbgjLf6lT0tzEnHymPXjGCCHdc3BRIsjd3ehmQcwBZ/pPl8CggDxj24/xlqt7kbECgYEAzfceXEEpGmOZ1Hno3Xck/ZBcl12KjLVOK8ACe890BjWIPDMXaYfGJJpX0terR7BcqrLrq0komPUinoeelpIAitTXQ+zr6ULYXpZgxSTOz7aV7OAsudowp+m5z594ZagIgs3lKVILeclAqaYB4eq9/pHzHazS0YIwWwce753CfV0CgYEAzJ89YYTLmoe+nb90n3+Fc/gmHQa58t+0shnrNd4fLozZHLcSPTCOV9TQ4tyJuu0tPNAqhSUbu5o6m9sVkapvvPm/3TJwMtCW8aCVVqwe6tb8MKruQkFKZyEwHkEoza5aBCRY4yKHhg47JAGIPfK47Qe9H5EZiFtHv8bkkwpk1vECgYBuFJy6a+0e+IrYIAwQicRQbV6/W7RYPfK4uVfaemclhmj428mwkmuZVpCH1NLrbtwoM5Z3ppM3JRVKq2tcSE5X5SfkWvU/Z4WjEDZKR8DtDUYWIz5kWrRUmjvANxgvJN7folHPgtU1UxXnVh19dGv1amYIvzyx0yYrEKQ9JxEy1QKBgQC8zAG011S0HopmpBFizKanlmKPM9BHKk9GCl8dEQltxr+KA6734YwMy63fxaRBje0WUJJPMwOoxNUWfvJ6cRTi4BpEbOhy3ZfPCpVoVX71QPMuOqAvUbF/AQrv7tLCSs1WSA98k8DVeIITHAI/ITzCxuRxPyzU7agi0D9EBLoaPQ== + types: + - tree + - file + - peerId: 12D3KooWKkWv85fkYiCnvKVsVoCu9VwFupNejVBA2bFGBjic6gHP address: 127.0.0.1:4431 - signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH - - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK + signingKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + encryptionKey: MIIEowIBAAKCAQEAyL/fnKl6ztxVtXkxdl48HEawDKmJmBxs6rGl+kNx+cb6Jio/GyKz4d1bCW5Ni5glyVg11RqA09wPaJxKMlp/svz+46a9MtZmC4/pFOiSaMkmMOs61apTruJNNDK/9O0j+irCnJFRGactt/AlCKU+9WjwsTtJtmqEkt0uuD0Tn709Itx86nzXhCqNtEKPvo83FaZ60RFpe72KNLcyP7DgR8m7Csa4JWfK1Ig0539rFxM5Co/GGNna3mqShDbIN0Aw8k7yCuDaCx/akd0Yd2BEjBApHtlonu3BYfCAF3bAus9sejogeA+mu52akN7H0YnC1BeftFAzlZ5yJV1gKwsYmwIDAQABAoIBAQCzzPaw0DMIV9wEP9oHVHuuL7m6fZaZQMxkoFwyfHn25zphOHFxEnHemG3TUpHtt4YQggslJSnBl1XNsj3aP6gkXejFaTAH+nNHY8u1SGDprU+hfO4jNPzipBnV6KZ47nTMucO4i4cB3PRbzKC+z5JGJ4l8k8d/tIOtLqGLrliHNlRZ7LRfovCP+ekPrPpxtJBp48GUQFRexXqsytiEYlAjXPUVHh+8b1lmDJXzxzTf2Nhx1lXykrrRYlOOYSz0fufFzsLcJSzPbfnomgjaNGKPCSWfREFp3Ch1P6+G9hClMORL5Vc58I5j3SlacsoWEw3ywyE0Visfn7ojIuqboLHBAoGBAMnbL0TeKaKIkRGdKXFhUzpUrH1mPg7QOLH65GbbtO5DHTwDRjX0I8pc+XT7u/qVhG+h72wBZ3J/egAlvLUOtwuuNhjir5BqS90QhtofsHy7IbzAkMhPpQ/3p2+ZrfTGylzUHLwR/hr9aiP5PizMJQ2JSQU3k8YozVGENnmpnydLAoGBAP6YskbZU6+TPXlconbg2G+D6KSYScu8h1d6mYHjcbCOc5ILVa1DJGr/ufYl2dqPTA63Mj9PJ8Dla4WI9iXwh0cbTI/N+XD27y54sWonuWymX/9i2tlhmnLeLqGq7zQ+eCQMMnhH2rbN/+hEYMwbsTAdu4txbPDMGVoL9K09PXHxAoGAGBuASrZJvKqYwMTHVU4tVXMVYqiaUsSVcNQpAQvOUQJc9HTjpr/wolN2S31hFu1Scs6hPIHya99Dn87h+bG3NMLqnRA9rX60bsNxh41vU4Y54kQRRosUiJKoQZDWELzJIEsI34E6mtiXG5LB1THQXwx9Vw0rLehjlQ+4PdF/O38CgYBjHbs6Dd2gmufx2Xh+Y2afc3EcsxT3tjvSeK5OfOeD3tFrZ/JA88S3yzrwcyfvCJ6JlBSBxSUq2aYUZI+/kXZ43k3eJkgYDGptYxtewnxTqinxWODuhCsG0SzCT7O0WSWYkw8K+J5TULtyBzzP+W/v1YNv9AZ/cFXmUoU89Hx5YQKBgBPx7Dm8s8M/8EQoV0NQwgk0I2W7WCnaNxNaNnIg1MtEsBkI+UkxnAGPUwEDtv5cRmciBO6SdsvUrZh+t41Ui/MLTMJOsQO53HAbng4tjxcAmDM/R/iYyI6gCCYhxUudPTaKDZchV41TrhGaqXliV6CgCRVm2WsKFgJdFNW7QVq3 + types: + - tree + - file + - peerId: 12D3KooWCYAzw5jFx3VNkJ8jn6VFq4WcayT6sZzdBx5fJFeCjXbV address: 127.0.0.1:4432 - signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== + signingKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + encryptionKey: MIIEpAIBAAKCAQEAs/jLbBcMpkjqZ8R7ySsE9FkUdVZsJJk4BWI4OHbRg5+RMt74AeoKK+NW81zxw5tzLXvW9AZVccO742xB5mRfyrvZ22YrPedTvQymmyY5RCh9qduk0OOfItlNVyG7zRBgK90TAmkwbg4B1jCFIt3cuttK7A6gUKqy9deNhYZd67a7byJIgGmKcqK4ETbeLw8vJv08Htagn3/7CRjwAQcuLNzWw7G4SiTyIOcLpX14oQl3/v1/gYleFVyqebvo4xftQ/pCzDZoD6/t/HK70zzD+TsCmWK/o6iO42hsARIkuuuufASW9mIGcjKj8v+mftLEqqkSSEwtZTuLATJRG2bwiQIDAQABAoIBAQCC+GKpVZjKBjQ3scBXpGvlmlIOFgd7Ftmy6Uh6ptVP0Tasa6DWW8htKfNkBVaXgC/wgLfsPBPAR64bEfRfQtqHQe+H/7EmSosg/+za6ZUxKbpRe1tU/OEZTkQ/TXhLAkjKgwbLcVtiK+VgR00ME6MHhIDgisBWE/NKf0QpUKBW4Rp/0l3bUYO+b7aAIBT0Q/Noc+kaXbHygYuzTMYCvItGDe0WtvrNE/IQEnjC51i02rpa5GI29T4OVvumKbLjFMlT0EttkTjZNVEicP8RHqSKlE7+lMPT1eH3CEVepV7QKCzgPN9pBudLmzmb7HhSZvwMzzkTTt1WczWshBrKZKHRAoGBAMynv1toSLzznwQzffhwLQzvzxnjhdxNKKbJ7cVG4CNVKRVh9iPVBv+XWgBYInnpC/ByX5HDKleRvo54wXzYoMlxtqz8ZCOFxcWrocehbLAIxtGDlSAOGAgSVMrJDJr28Hc7n0zesIyQzymoWfN7yDxcKLB34hC0qUQVuaY7PjTNAoGBAOEfuQkzdrIcT7hEuX+Jv9SmkBnxSocpUZyF7vCm03Dg8FhGK16WWXwa5ii0R6LL4A31J1A/ydpFTd+kxqaQ0dyrc9QWkwzuyy3JYO2R/J7ejFO5KfuKMojXPMwum69y95vL4ZGfYXmF/vYv7TYaBhoI0oeJA5+w9dX20z1jgkqtAoGBAJRqJky8sNtOdYhPa1BK0XDrTC6DIKVl01A5alRBlPQqoxOdqinMKDoc4akUQVRVnFHwL7x+Y2uEB0Q88FyAoQHVlFuY4WodbhJu6HDkcPSsOLriCLhpYCYiXRl+ecS7xiFBvMG7UR9vOL0GGM2Je+nCD8QB/JCO4527f5m8pt0VAoGAd2Vht5WJ0DDfvvUEBLZD/T5RktC8HC83z3HhJdT0sxs5nTep7MKEtyN1CgWDML48GGr67L7ICXFUOdakXNbV1tk/1y4Z03QaYjA5rgYNGx0hA45iy7uhzZ2J6yiU/VpWJFTfT2JeShtc+6izgEwRDGG9dpCeUWWDHHWJ1zcddQkCgYB//JrVbMtkB+L5OV0UfAFlhGaVoThfCL5QHAwmXq+gsX7dxCu5NGJDWJ6fQ+e+0zQms6nB/BvLXcKWo0rEZJsyiUpWN8X06nsyHN1Nxk7PiPlL12dV9/RGD98kNmFQorYhO/lOWImqy7ZpuNNSc69l1B9Q/G/FLU8itzSp2irSEA== + types: + - tree + - file space: gcTTL: 60 syncPeriod: 11 diff --git a/etc/configs/node2.yml b/etc/configs/node2.yml index 6e8fed30..ddecb9f6 100755 --- a/etc/configs/node2.yml +++ b/etc/configs/node2.yml @@ -5,27 +5,36 @@ grpcServer: - 127.0.0.1:4431 tls: false account: - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb - peerKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH + peerId: 12D3KooWKkWv85fkYiCnvKVsVoCu9VwFupNejVBA2bFGBjic6gHP + peerKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + signingKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + encryptionKey: MIIEowIBAAKCAQEAyL/fnKl6ztxVtXkxdl48HEawDKmJmBxs6rGl+kNx+cb6Jio/GyKz4d1bCW5Ni5glyVg11RqA09wPaJxKMlp/svz+46a9MtZmC4/pFOiSaMkmMOs61apTruJNNDK/9O0j+irCnJFRGactt/AlCKU+9WjwsTtJtmqEkt0uuD0Tn709Itx86nzXhCqNtEKPvo83FaZ60RFpe72KNLcyP7DgR8m7Csa4JWfK1Ig0539rFxM5Co/GGNna3mqShDbIN0Aw8k7yCuDaCx/akd0Yd2BEjBApHtlonu3BYfCAF3bAus9sejogeA+mu52akN7H0YnC1BeftFAzlZ5yJV1gKwsYmwIDAQABAoIBAQCzzPaw0DMIV9wEP9oHVHuuL7m6fZaZQMxkoFwyfHn25zphOHFxEnHemG3TUpHtt4YQggslJSnBl1XNsj3aP6gkXejFaTAH+nNHY8u1SGDprU+hfO4jNPzipBnV6KZ47nTMucO4i4cB3PRbzKC+z5JGJ4l8k8d/tIOtLqGLrliHNlRZ7LRfovCP+ekPrPpxtJBp48GUQFRexXqsytiEYlAjXPUVHh+8b1lmDJXzxzTf2Nhx1lXykrrRYlOOYSz0fufFzsLcJSzPbfnomgjaNGKPCSWfREFp3Ch1P6+G9hClMORL5Vc58I5j3SlacsoWEw3ywyE0Visfn7ojIuqboLHBAoGBAMnbL0TeKaKIkRGdKXFhUzpUrH1mPg7QOLH65GbbtO5DHTwDRjX0I8pc+XT7u/qVhG+h72wBZ3J/egAlvLUOtwuuNhjir5BqS90QhtofsHy7IbzAkMhPpQ/3p2+ZrfTGylzUHLwR/hr9aiP5PizMJQ2JSQU3k8YozVGENnmpnydLAoGBAP6YskbZU6+TPXlconbg2G+D6KSYScu8h1d6mYHjcbCOc5ILVa1DJGr/ufYl2dqPTA63Mj9PJ8Dla4WI9iXwh0cbTI/N+XD27y54sWonuWymX/9i2tlhmnLeLqGq7zQ+eCQMMnhH2rbN/+hEYMwbsTAdu4txbPDMGVoL9K09PXHxAoGAGBuASrZJvKqYwMTHVU4tVXMVYqiaUsSVcNQpAQvOUQJc9HTjpr/wolN2S31hFu1Scs6hPIHya99Dn87h+bG3NMLqnRA9rX60bsNxh41vU4Y54kQRRosUiJKoQZDWELzJIEsI34E6mtiXG5LB1THQXwx9Vw0rLehjlQ+4PdF/O38CgYBjHbs6Dd2gmufx2Xh+Y2afc3EcsxT3tjvSeK5OfOeD3tFrZ/JA88S3yzrwcyfvCJ6JlBSBxSUq2aYUZI+/kXZ43k3eJkgYDGptYxtewnxTqinxWODuhCsG0SzCT7O0WSWYkw8K+J5TULtyBzzP+W/v1YNv9AZ/cFXmUoU89Hx5YQKBgBPx7Dm8s8M/8EQoV0NQwgk0I2W7WCnaNxNaNnIg1MtEsBkI+UkxnAGPUwEDtv5cRmciBO6SdsvUrZh+t41Ui/MLTMJOsQO53HAbng4tjxcAmDM/R/iYyI6gCCYhxUudPTaKDZchV41TrhGaqXliV6CgCRVm2WsKFgJdFNW7QVq3 apiServer: listenAddrs: - 127.0.0.1:8081 tls: false nodes: - - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab + - peerId: 12D3KooWS7Z835JwmJ5pGHJxpEsJ3vab5M4RjJsWHXmDD5895DT9 address: 127.0.0.1:4430 - signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= - - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb + signingKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + encryptionKey: MIIEpAIBAAKCAQEAtw1tn95/mQ2cpYgOKxaRwgZITgsrmZQIyH+bYFaUYUWoUp/AxAdPrh5cLehMUNXH8ZoyHkhV3bIMWpHoUyG+QJzz7etktAVz6MtEl3Wo/jAgAEDvXXgFMku2hnh6coWyhzyXR190ZHgGazJ0K1OtugsIFXwFro93j0+8iPuifsWkH6RaAhvZJUWaQGGmNQKSZnbdFokGmo5FM0z0eOI/sZGhCtxuWbpZz0hhvW3sXEWEyzq8WwTFLGoppIETnhjzcSJDO+pq0b934WuMTGazUH0sPc/AnoZJp00237Ar8g+h10CVxQ5SsTba7VYDCr7/zeHS+vvUYNgB4NO0lylaTQIDAQABAoIBADhUKoLCjhNEDAsoFewOcuX41vElINKOqjFAi0iW++v+6nAadtAby9oxv33k+O77Ch7/qyKEcd/ZtVF9irdiL9BkO+/fuspmzyc4va+55jnqBz7svHvPvhGfGNjCZDOvjqNs8sRkzEVKZfdAvFzE0DXqxR8PXhQ8U7dG+yZQAM3vcE/ib/14OxXgANrPwOKO04Lhff2xoXuuqrx9XAG+PbLlxi0gYGK55E1whgBldPC3nKA38hh1QDt+uh8AVdZ/Y0ehW7t2CG8zPNNTO7TjrZHwMeFgvVODN+0X1W9e7nIuDGVJ74FzvC5PZwBURJ/tjHSUCR0Pf9t87yaQqEQT/sECgYEA44Ve23Fnn97kNqpYzJJAq3+1Cg72cEg8gG9RA+AtOcMUO9EspWxiu/MPXGbaP/R/5L9UTikv7oN7an4gsO4FN9cFH/j4SY/fI6twi55DwpOFbgjLf6lT0tzEnHymPXjGCCHdc3BRIsjd3ehmQcwBZ/pPl8CggDxj24/xlqt7kbECgYEAzfceXEEpGmOZ1Hno3Xck/ZBcl12KjLVOK8ACe890BjWIPDMXaYfGJJpX0terR7BcqrLrq0komPUinoeelpIAitTXQ+zr6ULYXpZgxSTOz7aV7OAsudowp+m5z594ZagIgs3lKVILeclAqaYB4eq9/pHzHazS0YIwWwce753CfV0CgYEAzJ89YYTLmoe+nb90n3+Fc/gmHQa58t+0shnrNd4fLozZHLcSPTCOV9TQ4tyJuu0tPNAqhSUbu5o6m9sVkapvvPm/3TJwMtCW8aCVVqwe6tb8MKruQkFKZyEwHkEoza5aBCRY4yKHhg47JAGIPfK47Qe9H5EZiFtHv8bkkwpk1vECgYBuFJy6a+0e+IrYIAwQicRQbV6/W7RYPfK4uVfaemclhmj428mwkmuZVpCH1NLrbtwoM5Z3ppM3JRVKq2tcSE5X5SfkWvU/Z4WjEDZKR8DtDUYWIz5kWrRUmjvANxgvJN7folHPgtU1UxXnVh19dGv1amYIvzyx0yYrEKQ9JxEy1QKBgQC8zAG011S0HopmpBFizKanlmKPM9BHKk9GCl8dEQltxr+KA6734YwMy63fxaRBje0WUJJPMwOoxNUWfvJ6cRTi4BpEbOhy3ZfPCpVoVX71QPMuOqAvUbF/AQrv7tLCSs1WSA98k8DVeIITHAI/ITzCxuRxPyzU7agi0D9EBLoaPQ== + types: + - tree + - file + - peerId: 12D3KooWKkWv85fkYiCnvKVsVoCu9VwFupNejVBA2bFGBjic6gHP address: 127.0.0.1:4431 - signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH - - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK + signingKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + encryptionKey: MIIEowIBAAKCAQEAyL/fnKl6ztxVtXkxdl48HEawDKmJmBxs6rGl+kNx+cb6Jio/GyKz4d1bCW5Ni5glyVg11RqA09wPaJxKMlp/svz+46a9MtZmC4/pFOiSaMkmMOs61apTruJNNDK/9O0j+irCnJFRGactt/AlCKU+9WjwsTtJtmqEkt0uuD0Tn709Itx86nzXhCqNtEKPvo83FaZ60RFpe72KNLcyP7DgR8m7Csa4JWfK1Ig0539rFxM5Co/GGNna3mqShDbIN0Aw8k7yCuDaCx/akd0Yd2BEjBApHtlonu3BYfCAF3bAus9sejogeA+mu52akN7H0YnC1BeftFAzlZ5yJV1gKwsYmwIDAQABAoIBAQCzzPaw0DMIV9wEP9oHVHuuL7m6fZaZQMxkoFwyfHn25zphOHFxEnHemG3TUpHtt4YQggslJSnBl1XNsj3aP6gkXejFaTAH+nNHY8u1SGDprU+hfO4jNPzipBnV6KZ47nTMucO4i4cB3PRbzKC+z5JGJ4l8k8d/tIOtLqGLrliHNlRZ7LRfovCP+ekPrPpxtJBp48GUQFRexXqsytiEYlAjXPUVHh+8b1lmDJXzxzTf2Nhx1lXykrrRYlOOYSz0fufFzsLcJSzPbfnomgjaNGKPCSWfREFp3Ch1P6+G9hClMORL5Vc58I5j3SlacsoWEw3ywyE0Visfn7ojIuqboLHBAoGBAMnbL0TeKaKIkRGdKXFhUzpUrH1mPg7QOLH65GbbtO5DHTwDRjX0I8pc+XT7u/qVhG+h72wBZ3J/egAlvLUOtwuuNhjir5BqS90QhtofsHy7IbzAkMhPpQ/3p2+ZrfTGylzUHLwR/hr9aiP5PizMJQ2JSQU3k8YozVGENnmpnydLAoGBAP6YskbZU6+TPXlconbg2G+D6KSYScu8h1d6mYHjcbCOc5ILVa1DJGr/ufYl2dqPTA63Mj9PJ8Dla4WI9iXwh0cbTI/N+XD27y54sWonuWymX/9i2tlhmnLeLqGq7zQ+eCQMMnhH2rbN/+hEYMwbsTAdu4txbPDMGVoL9K09PXHxAoGAGBuASrZJvKqYwMTHVU4tVXMVYqiaUsSVcNQpAQvOUQJc9HTjpr/wolN2S31hFu1Scs6hPIHya99Dn87h+bG3NMLqnRA9rX60bsNxh41vU4Y54kQRRosUiJKoQZDWELzJIEsI34E6mtiXG5LB1THQXwx9Vw0rLehjlQ+4PdF/O38CgYBjHbs6Dd2gmufx2Xh+Y2afc3EcsxT3tjvSeK5OfOeD3tFrZ/JA88S3yzrwcyfvCJ6JlBSBxSUq2aYUZI+/kXZ43k3eJkgYDGptYxtewnxTqinxWODuhCsG0SzCT7O0WSWYkw8K+J5TULtyBzzP+W/v1YNv9AZ/cFXmUoU89Hx5YQKBgBPx7Dm8s8M/8EQoV0NQwgk0I2W7WCnaNxNaNnIg1MtEsBkI+UkxnAGPUwEDtv5cRmciBO6SdsvUrZh+t41Ui/MLTMJOsQO53HAbng4tjxcAmDM/R/iYyI6gCCYhxUudPTaKDZchV41TrhGaqXliV6CgCRVm2WsKFgJdFNW7QVq3 + types: + - tree + - file + - peerId: 12D3KooWCYAzw5jFx3VNkJ8jn6VFq4WcayT6sZzdBx5fJFeCjXbV address: 127.0.0.1:4432 - signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== + signingKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + encryptionKey: MIIEpAIBAAKCAQEAs/jLbBcMpkjqZ8R7ySsE9FkUdVZsJJk4BWI4OHbRg5+RMt74AeoKK+NW81zxw5tzLXvW9AZVccO742xB5mRfyrvZ22YrPedTvQymmyY5RCh9qduk0OOfItlNVyG7zRBgK90TAmkwbg4B1jCFIt3cuttK7A6gUKqy9deNhYZd67a7byJIgGmKcqK4ETbeLw8vJv08Htagn3/7CRjwAQcuLNzWw7G4SiTyIOcLpX14oQl3/v1/gYleFVyqebvo4xftQ/pCzDZoD6/t/HK70zzD+TsCmWK/o6iO42hsARIkuuuufASW9mIGcjKj8v+mftLEqqkSSEwtZTuLATJRG2bwiQIDAQABAoIBAQCC+GKpVZjKBjQ3scBXpGvlmlIOFgd7Ftmy6Uh6ptVP0Tasa6DWW8htKfNkBVaXgC/wgLfsPBPAR64bEfRfQtqHQe+H/7EmSosg/+za6ZUxKbpRe1tU/OEZTkQ/TXhLAkjKgwbLcVtiK+VgR00ME6MHhIDgisBWE/NKf0QpUKBW4Rp/0l3bUYO+b7aAIBT0Q/Noc+kaXbHygYuzTMYCvItGDe0WtvrNE/IQEnjC51i02rpa5GI29T4OVvumKbLjFMlT0EttkTjZNVEicP8RHqSKlE7+lMPT1eH3CEVepV7QKCzgPN9pBudLmzmb7HhSZvwMzzkTTt1WczWshBrKZKHRAoGBAMynv1toSLzznwQzffhwLQzvzxnjhdxNKKbJ7cVG4CNVKRVh9iPVBv+XWgBYInnpC/ByX5HDKleRvo54wXzYoMlxtqz8ZCOFxcWrocehbLAIxtGDlSAOGAgSVMrJDJr28Hc7n0zesIyQzymoWfN7yDxcKLB34hC0qUQVuaY7PjTNAoGBAOEfuQkzdrIcT7hEuX+Jv9SmkBnxSocpUZyF7vCm03Dg8FhGK16WWXwa5ii0R6LL4A31J1A/ydpFTd+kxqaQ0dyrc9QWkwzuyy3JYO2R/J7ejFO5KfuKMojXPMwum69y95vL4ZGfYXmF/vYv7TYaBhoI0oeJA5+w9dX20z1jgkqtAoGBAJRqJky8sNtOdYhPa1BK0XDrTC6DIKVl01A5alRBlPQqoxOdqinMKDoc4akUQVRVnFHwL7x+Y2uEB0Q88FyAoQHVlFuY4WodbhJu6HDkcPSsOLriCLhpYCYiXRl+ecS7xiFBvMG7UR9vOL0GGM2Je+nCD8QB/JCO4527f5m8pt0VAoGAd2Vht5WJ0DDfvvUEBLZD/T5RktC8HC83z3HhJdT0sxs5nTep7MKEtyN1CgWDML48GGr67L7ICXFUOdakXNbV1tk/1y4Z03QaYjA5rgYNGx0hA45iy7uhzZ2J6yiU/VpWJFTfT2JeShtc+6izgEwRDGG9dpCeUWWDHHWJ1zcddQkCgYB//JrVbMtkB+L5OV0UfAFlhGaVoThfCL5QHAwmXq+gsX7dxCu5NGJDWJ6fQ+e+0zQms6nB/BvLXcKWo0rEZJsyiUpWN8X06nsyHN1Nxk7PiPlL12dV9/RGD98kNmFQorYhO/lOWImqy7ZpuNNSc69l1B9Q/G/FLU8itzSp2irSEA== + types: + - tree + - file space: gcTTL: 60 syncPeriod: 11 diff --git a/etc/configs/node3.yml b/etc/configs/node3.yml index 63d8dc79..7ef48e56 100755 --- a/etc/configs/node3.yml +++ b/etc/configs/node3.yml @@ -5,27 +5,36 @@ grpcServer: - 127.0.0.1:4432 tls: false account: - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK - peerKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== + peerId: 12D3KooWCYAzw5jFx3VNkJ8jn6VFq4WcayT6sZzdBx5fJFeCjXbV + peerKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + signingKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + encryptionKey: MIIEpAIBAAKCAQEAs/jLbBcMpkjqZ8R7ySsE9FkUdVZsJJk4BWI4OHbRg5+RMt74AeoKK+NW81zxw5tzLXvW9AZVccO742xB5mRfyrvZ22YrPedTvQymmyY5RCh9qduk0OOfItlNVyG7zRBgK90TAmkwbg4B1jCFIt3cuttK7A6gUKqy9deNhYZd67a7byJIgGmKcqK4ETbeLw8vJv08Htagn3/7CRjwAQcuLNzWw7G4SiTyIOcLpX14oQl3/v1/gYleFVyqebvo4xftQ/pCzDZoD6/t/HK70zzD+TsCmWK/o6iO42hsARIkuuuufASW9mIGcjKj8v+mftLEqqkSSEwtZTuLATJRG2bwiQIDAQABAoIBAQCC+GKpVZjKBjQ3scBXpGvlmlIOFgd7Ftmy6Uh6ptVP0Tasa6DWW8htKfNkBVaXgC/wgLfsPBPAR64bEfRfQtqHQe+H/7EmSosg/+za6ZUxKbpRe1tU/OEZTkQ/TXhLAkjKgwbLcVtiK+VgR00ME6MHhIDgisBWE/NKf0QpUKBW4Rp/0l3bUYO+b7aAIBT0Q/Noc+kaXbHygYuzTMYCvItGDe0WtvrNE/IQEnjC51i02rpa5GI29T4OVvumKbLjFMlT0EttkTjZNVEicP8RHqSKlE7+lMPT1eH3CEVepV7QKCzgPN9pBudLmzmb7HhSZvwMzzkTTt1WczWshBrKZKHRAoGBAMynv1toSLzznwQzffhwLQzvzxnjhdxNKKbJ7cVG4CNVKRVh9iPVBv+XWgBYInnpC/ByX5HDKleRvo54wXzYoMlxtqz8ZCOFxcWrocehbLAIxtGDlSAOGAgSVMrJDJr28Hc7n0zesIyQzymoWfN7yDxcKLB34hC0qUQVuaY7PjTNAoGBAOEfuQkzdrIcT7hEuX+Jv9SmkBnxSocpUZyF7vCm03Dg8FhGK16WWXwa5ii0R6LL4A31J1A/ydpFTd+kxqaQ0dyrc9QWkwzuyy3JYO2R/J7ejFO5KfuKMojXPMwum69y95vL4ZGfYXmF/vYv7TYaBhoI0oeJA5+w9dX20z1jgkqtAoGBAJRqJky8sNtOdYhPa1BK0XDrTC6DIKVl01A5alRBlPQqoxOdqinMKDoc4akUQVRVnFHwL7x+Y2uEB0Q88FyAoQHVlFuY4WodbhJu6HDkcPSsOLriCLhpYCYiXRl+ecS7xiFBvMG7UR9vOL0GGM2Je+nCD8QB/JCO4527f5m8pt0VAoGAd2Vht5WJ0DDfvvUEBLZD/T5RktC8HC83z3HhJdT0sxs5nTep7MKEtyN1CgWDML48GGr67L7ICXFUOdakXNbV1tk/1y4Z03QaYjA5rgYNGx0hA45iy7uhzZ2J6yiU/VpWJFTfT2JeShtc+6izgEwRDGG9dpCeUWWDHHWJ1zcddQkCgYB//JrVbMtkB+L5OV0UfAFlhGaVoThfCL5QHAwmXq+gsX7dxCu5NGJDWJ6fQ+e+0zQms6nB/BvLXcKWo0rEZJsyiUpWN8X06nsyHN1Nxk7PiPlL12dV9/RGD98kNmFQorYhO/lOWImqy7ZpuNNSc69l1B9Q/G/FLU8itzSp2irSEA== apiServer: listenAddrs: - 127.0.0.1:8082 tls: false nodes: - - peerId: 12D3KooWCi7waUGMExFaEMgtKmTaanYaPGNhWmEx2nf7jFEXgQab + - peerId: 12D3KooWS7Z835JwmJ5pGHJxpEsJ3vab5M4RjJsWHXmDD5895DT9 address: 127.0.0.1:4430 - signingKey: QQwIKP+YwFY9WzeluVGFwlLj3EJ36RNtGH7QY4rJsAgq+X1I47HaHoFUg2UNZIMtq8mggHYZA4a1B/xntR1RcA== - encryptionKey: MIIEpQIBAAKCAQEAxn9H+w/uFvOd8rW5KCpCvisG6JmDQa1pp1gPdWhdTpqj3yI/3pYK5kgnZhpUF83bQ6zKsNSVcxRqRvW8ZBGA179fHwTwe/KkMuAhgoOCMNG0+EKmRYQJdul2MFvgOniVJxBNaywoCWA0HI24sk4Dp7pj2Dn9yhcj49J+j12STlY2/+oAmhA8a7nxZ2XOMZyZIR9jQ+9MgQdTEa65LSTMTwQ7/A0g3yY+t8+BxhYT5hEdFKIgAV3iapbpP8kT/EvVHZYFz0RUBa2NC1xJAjfFCliGBqD9k7kUNOmP1al4EXheueZDtg1WvwY3PRRcDuSvxLCh1TAuHMMOd7XbR9CrvQIDAQABAoIBAQCiui/pe8rFWBzRn/bWHacvvZhhUZCQZDjsbr3lk5SC3zWetLZFpR30YYyjIMx141Zw6ZQVWYHXoRHrcINsSgklVgcGKAd6pZXE+4edNnCh0xmYOROUg8U6jfRNetSdOsOUDcJaLQ35ebve+LREwL4wYBaAajJL3aKXn7YPlDdgLc02OeQ7t3hIGX/nxYQy2X6+GGsNZvZvmiEoO5cCKPo3lvHIA8nnjB/0J9Cd8ffqiTNrw0NO/ErHxPxTu4II+3VtJ3xWZKlVAOI7Q2uccexdqkJjFcJHmqRWLf8zQzxZxo1TxgDZmZcQHG4sQt/XBL6A2xoisi0kwo5yz4f5WflBAoGBAPKtjMdC92cZLtHlBYvqrQqxJdCpQyidVEa60o+IH2q7VDepLW9QAx0gIwZIAKk/kcTHCtNu1pxVaX7YhVmdtRj8cr1j7g+CWtYaAeMrlpDhUghBEindtVV0gOEkIMbn+Fpzp6/km8LCjqzD2SlVex4aJV8qCRi5WpK3W0Z9RHTtAoGBANFk13fgLry6es7roQvig4Bkg8Qtpy5HYvAyTPk/2q6FfNOZSSYw5y65FzJUZyTEWTn8EjBA+bngmAc6xEA4gr1diYduEm6bab3unXCGzBVWqih+cTAh9lPgmAAHJD3i89SFDE9s+Gox/1n7vVz/k5P5ac+1XyqWXCHI7j1S44gRAoGBANMIZtbU/k4SkSuHzIX64tXcbPUCbFuCTUpgpkCY8DEhjEAHB3K4Eq0eSDbrIGAN3tZO/LQWu9whTmc3JOdkhJqg1aqqntev1QxAe4mwWvPMbUiuRXxQx6LzeCvQ/gvap5cI4jbMR0NbazUD7vHJ2xG3TO5voI92iDPz7RTkVEaVAoGACHkoLvWnboOtTIpEbhKwd5WZr2qZhUnmOwoOC1gGJWHJd1aQmzcHY+Chi6vWsKoxYiNNKR63/EmWXVSHdIHU6IzMb+qIXGl1kfYB8PfDcmmbYSAcvHHjYemIvReM4+Q3MbZglSY3tzRmvOFu/EBrXGWPXpRcUYDcIZHb8idUhcECgYEArvEvxIFHIIX3bhMgXhMvM9TJ5/t/e2YHm2Qz4COeU6Y19CklAjvZ6CpZ9lGUWVbGVflI+ivayAT540HCT1kwmK8WDYrggb64Ksir0TZsv7aKjp5pfZDc9IakisBEsNkjSkOF7xbUGQe5CSiK5khFQx5X8jZHqsczlBntJuquQgw= - - peerId: 12D3KooWG2nD7XFggVFw48xk8JyHwn8iCZ9W73gmzJTkgfVjAxpb + signingKey: w+63sD3k2rBwrtKTcV02B8SdKYrI7rzLpXHtNYwZU7ryIj/g7tmvJFXN6TZjTWX4al5UAkRefJQfDXfXFCCPHA== + encryptionKey: MIIEpAIBAAKCAQEAtw1tn95/mQ2cpYgOKxaRwgZITgsrmZQIyH+bYFaUYUWoUp/AxAdPrh5cLehMUNXH8ZoyHkhV3bIMWpHoUyG+QJzz7etktAVz6MtEl3Wo/jAgAEDvXXgFMku2hnh6coWyhzyXR190ZHgGazJ0K1OtugsIFXwFro93j0+8iPuifsWkH6RaAhvZJUWaQGGmNQKSZnbdFokGmo5FM0z0eOI/sZGhCtxuWbpZz0hhvW3sXEWEyzq8WwTFLGoppIETnhjzcSJDO+pq0b934WuMTGazUH0sPc/AnoZJp00237Ar8g+h10CVxQ5SsTba7VYDCr7/zeHS+vvUYNgB4NO0lylaTQIDAQABAoIBADhUKoLCjhNEDAsoFewOcuX41vElINKOqjFAi0iW++v+6nAadtAby9oxv33k+O77Ch7/qyKEcd/ZtVF9irdiL9BkO+/fuspmzyc4va+55jnqBz7svHvPvhGfGNjCZDOvjqNs8sRkzEVKZfdAvFzE0DXqxR8PXhQ8U7dG+yZQAM3vcE/ib/14OxXgANrPwOKO04Lhff2xoXuuqrx9XAG+PbLlxi0gYGK55E1whgBldPC3nKA38hh1QDt+uh8AVdZ/Y0ehW7t2CG8zPNNTO7TjrZHwMeFgvVODN+0X1W9e7nIuDGVJ74FzvC5PZwBURJ/tjHSUCR0Pf9t87yaQqEQT/sECgYEA44Ve23Fnn97kNqpYzJJAq3+1Cg72cEg8gG9RA+AtOcMUO9EspWxiu/MPXGbaP/R/5L9UTikv7oN7an4gsO4FN9cFH/j4SY/fI6twi55DwpOFbgjLf6lT0tzEnHymPXjGCCHdc3BRIsjd3ehmQcwBZ/pPl8CggDxj24/xlqt7kbECgYEAzfceXEEpGmOZ1Hno3Xck/ZBcl12KjLVOK8ACe890BjWIPDMXaYfGJJpX0terR7BcqrLrq0komPUinoeelpIAitTXQ+zr6ULYXpZgxSTOz7aV7OAsudowp+m5z594ZagIgs3lKVILeclAqaYB4eq9/pHzHazS0YIwWwce753CfV0CgYEAzJ89YYTLmoe+nb90n3+Fc/gmHQa58t+0shnrNd4fLozZHLcSPTCOV9TQ4tyJuu0tPNAqhSUbu5o6m9sVkapvvPm/3TJwMtCW8aCVVqwe6tb8MKruQkFKZyEwHkEoza5aBCRY4yKHhg47JAGIPfK47Qe9H5EZiFtHv8bkkwpk1vECgYBuFJy6a+0e+IrYIAwQicRQbV6/W7RYPfK4uVfaemclhmj428mwkmuZVpCH1NLrbtwoM5Z3ppM3JRVKq2tcSE5X5SfkWvU/Z4WjEDZKR8DtDUYWIz5kWrRUmjvANxgvJN7folHPgtU1UxXnVh19dGv1amYIvzyx0yYrEKQ9JxEy1QKBgQC8zAG011S0HopmpBFizKanlmKPM9BHKk9GCl8dEQltxr+KA6734YwMy63fxaRBje0WUJJPMwOoxNUWfvJ6cRTi4BpEbOhy3ZfPCpVoVX71QPMuOqAvUbF/AQrv7tLCSs1WSA98k8DVeIITHAI/ITzCxuRxPyzU7agi0D9EBLoaPQ== + types: + - tree + - file + - peerId: 12D3KooWKkWv85fkYiCnvKVsVoCu9VwFupNejVBA2bFGBjic6gHP address: 127.0.0.1:4431 - signingKey: Hdpa1ee8nBVeIxYVcWjTSaVAfqvkBcqfhWRjlKi9fQ9cVEY6sy+MxMOa4CRQgM3eJCJhaLw2Hvux4rqMUJVtDA== - encryptionKey: MIIEowIBAAKCAQEAqJI1jTWuzef1hEdbE6Xth1GFXkJbLvn1LWmtyErrrQYtJd6zOsdncf522tcpxRs6LWANNe5HHzuP4VYiYnGe0CuBlMbnWLvH/vEh9Em0Bt7P3MrQTOFt/ESPN5AWaE3jeYc4M9WvZvLVpxCqJYE0xu8AkXi/5SqO3dfXKMyQ/kJoAn0FkAe44l3A7B/otqiYKp5oB+4/Fh1R0sFo3djSCS08KW9mbCQffQa0BA56f9cKF+/tVFqoW9YximwsVvecM8lr92NN3/kvO3a4xLnTZJNYBnaULsDbNS+Mdf0V+mkmcigaFumDHI6Z+Ca/y/tGGlTfExC4mRLOXgAnNIcXAwIDAQABAoIBAGf9UjXbcQuq1aWVk1TKnn5Exv5/9tpC7oHmWINf3IVvcviSqoRPMLx82vtjkmv6wOfvAhdL9+oHh1neFfYe23bV7+lEzsDJjrXyMR0PPpSibR5qqxdSVdQywxrmszwDGJoG1Z/8aWkb0rtuJ1hdnZ4/IF2dXNvVZi7qkNulXqjKc5pU16S2QPIjZ5YDatsl6Z7TZ48yyTxlmJKh50qmLO7S4+0jbVyDFyX8aAy8R/yDuZpZ1+aUHJkUqfvUpzngS2R61M/iAeGkNDP9mg59CwhJsOLsWSw5rA2MTwfmRIZjczG4WCfkhBhzQWztN8ded09xLySY/gmMYsKwpX9zwikCgYEAwlzJ0kC3ATNOQPhIwaVDY4eI8SRYTZIgp+aek/z/Jek+kf6/VY6eVWimEEjyMVGLTzjyrUOQyhxkJ2QqUNVJYongj/3yF8WE2+d+G50QA3J0K0b8FQFLGlLndgJ++AZmNxxMyD/XZ5aSqWc58SzA3UgbjTdDJwv6KYIc+r6om10CgYEA3geQ4XOPkm3/AagGvTRbM88nr4tyeyEzfLdXqSBdUBM+cB0t3l+mh0aMqPd1o8TcrvJ+33Kp3vmM2wq6Rj/jChx0pqQZeBX+/i3fSQUYiCnDeo2CsJ1pix3ju6xKIlssi7Lqf50AUH3TgPfeOEgl0c0skc7Iiw6uBbbN2jMbtd8CgYB8UNkN0DK9Y9GDoMr4gPoPaRtgEb0hMHwOqGV5hnK0DvHkc6px0NzZCCxfcijm/p86NtSRmgu8Gli9EUY3mZRsoH+v2d/E8KM//Fse0mDxs302SRrnXIJq/efqBUKs5XrvePxrgNoH+bko/UuERPm/D2X/9v7OtMx3TC+4+cXiSQKBgQDAbuxKCp93+S/YXqogmF0nhTbPNdwuDbOTN1CZu/xEJ7mo8BFON7acbjABTiC+pSPj2TbPMZE7OSy0uBKESmDb5ZfQyk9svhu4b0ekAO+nLBNJh5aqvnO4aFp10TibmEv+dD48BnY8TSHgGHSYcSeeM+aaJQ+5PirjtvGpWTx+HwKBgD+mqVa627FOJHKJ022L6eH61S466rvxiQqQdOKaLkRLNTsf0frcsZIEoPGXQmAsx79n5ezK0ndPsY2oWDu87teHaElqTp0oMzayuP1ognyFp5CjlUmUgLZ4ijw5ZoAinGVpBxYvHZ/KxRMxMhMYnXPYrx95nNT3GDMGV/4xG2cH - - peerId: 12D3KooWLNu2jz93Bmw5AFjoWUWVqewjMDX9X6LDnD3B5vcDPMtK + signingKey: 460RGvA77dWz7qFYmPqpMzc6Nw5eAXOXZP0fQvcyXj2TmG/z0E5jnTMfpFD7GHIwuFA9+XvqnjuKFteeHaDxSg== + encryptionKey: MIIEowIBAAKCAQEAyL/fnKl6ztxVtXkxdl48HEawDKmJmBxs6rGl+kNx+cb6Jio/GyKz4d1bCW5Ni5glyVg11RqA09wPaJxKMlp/svz+46a9MtZmC4/pFOiSaMkmMOs61apTruJNNDK/9O0j+irCnJFRGactt/AlCKU+9WjwsTtJtmqEkt0uuD0Tn709Itx86nzXhCqNtEKPvo83FaZ60RFpe72KNLcyP7DgR8m7Csa4JWfK1Ig0539rFxM5Co/GGNna3mqShDbIN0Aw8k7yCuDaCx/akd0Yd2BEjBApHtlonu3BYfCAF3bAus9sejogeA+mu52akN7H0YnC1BeftFAzlZ5yJV1gKwsYmwIDAQABAoIBAQCzzPaw0DMIV9wEP9oHVHuuL7m6fZaZQMxkoFwyfHn25zphOHFxEnHemG3TUpHtt4YQggslJSnBl1XNsj3aP6gkXejFaTAH+nNHY8u1SGDprU+hfO4jNPzipBnV6KZ47nTMucO4i4cB3PRbzKC+z5JGJ4l8k8d/tIOtLqGLrliHNlRZ7LRfovCP+ekPrPpxtJBp48GUQFRexXqsytiEYlAjXPUVHh+8b1lmDJXzxzTf2Nhx1lXykrrRYlOOYSz0fufFzsLcJSzPbfnomgjaNGKPCSWfREFp3Ch1P6+G9hClMORL5Vc58I5j3SlacsoWEw3ywyE0Visfn7ojIuqboLHBAoGBAMnbL0TeKaKIkRGdKXFhUzpUrH1mPg7QOLH65GbbtO5DHTwDRjX0I8pc+XT7u/qVhG+h72wBZ3J/egAlvLUOtwuuNhjir5BqS90QhtofsHy7IbzAkMhPpQ/3p2+ZrfTGylzUHLwR/hr9aiP5PizMJQ2JSQU3k8YozVGENnmpnydLAoGBAP6YskbZU6+TPXlconbg2G+D6KSYScu8h1d6mYHjcbCOc5ILVa1DJGr/ufYl2dqPTA63Mj9PJ8Dla4WI9iXwh0cbTI/N+XD27y54sWonuWymX/9i2tlhmnLeLqGq7zQ+eCQMMnhH2rbN/+hEYMwbsTAdu4txbPDMGVoL9K09PXHxAoGAGBuASrZJvKqYwMTHVU4tVXMVYqiaUsSVcNQpAQvOUQJc9HTjpr/wolN2S31hFu1Scs6hPIHya99Dn87h+bG3NMLqnRA9rX60bsNxh41vU4Y54kQRRosUiJKoQZDWELzJIEsI34E6mtiXG5LB1THQXwx9Vw0rLehjlQ+4PdF/O38CgYBjHbs6Dd2gmufx2Xh+Y2afc3EcsxT3tjvSeK5OfOeD3tFrZ/JA88S3yzrwcyfvCJ6JlBSBxSUq2aYUZI+/kXZ43k3eJkgYDGptYxtewnxTqinxWODuhCsG0SzCT7O0WSWYkw8K+J5TULtyBzzP+W/v1YNv9AZ/cFXmUoU89Hx5YQKBgBPx7Dm8s8M/8EQoV0NQwgk0I2W7WCnaNxNaNnIg1MtEsBkI+UkxnAGPUwEDtv5cRmciBO6SdsvUrZh+t41Ui/MLTMJOsQO53HAbng4tjxcAmDM/R/iYyI6gCCYhxUudPTaKDZchV41TrhGaqXliV6CgCRVm2WsKFgJdFNW7QVq3 + types: + - tree + - file + - peerId: 12D3KooWCYAzw5jFx3VNkJ8jn6VFq4WcayT6sZzdBx5fJFeCjXbV address: 127.0.0.1:4432 - signingKey: eFgkHOqqWUE2i3HChsYuER37d8Z5Izd1ENfLmpMsgSSc6lnYW+35sm7b5J7sK1G+xK0OPhtz8uxYkT0f5gJuwA== - encryptionKey: MIIEpAIBAAKCAQEAzc5cRGNf5G25G5Lh1hKEhV3lgxxB5RL3R0bjLhtS6W4/xhMvSaZR2girvzLBK1ydXk95Oc0EUNfCE/QKddUy16ycC4DHaObMjf96cVHhiIfKhLTO5gg2mqisQ39+oTtn85/T1imYMlkHGIt1MvHqXoPQa8guDXB/DCDz+UeCzPBGUiS4ZORJHrdd9QP/edyowUsfvwIayJhd4BUKOhgWvIAHohOTls1Xa16fkpojDy3b1L5pFvQdMw0DFY3m2LtIYVmlw1YyE/vqbhR/DMAkGGGD2nHfSQ/zApGAeYgqNSyAAMwjAaXtXnW/SYPr0IHRAnm4Ojk0qKcUfaTFKSSakQIDAQABAoIBAAksPm6J41dCELMK6+fnsWJkWftrAgDcxIq3vR5r91kSIeOJLV1h/Vnzcvw1neh520W90xBhc+TKiQrsoJ653uc/+UCF/91MFCfsECAG3z9/leYuTN5x1UU1aWAkyZcUF8EDCaUM+4ya7TcJ2DJqF+EYjOyQ4oSU1ATNXzJoHotVwcZ79uPNRTMMTUQ/sZjE3OJGkoPzOoacjmAsg3Xg2M8uCC3HAqf5kO146CX4/x9z8EnKr8XHWm8oRT0mWLR3N2WFIJ6sDuyL7MPy4Sm2xSbqS5pJ3kC/rwuLcR4KlL+HyVvpTPHQlysiwWfKz1YycKNaWfeAVQFQDKfe9fpTK4UCgYEA5rXvM0eGTljFUYg5Eb47LNl/YKcQoPGL9zIrTuyYl0skr364iIXFQHG3cv3G461jP6/eBBs0sMZe47SpNv9zP+hYthaReVLzPqqxrCQF4rJo2oCWb774BnkxWQjbiPLSJi2cc+5ZqMQI8u5XxdqO9oJ4pCCxs5nCasAcLGedrrcCgYEA5F2Rgq5mN75dSzco5MDC594HGQ4mXpj9xCDocvbhrvEm0NY2/BTH23ak11EnSYJNCvI43NX2nmxEkVzl7TbNLBP+u6IxK1XzFXg4ki2IIu1ACzHwbBE95APxZ7n4BRKhFkew96HX4cSWSvMfmrK/Vb3hPJpV8UUjaru6CiN/OPcCgYB4B09bLmsBd82wjV6jjITc4IsUjdZo5UIcaU1+0jjQ/ZcodpUq8e2diYwXl1BSQ3LPP4ASQtU24v2bGfKvWldreEYu9a7Zn/5NLCEjndoyBv/mLeAWYxRGyeaSm7kblrkeg7xR1D9xPgwp1zZzCTI3rcl2GkxZVDWBtFD0CTRQIQKBgQDe2lzMrYp87Z23b+3NRjst8OL2VXOmLyC9y+trfXeBtD3P4Kwp1dGvXpnAsaZoOusaOoS5JWgU88z6GjEbC7avRBf7XW0kQC0HD5oNNLe8ddBg3Gwl2bGPGTX0pmvd728aAf41uk+lN6X/IEEAQ10qvDDYZjhmSbUlTGthx4A4wwKBgQCQYGnHr5fvqlmLga+xkPXMFnJE1D+Ya/fkA/HTGZfLoMiqFv2q8uqque0xb5Kaim7eyQ2SpE/yolaeS8L7o6zMKT6du5QONhKdQN9ccdW/3yUQXzWcjYjAyB+zdYn9vKlMa6VnuXjR5gA8RrnHGJMZAeNLOWzH1B0eJSi/Q8w9Rg== + signingKey: 94Y4rDt00bq4xkrPJ7E9OPULzOBd5mzn0uMTKP5b4JUobSOKGyrnwWxO9UpY7OSzA2Y/5dgIMSFSCvv4p1iwaA== + encryptionKey: MIIEpAIBAAKCAQEAs/jLbBcMpkjqZ8R7ySsE9FkUdVZsJJk4BWI4OHbRg5+RMt74AeoKK+NW81zxw5tzLXvW9AZVccO742xB5mRfyrvZ22YrPedTvQymmyY5RCh9qduk0OOfItlNVyG7zRBgK90TAmkwbg4B1jCFIt3cuttK7A6gUKqy9deNhYZd67a7byJIgGmKcqK4ETbeLw8vJv08Htagn3/7CRjwAQcuLNzWw7G4SiTyIOcLpX14oQl3/v1/gYleFVyqebvo4xftQ/pCzDZoD6/t/HK70zzD+TsCmWK/o6iO42hsARIkuuuufASW9mIGcjKj8v+mftLEqqkSSEwtZTuLATJRG2bwiQIDAQABAoIBAQCC+GKpVZjKBjQ3scBXpGvlmlIOFgd7Ftmy6Uh6ptVP0Tasa6DWW8htKfNkBVaXgC/wgLfsPBPAR64bEfRfQtqHQe+H/7EmSosg/+za6ZUxKbpRe1tU/OEZTkQ/TXhLAkjKgwbLcVtiK+VgR00ME6MHhIDgisBWE/NKf0QpUKBW4Rp/0l3bUYO+b7aAIBT0Q/Noc+kaXbHygYuzTMYCvItGDe0WtvrNE/IQEnjC51i02rpa5GI29T4OVvumKbLjFMlT0EttkTjZNVEicP8RHqSKlE7+lMPT1eH3CEVepV7QKCzgPN9pBudLmzmb7HhSZvwMzzkTTt1WczWshBrKZKHRAoGBAMynv1toSLzznwQzffhwLQzvzxnjhdxNKKbJ7cVG4CNVKRVh9iPVBv+XWgBYInnpC/ByX5HDKleRvo54wXzYoMlxtqz8ZCOFxcWrocehbLAIxtGDlSAOGAgSVMrJDJr28Hc7n0zesIyQzymoWfN7yDxcKLB34hC0qUQVuaY7PjTNAoGBAOEfuQkzdrIcT7hEuX+Jv9SmkBnxSocpUZyF7vCm03Dg8FhGK16WWXwa5ii0R6LL4A31J1A/ydpFTd+kxqaQ0dyrc9QWkwzuyy3JYO2R/J7ejFO5KfuKMojXPMwum69y95vL4ZGfYXmF/vYv7TYaBhoI0oeJA5+w9dX20z1jgkqtAoGBAJRqJky8sNtOdYhPa1BK0XDrTC6DIKVl01A5alRBlPQqoxOdqinMKDoc4akUQVRVnFHwL7x+Y2uEB0Q88FyAoQHVlFuY4WodbhJu6HDkcPSsOLriCLhpYCYiXRl+ecS7xiFBvMG7UR9vOL0GGM2Je+nCD8QB/JCO4527f5m8pt0VAoGAd2Vht5WJ0DDfvvUEBLZD/T5RktC8HC83z3HhJdT0sxs5nTep7MKEtyN1CgWDML48GGr67L7ICXFUOdakXNbV1tk/1y4Z03QaYjA5rgYNGx0hA45iy7uhzZ2J6yiU/VpWJFTfT2JeShtc+6izgEwRDGG9dpCeUWWDHHWJ1zcddQkCgYB//JrVbMtkB+L5OV0UfAFlhGaVoThfCL5QHAwmXq+gsX7dxCu5NGJDWJ6fQ+e+0zQms6nB/BvLXcKWo0rEZJsyiUpWN8X06nsyHN1Nxk7PiPlL12dV9/RGD98kNmFQorYhO/lOWImqy7ZpuNNSc69l1B9Q/G/FLU8itzSp2irSEA== + types: + - tree + - file space: gcTTL: 60 syncPeriod: 11 diff --git a/filenode/go.mod b/filenode/go.mod index 3fe16ed8..c12ce714 100644 --- a/filenode/go.mod +++ b/filenode/go.mod @@ -16,6 +16,7 @@ require ( require ( github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.2 // indirect diff --git a/filenode/go.sum b/filenode/go.sum index a7f0ad57..878c8d00 100644 --- a/filenode/go.sum +++ b/filenode/go.sum @@ -50,6 +50,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c h1:+bD75daSbsxyTzkKpNplC4xls+7/tGwty+zruzOnOmk= +github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= diff --git a/node/filepogreb/filepogreb.go b/node/filepogreb/filepogreb.go index 56996985..f5f6b09e 100644 --- a/node/filepogreb/filepogreb.go +++ b/node/filepogreb/filepogreb.go @@ -4,14 +4,18 @@ import ( "context" "github.com/akrylysov/pogreb" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app" + "github.com/anytypeio/go-anytype-infrastructure-experiments/common/app/logger" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/commonfile/fileblockstore" "github.com/anytypeio/go-anytype-infrastructure-experiments/common/config" blocks "github.com/ipfs/go-block-format" "github.com/ipfs/go-cid" + "go.uber.org/zap" ) const CName = fileblockstore.CName +var log = logger.NewNamed(CName) + func New() Store { return &store{} } @@ -75,6 +79,7 @@ func (s *store) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Block { func (s *store) Add(ctx context.Context, bs []blocks.Block) error { for _, b := range bs { + log.Debug("put cid", zap.String("cid", b.Cid().String())) if err := s.db.Put(b.Cid().Bytes(), b.RawData()); err != nil { return err } diff --git a/playground/init.sh b/playground/init.sh index 8937deec..677dbe38 100755 --- a/playground/init.sh +++ b/playground/init.sh @@ -1,5 +1,4 @@ #!/bin/bash -PATH=/bin:/sbin:/usr/bin:/usr/sbin:/Users/mikhailrakhmanov/go/go1.19.2/bin export GOPRIVATE=github.com/anytypeio diff --git a/util/cmd/debug/commands/client/service.go b/util/cmd/debug/commands/client/service.go index e5817b0e..4eb321e7 100644 --- a/util/cmd/debug/commands/client/service.go +++ b/util/cmd/debug/commands/client/service.go @@ -24,6 +24,9 @@ type Service interface { AllTrees(ctx context.Context, ip string, request *apiproto.AllTreesRequest) (resp *apiproto.AllTreesResponse, err error) AllSpaces(ctx context.Context, ip string, request *apiproto.AllSpacesRequest) (resp *apiproto.AllSpacesResponse, err error) LoadSpace(ctx context.Context, ip string, request *apiproto.LoadSpaceRequest) (res *apiproto.LoadSpaceResponse, err error) + PutFile(ctx context.Context, ip string, request *apiproto.PutFileRequest) (resp *apiproto.PutFileResponse, err error) + GetFile(ctx context.Context, ip string, request *apiproto.GetFileRequest) (resp *apiproto.GetFileResponse, err error) + DeleteFile(ctx context.Context, ip string, request *apiproto.DeleteFileRequest) (resp *apiproto.DeleteFileResponse, err error) } type service struct { @@ -122,3 +125,27 @@ func (s *service) LoadSpace(ctx context.Context, ip string, request *apiproto.Lo } return cl.LoadSpace(ctx, request) } + +func (s *service) PutFile(ctx context.Context, ip string, request *apiproto.PutFileRequest) (resp *apiproto.PutFileResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.PutFile(ctx, request) +} + +func (s *service) GetFile(ctx context.Context, ip string, request *apiproto.GetFileRequest) (resp *apiproto.GetFileResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.GetFile(ctx, request) +} + +func (s *service) DeleteFile(ctx context.Context, ip string, request *apiproto.DeleteFileRequest) (resp *apiproto.DeleteFileResponse, err error) { + cl, err := s.client.GetClient(ctx, ip) + if err != nil { + return + } + return cl.DeleteFile(ctx, request) +} diff --git a/util/cmd/debug/commands/clientcmds.go b/util/cmd/debug/commands/clientcmds.go index 88791ea4..e1315a9a 100644 --- a/util/cmd/debug/commands/clientcmds.go +++ b/util/cmd/debug/commands/clientcmds.go @@ -290,4 +290,58 @@ func (s *service) registerClientCommands() { }, } s.clientCommands = append(s.clientCommands, cmdAllSpaces) + + cmdPutFile := &cobra.Command{ + Use: "put-file", + Short: "put new file by path", + Run: func(cmd *cobra.Command, args []string) { + cli, _ := cmd.Flags().GetString("client") + addr, ok := s.peers[cli] + if !ok { + fmt.Println("no such client") + return + } + path, _ := cmd.Flags().GetString("path") + spaceId, _ := cmd.Flags().GetString("spaceId") + resp, err := s.client.PutFile(context.Background(), addr, &clientproto.PutFileRequest{ + Path: path, + SpaceId: spaceId, + }) + if err != nil { + fmt.Println("error:", err) + return + } + fmt.Println("hash:", resp.Hash) + }, + } + cmdPutFile.Flags().String("path", "", "path to file") + cmdPutFile.Flags().String("spaceId", "", "spaceId") + s.clientCommands = append(s.clientCommands, cmdPutFile) + + cmdGetFile := &cobra.Command{ + Use: "get-file", + Short: "get file by hash and save", + Run: func(cmd *cobra.Command, args []string) { + cli, _ := cmd.Flags().GetString("client") + addr, ok := s.peers[cli] + if !ok { + fmt.Println("no such client") + return + } + hash, _ := cmd.Flags().GetString("hash") + path, _ := cmd.Flags().GetString("path") + resp, err := s.client.GetFile(context.Background(), addr, &clientproto.GetFileRequest{ + Hash: hash, + Path: path, + }) + if err != nil { + fmt.Println("error:", err) + return + } + fmt.Println("path:", resp.Path) + }, + } + cmdGetFile.Flags().String("path", "", "path to file") + cmdGetFile.Flags().String("hash", "", "CID") + s.clientCommands = append(s.clientCommands, cmdGetFile) } diff --git a/util/cmd/nodesgen/gen.go b/util/cmd/nodesgen/gen.go index 9c962b21..ec6184a7 100644 --- a/util/cmd/nodesgen/gen.go +++ b/util/cmd/nodesgen/gen.go @@ -60,6 +60,7 @@ func main() { Address: cfg.GrpcServer.ListenAddrs[0], SigningKey: cfg.Account.SigningKey, EncryptionKey: cfg.Account.EncryptionKey, + Types: []config.NodeType{config.NodeTypeTree, config.NodeTypeFile}, } nodes = append(nodes, node) } diff --git a/util/debug.json b/util/debug.json new file mode 100644 index 00000000..98832ab9 --- /dev/null +++ b/util/debug.json @@ -0,0 +1 @@ +{"level":"debug","ts":"2022-12-15T15:11:29.023+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} From ad8055635d67718513fb41e17b92c28d4794b78c Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Thu, 22 Dec 2022 13:46:22 +0300 Subject: [PATCH 08/10] gitignore debug.json --- .gitignore | 1 + debug.json | 64 ------------------------------------------------------ 2 files changed, 1 insertion(+), 64 deletions(-) delete mode 100644 debug.json diff --git a/.gitignore b/.gitignore index f27a09eb..59e4fbdd 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ # playground/tmp folder for testing different clients playground/tmp playground/debug.json +debug.json # .paw folder for macos paw client .paw diff --git a/debug.json b/debug.json deleted file mode 100644 index ee1cc111..00000000 --- a/debug.json +++ /dev/null @@ -1,64 +0,0 @@ -{"level":"debug","ts":"2022-12-15T15:13:18.511+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:13:31.837+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:13:39.610+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:04.659+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:07.447+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:10.704+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:13.893+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:18.286+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:24.064+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:34.095+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:46.708+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:15:55.627+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:16:12.023+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:18:29.361+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:26:53.897+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"fatal","ts":"2022-12-15T15:27:40.336+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} -{"level":"fatal","ts":"2022-12-15T15:29:16.006+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} -{"level":"fatal","ts":"2022-12-15T15:29:23.018+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} -{"level":"debug","ts":"2022-12-15T15:29:30.862+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:32:12.137+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:32:48.922+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"info","ts":"2022-12-15T15:34:00.976+0300","logger":"debug.drpcclient","caller":"ocache/ocache.go:386","msg":"GC: removed 0; cache size: 1"} -{"level":"info","ts":"2022-12-15T15:35:00.921+0300","logger":"debug.drpcclient","caller":"ocache/ocache.go:386","msg":"GC: removed 0; cache size: 1"} -{"level":"debug","ts":"2022-12-15T15:35:20.899+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:39:29.678+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:39:51.228+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:40:45.462+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"fatal","ts":"2022-12-15T15:43:26.123+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --hash","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} -{"level":"debug","ts":"2022-12-15T15:44:13.688+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:46:59.113+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:49:53.064+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:51:27.476+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:55:07.937+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-15T15:57:54.861+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:01:50.865+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:01:57.057+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"fatal","ts":"2022-12-21T20:02:20.880+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} -{"level":"fatal","ts":"2022-12-21T20:03:06.554+0300","logger":"main","caller":"debug/debug.go:46","msg":"can't start app","error":"can't run service 'debug.commands': unknown flag: --path","stacktrace":"main.main\n\t/home/che/projects/go-anytype-infrastructure-experiments/util/cmd/debug/debug.go:46\nruntime.main\n\t/usr/local/go/src/runtime/proc.go:250"} -{"level":"debug","ts":"2022-12-21T20:03:25.197+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:05:33.936+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:05:39.936+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:06:29.434+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:06:46.064+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:10:43.822+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:12:47.419+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:13:54.671+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:18:50.319+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:19:00.083+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:23:20.406+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:27:26.865+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:38:02.101+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:38:45.284+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:39:02.077+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:52:39.255+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T20:53:53.551+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:01:28.892+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:08:07.054+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:10:22.401+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:17:50.135+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:18:33.961+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:19:26.619+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:20:03.619+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:22:33.831+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} -{"level":"debug","ts":"2022-12-21T21:23:11.575+0300","logger":"app","caller":"app/app.go:178","msg":"all components started"} From ec900d6e9dd1ce7ea8f865c42a574a4a4aaa3403 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Thu, 22 Dec 2022 14:08:15 +0300 Subject: [PATCH 09/10] go mod fixes --- client/go.mod | 19 ++++++++++--------- client/go.sum | 12 ++++++++++++ consensus/go.mod | 25 +++++++++++++------------ consensus/go.sum | 47 ++++++++++++++++++++++++++--------------------- 4 files changed, 61 insertions(+), 42 deletions(-) diff --git a/client/go.mod b/client/go.mod index 44453872..9e3a3ef3 100644 --- a/client/go.mod +++ b/client/go.mod @@ -8,12 +8,13 @@ require ( github.com/anytypeio/go-anytype-infrastructure-experiments/common v0.0.0-00010101000000-000000000000 github.com/dgraph-io/badger/v3 v3.2103.3 github.com/gogo/protobuf v1.3.2 - github.com/stretchr/testify v1.8.0 - go.uber.org/zap v1.23.0 + github.com/stretchr/testify v1.8.1 + go.uber.org/zap v1.24.0 storj.io/drpc v0.0.32 ) require ( + github.com/VividCortex/ewma v1.2.0 // indirect github.com/anytypeio/go-anytype-infrastructure-experiments/consensus v0.0.0-20221217135026-4eba413631b3 // indirect github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -36,7 +37,7 @@ require ( github.com/ipfs/go-cid v0.3.2 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/klauspost/compress v1.15.10 // indirect - github.com/klauspost/cpuid/v2 v2.1.1 // indirect + github.com/klauspost/cpuid/v2 v2.2.2 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-libp2p v0.23.2 // indirect github.com/libp2p/go-openssl v0.1.0 // indirect @@ -46,12 +47,12 @@ require ( github.com/minio/sha256-simd v1.0.0 // indirect github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect github.com/multiformats/go-multiaddr v0.7.0 // indirect github.com/multiformats/go-multibase v0.1.1 // indirect github.com/multiformats/go-multicodec v0.6.0 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect - github.com/multiformats/go-varint v0.0.6 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.13.0 // indirect @@ -64,12 +65,12 @@ require ( github.com/zeebo/errs v1.3.0 // indirect go.opencensus.io v0.23.0 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect + go.uber.org/multierr v1.9.0 // indirect + golang.org/x/crypto v0.4.0 // indirect golang.org/x/exp v0.0.0-20220916125017-b168a2c6b86b // indirect golang.org/x/image v0.0.0-20200119044424-58c23975cae1 // indirect - golang.org/x/net v0.0.0-20220920183852-bf014ff85ad5 // indirect - golang.org/x/sys v0.0.0-20221010170243-090e33056c14 // indirect + golang.org/x/net v0.3.0 // indirect + golang.org/x/sys v0.3.0 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect diff --git a/client/go.sum b/client/go.sum index cf6293a0..8fc01f6e 100644 --- a/client/go.sum +++ b/client/go.sum @@ -35,6 +35,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= 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/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= +github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= 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= @@ -206,6 +208,7 @@ github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02 github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0= github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -243,6 +246,7 @@ github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aG github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc= github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= @@ -253,6 +257,7 @@ github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= 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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nfnt/resize v0.0.0-20160724205520-891127d8d1b5 h1:BvoENQQU+fZ9uukda/RzCAL/191HHwJA5b13R6diVlY= @@ -308,6 +313,7 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM 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/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= @@ -316,6 +322,7 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= 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/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= 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= @@ -347,9 +354,11 @@ go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= 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= @@ -360,6 +369,7 @@ golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= 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= @@ -431,6 +441,7 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220920183852-bf014ff85ad5 h1:KafLifaRFIuSJ5C+7CyFJOF9haxKNC1CEIDk8GX6X0k= golang.org/x/net v0.0.0-20220920183852-bf014ff85ad5/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= 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= @@ -496,6 +507,7 @@ golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20221010170243-090e33056c14 h1:k5II8e6QD8mITdi+okbbmR/cIyEbeXLBhy5Ha4nevyc= golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/consensus/go.mod b/consensus/go.mod index 9889f33e..f17238ee 100644 --- a/consensus/go.mod +++ b/consensus/go.mod @@ -5,18 +5,20 @@ go 1.19 replace github.com/anytypeio/go-anytype-infrastructure-experiments/common => ../common require ( - github.com/cheggaaa/mb/v2 v2.0.1 + github.com/anytypeio/go-anytype-infrastructure-experiments/common v0.0.0-00010101000000-000000000000 + github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c github.com/gogo/protobuf v1.3.2 + github.com/golang/mock v1.6.0 github.com/mr-tron/base58 v1.2.0 - github.com/stretchr/testify v1.8.0 + github.com/stretchr/testify v1.8.1 go.mongodb.org/mongo-driver v1.10.3 - go.uber.org/zap v1.23.0 - gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 + go.uber.org/zap v1.24.0 gopkg.in/yaml.v3 v3.0.1 storj.io/drpc v0.0.32 ) require ( + github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect @@ -27,10 +29,9 @@ require ( github.com/ipfs/go-cid v0.3.2 // indirect github.com/ipfs/go-log/v2 v2.5.1 // indirect github.com/klauspost/compress v1.15.10 // indirect - github.com/klauspost/cpuid/v2 v2.1.1 // indirect + github.com/klauspost/cpuid/v2 v2.2.2 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-libp2p v0.23.2 // indirect - github.com/libp2p/go-libp2p-core v0.20.1 // indirect github.com/libp2p/go-openssl v0.1.0 // indirect github.com/mattn/go-isatty v0.0.16 // indirect github.com/mattn/go-pointer v0.0.1 // indirect @@ -38,12 +39,12 @@ require ( github.com/minio/sha256-simd v1.0.0 // indirect github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect github.com/multiformats/go-base32 v0.1.0 // indirect - github.com/multiformats/go-base36 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect github.com/multiformats/go-multiaddr v0.7.0 // indirect github.com/multiformats/go-multibase v0.1.1 // indirect github.com/multiformats/go-multicodec v0.6.0 // indirect github.com/multiformats/go-multihash v0.2.1 // indirect - github.com/multiformats/go-varint v0.0.6 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.13.0 // indirect @@ -58,11 +59,11 @@ require ( github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect github.com/zeebo/errs v1.3.0 // indirect go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.8.0 // indirect - golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect + go.uber.org/multierr v1.9.0 // indirect + golang.org/x/crypto v0.4.0 // indirect golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect - golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab // indirect - golang.org/x/text v0.3.7 // indirect + golang.org/x/sys v0.3.0 // indirect + golang.org/x/text v0.5.0 // indirect google.golang.org/protobuf v1.28.1 // indirect lukechampine.com/blake3 v1.1.7 // indirect ) diff --git a/consensus/go.sum b/consensus/go.sum index 69f2f44a..b1a4489d 100644 --- a/consensus/go.sum +++ b/consensus/go.sum @@ -40,6 +40,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy 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/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232 h1:kMPPZYmJgbs4AJfodbg2OCXg5cp+9LPAJcLZJqmcghk= +github.com/anytypeio/go-chash v0.0.0-20220629194632-4ad1154fe232/go.mod h1:+PeHBAWp7gUh/yw6uAauKc5ku0w4cFNg6DUddGxoGq0= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -52,8 +54,8 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cheggaaa/mb/v2 v2.0.1 h1:gn0khbEbKlw3i5VOYi0VnHEHayjZKfUDOyGSpHAybBs= -github.com/cheggaaa/mb/v2 v2.0.1/go.mod h1:XGeZw20Iqgjky26KL0mvCwk3+4NyZCUbshSo6ALne+c= +github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c h1:+bD75daSbsxyTzkKpNplC4xls+7/tGwty+zruzOnOmk= +github.com/cheggaaa/mb/v3 v3.0.0-20221122160120-e9034545510c/go.mod h1:zCt2QeYukhd/g0bIdNqF+b/kKz1hnLFNDkP49qN5kqI= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -95,6 +97,8 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt 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.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.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -163,8 +167,8 @@ github.com/klauspost/compress v1.15.10 h1:Ai8UzuomSCDw90e1qNMtb15msBXsNpH6gzkkEN github.com/klauspost/compress v1.15.10/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0= -github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.2 h1:xPMwiykqNK9VK0NYC3+jTMYv9I6Vl3YdjZgPZKG3zO0= +github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= 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= @@ -177,8 +181,6 @@ github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6 github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-libp2p v0.23.2 h1:yqyTeKQJyofWXxEv/eEVUvOrGdt/9x+0PIQ4N1kaxmE= github.com/libp2p/go-libp2p v0.23.2/go.mod h1:s9DEa5NLR4g+LZS+md5uGU4emjMWFiqkZr6hBTY8UxI= -github.com/libp2p/go-libp2p-core v0.20.1 h1:fQz4BJyIFmSZAiTbKV8qoYhEH5Dtv/cVhZbG3Ib/+Cw= -github.com/libp2p/go-libp2p-core v0.20.1/go.mod h1:6zR8H7CvQWgYLsbG4on6oLNSGcyKaYFSEYyDt51+bIY= github.com/libp2p/go-openssl v0.1.0 h1:LBkKEcUv6vtZIQLVTegAil8jbNpJErQ9AnT+bWV+Ooo= github.com/libp2p/go-openssl v0.1.0/go.mod h1:OiOxwPpL3n4xlenjx2h7AwSGaFSC/KZvf6gNdOBQMtc= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= @@ -201,8 +203,8 @@ github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= -github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4= -github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.7.0 h1:gskHcdaCyPtp9XskVwtvEeQOG465sCohbQIirSyqxrc= github.com/multiformats/go-multiaddr v0.7.0/go.mod h1:Fs50eBDWvZu+l3/9S6xAE7ZYj6yhxlvaVZjakWN7xRs= github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI= @@ -211,8 +213,8 @@ github.com/multiformats/go-multicodec v0.6.0 h1:KhH2kSuCARyuJraYMFxrNO3DqIaYhOdS github.com/multiformats/go-multicodec v0.6.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw= github.com/multiformats/go-multihash v0.2.1 h1:aem8ZT0VA2nCHHk7bPJ1BjUbHNciqZC/d16Vve9l108= github.com/multiformats/go-multihash v0.2.1/go.mod h1:WxoMcYG85AZVQUyRyo9s4wULvW5qrI9vb2Lt6evduFc= -github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY= -github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= 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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -258,14 +260,16 @@ github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2 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/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.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 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= @@ -297,19 +301,20 @@ go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.23.0 h1:OjGQ5KQDEUawVHxNwQgPpiypGHOxo2mNZsOqTak4fFY= -go.uber.org/zap v1.23.0/go.mod h1:D+nX8jyLsMHMYrln8A0rJjFt/T/9/bGgIhAqxv5URuY= +go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= 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= @@ -438,8 +443,9 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 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/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -448,8 +454,9 @@ golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3 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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= 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= @@ -495,6 +502,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-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= 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= @@ -583,15 +591,12 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= -gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= 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.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= From 555ff804fec85cc898a7605adcdad3f16d50b9e4 Mon Sep 17 00:00:00 2001 From: Sergey Cherepanov Date: Thu, 22 Dec 2022 14:50:20 +0300 Subject: [PATCH 10/10] files: fix syncer loop, check ctx.Done --- .../badgerfilestore/badgerfilestore.go | 21 +++++++++++- client/filestorage/proxystore.go | 24 ++++++++------ client/filestorage/proxystore_test.go | 12 +++++++ client/filestorage/rpcstore/client.go | 18 +++++++++-- client/filestorage/rpcstore/store.go | 18 ++++++++--- client/filestorage/syncer.go | 32 ++++++++++++------- .../fileblockstore/fileblockstore.go | 1 + 7 files changed, 96 insertions(+), 30 deletions(-) diff --git a/client/filestorage/badgerfilestore/badgerfilestore.go b/client/filestorage/badgerfilestore/badgerfilestore.go index 7860841a..3a693020 100644 --- a/client/filestorage/badgerfilestore/badgerfilestore.go +++ b/client/filestorage/badgerfilestore/badgerfilestore.go @@ -79,8 +79,27 @@ func (f *badgerStorage) Delete(ctx context.Context, c cid.Cid) error { func (f *badgerStorage) ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) { err = f.db.View(func(txn *badger.Txn) error { for _, k := range ks { - if _, e := txn.Get(key(k)); e == nil { + _, e := txn.Get(key(k)) + if e == nil { exists = append(exists, k) + } else if e != badger.ErrKeyNotFound { + return e + } + } + return nil + }) + return +} + +func (f *badgerStorage) NotExistsBlocks(ctx context.Context, bs []blocks.Block) (notExists []blocks.Block, err error) { + notExists = bs[:0] + err = f.db.View(func(txn *badger.Txn) error { + for _, b := range bs { + _, e := txn.Get(key(b.Cid())) + if e == badger.ErrKeyNotFound { + notExists = append(notExists, b) + } else if e != nil { + return e } } return nil diff --git a/client/filestorage/proxystore.go b/client/filestorage/proxystore.go index ad726288..4a9a3173 100644 --- a/client/filestorage/proxystore.go +++ b/client/filestorage/proxystore.go @@ -95,26 +95,32 @@ func (c *proxyStore) GetMany(ctx context.Context, ks []cid.Cid) <-chan blocks.Bl return results } -func (c *proxyStore) Add(ctx context.Context, bs []blocks.Block) error { +func (c *proxyStore) Add(ctx context.Context, bs []blocks.Block) (err error) { + if bs, err = c.cache.NotExistsBlocks(ctx, bs); err != nil { + return + } + if len(bs) == 0 { + return nil + } + if err = c.cache.Add(ctx, bs); err != nil { + return + } indexCids := badgerfilestore.NewCids() defer indexCids.Release() for _, b := range bs { indexCids.Add(fileblockstore.CtxGetSpaceId(ctx), badgerfilestore.OpAdd, b.Cid()) } - if err := c.index.Add(indexCids); err != nil { - return err - } - return c.cache.Add(ctx, bs) + return c.index.Add(indexCids) } func (c *proxyStore) Delete(ctx context.Context, k cid.Cid) error { + if err := c.cache.Delete(ctx, k); err != nil { + return err + } indexCids := badgerfilestore.NewCids() defer indexCids.Release() indexCids.Add(fileblockstore.CtxGetSpaceId(ctx), badgerfilestore.OpDelete, k) - if err := c.index.Add(indexCids); err != nil { - return err - } - return c.cache.Delete(ctx, k) + return c.index.Add(indexCids) } func (c *proxyStore) Close() (err error) { diff --git a/client/filestorage/proxystore_test.go b/client/filestorage/proxystore_test.go index c33c86bd..7ef77911 100644 --- a/client/filestorage/proxystore_test.go +++ b/client/filestorage/proxystore_test.go @@ -160,6 +160,18 @@ type testStore struct { mu sync.Mutex } +func (t *testStore) NotExistsBlocks(ctx context.Context, bs []blocks.Block) (notExists []blocks.Block, err error) { + t.mu.Lock() + defer t.mu.Unlock() + notExists = bs[:0] + for _, b := range bs { + if _, ok := t.store[b.Cid().String()]; !ok { + notExists = append(notExists, b) + } + } + return +} + func (t *testStore) Get(ctx context.Context, k cid.Cid) (blocks.Block, error) { t.mu.Lock() defer t.mu.Unlock() diff --git a/client/filestorage/rpcstore/client.go b/client/filestorage/rpcstore/client.go index 0b0327e6..76776ee5 100644 --- a/client/filestorage/rpcstore/client.go +++ b/client/filestorage/rpcstore/client.go @@ -126,7 +126,11 @@ func (c *client) put(ctx context.Context, t *task) (err error) { return rpcerr.Unwrap(err) } log.Debug("put cid", zap.String("cid", t.cid.String())) - t.ready <- t + select { + case t.ready <- t: + case <-ctx.Done(): + return ctx.Err() + } c.stat.Add(st, len(t.data)) return } @@ -184,7 +188,11 @@ func (c *client) readStream(stream fileproto.DRPCFile_GetBlocksClient) { if err != nil { log.Warn("cid receive error", zap.Error(err)) } else { - t.ready <- t + select { + case t.ready <- t: + case <-t.ctx.Done(): + } + } } } @@ -269,7 +277,11 @@ func (c *client) Close() error { c.waitCIDMu.Lock() for id, t := range c.waitCIDs { t.err = ErrClientClosed - t.ready <- t + select { + case t.ready <- t: + case <-t.ctx.Done(): + } + delete(c.waitCIDs, id) } c.waitCIDMu.Unlock() diff --git a/client/filestorage/rpcstore/store.go b/client/filestorage/rpcstore/store.go index 89cf2592..70cf2cee 100644 --- a/client/filestorage/rpcstore/store.go +++ b/client/filestorage/rpcstore/store.go @@ -77,9 +77,13 @@ func (s *store) Add(ctx context.Context, bs []blocks.Block) error { } var errs []error for i := 0; i < len(tasks); i++ { - t := <-readyCh - if t.err != nil { - errs = append(errs, t.err) + select { + case t := <-readyCh: + if t.err != nil { + errs = append(errs, t.err) + } + case <-ctx.Done(): + return ctx.Err() } } return multierr.Combine(errs...) @@ -90,8 +94,12 @@ func (s *store) Delete(ctx context.Context, c cid.Cid) error { if err := s.cm.Add(ctx, t); err != nil { return err } - <-t.ready - return t.err + select { + case t := <-t.ready: + return t.err + case <-ctx.Done(): + return ctx.Err() + } } func (s *store) Close() (err error) { diff --git a/client/filestorage/syncer.go b/client/filestorage/syncer.go index ee4d2d23..30ff9d15 100644 --- a/client/filestorage/syncer.go +++ b/client/filestorage/syncer.go @@ -7,6 +7,7 @@ import ( blocks "github.com/ipfs/go-block-format" "go.uber.org/zap" "sync" + "sync/atomic" "time" ) @@ -31,14 +32,14 @@ func (s *syncer) run(ctx context.Context) { } } -func (s *syncer) sync(ctx context.Context) (l int) { +func (s *syncer) sync(ctx context.Context) (doneCount int32) { cids, err := s.ps.index.List(syncerOpBatch) if err != nil { log.Error("index list error", zap.Error(err)) return } defer cids.Release() - l = cids.Len() + l := cids.Len() log.Debug("remote file sync, got tasks to sync", zap.Int("count", l)) if l == 0 { return @@ -47,34 +48,35 @@ func (s *syncer) sync(ctx context.Context) (l int) { ctx, cancel = context.WithTimeout(ctx, time.Minute) defer cancel() var wg sync.WaitGroup + var doneAtomic atomic.Int32 for _, sOps := range cids.SpaceOps { if len(sOps.Load) > 0 { wg.Add(1) go func(opt badgerfilestore.SpaceCidOps) { defer wg.Done() - s.load(ctx, opt) + doneAtomic.Add(s.load(ctx, opt)) }(sOps) } if len(sOps.Delete) > 0 { wg.Add(1) go func(opt badgerfilestore.SpaceCidOps) { defer wg.Done() - s.delete(ctx, opt) + doneAtomic.Add(s.delete(ctx, opt)) }(sOps) } if len(sOps.Add) > 0 { wg.Add(1) go func(opt badgerfilestore.SpaceCidOps) { defer wg.Done() - s.add(ctx, opt) + doneAtomic.Add(s.add(ctx, opt)) }(sOps) } } wg.Wait() - return + return doneAtomic.Load() } -func (s *syncer) load(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) { +func (s *syncer) load(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) (doneCount int32) { ctx = fileblockstore.CtxWithSpaceId(ctx, spaceOps.SpaceId) res := s.ps.origin.GetMany(ctx, spaceOps.Load) doneCids := badgerfilestore.NewCids() @@ -90,10 +92,12 @@ func (s *syncer) load(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) log.Error("syncer: index.Done error", zap.Error(err)) return } - log.Info("successfully loaded cids", zap.Int("count", doneCids.Len())) + doneCount = int32(doneCids.Len()) + log.Info("successfully loaded cids", zap.Int32("count", doneCount)) + return } -func (s *syncer) add(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) { +func (s *syncer) add(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) (doneCount int32) { doneCids := badgerfilestore.NewCids() defer doneCids.Release() res := s.ps.cache.GetMany(ctx, spaceOps.Add) @@ -112,10 +116,12 @@ func (s *syncer) add(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) log.Error("syncer: index.Done error", zap.Error(err)) return } - log.Info("successfully added cids", zap.Int("count", doneCids.Len()), zap.Stringers("cids", doneCids.SpaceOps[0].Add)) + doneCount = int32(doneCids.Len()) + log.Info("successfully added cids", zap.Int32("count", doneCount), zap.Stringers("cids", doneCids.SpaceOps[0].Add)) + return } -func (s *syncer) delete(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) { +func (s *syncer) delete(ctx context.Context, spaceOps badgerfilestore.SpaceCidOps) (doneCount int32) { doneCids := badgerfilestore.NewCids() defer doneCids.Release() ctx = fileblockstore.CtxWithSpaceId(ctx, spaceOps.SpaceId) @@ -129,5 +135,7 @@ func (s *syncer) delete(ctx context.Context, spaceOps badgerfilestore.SpaceCidOp if err := s.ps.index.Done(doneCids); err != nil { log.Error("syncer: index.Done error", zap.Error(err)) } - log.Info("successfully removed cids", zap.Int("count", doneCids.Len())) + doneCount = int32(doneCids.Len()) + log.Info("successfully removed cids", zap.Int32("count", doneCount)) + return } diff --git a/common/commonfile/fileblockstore/fileblockstore.go b/common/commonfile/fileblockstore/fileblockstore.go index 0eb08a68..9cfa522e 100644 --- a/common/commonfile/fileblockstore/fileblockstore.go +++ b/common/commonfile/fileblockstore/fileblockstore.go @@ -33,6 +33,7 @@ type BlockStore interface { type BlockStoreLocal interface { BlockStore ExistsCids(ctx context.Context, ks []cid.Cid) (exists []cid.Cid, err error) + NotExistsBlocks(ctx context.Context, bs []blocks.Block) (notExists []blocks.Block, err error) } type BlockStoreSpaceIds interface {