Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ For more details, go [here](https://docs.multiversx.com/sdk-and-tools/proxy/).
- `/v1.0/network/direct-staked-info` (GET) --> returns the list of direct staked values
- `/v1.0/network/delegated-info` (GET) --> returns the list of delegated values
- `/v1.0/network/enable-epochs` (GET) --> returns the activation epochs metric
- `/v1.0/network/enable-epochs-v2` (GET) --> returns the newer version of activation epochs
### node

- `/v1.0/node/heartbeatstatus` (GET) --> returns the heartbeat data from an observer from any shard. Has a cache to avoid many requests
Expand Down
11 changes: 11 additions & 0 deletions api/groups/baseNetworkGroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ func NewNetworkGroup(facadeHandler data.FacadeHandler) (*networkGroup, error) {
{Path: "/esdt/non-fungible-tokens", Handler: ng.getEsdtHandlerFunc(data.NonFungibleTokens), Method: http.MethodGet},
{Path: "/esdt/supply/:token", Handler: ng.getESDTSupply, Method: http.MethodGet},
{Path: "/enable-epochs", Handler: ng.getEnableEpochs, Method: http.MethodGet},
{Path: "/enable-epochs-v2", Handler: ng.getEnableEpochsV2, Method: http.MethodGet},
{Path: "/direct-staked-info", Handler: ng.getDirectStakedInfo, Method: http.MethodGet},
{Path: "/delegated-info", Handler: ng.getDelegatedInfo, Method: http.MethodGet},
{Path: "/ratings", Handler: ng.getRatingsConfig, Method: http.MethodGet},
Expand Down Expand Up @@ -144,6 +145,16 @@ func (group *networkGroup) getEnableEpochs(c *gin.Context) {
c.JSON(http.StatusOK, enableEpochsMetrics)
}

func (group *networkGroup) getEnableEpochsV2(c *gin.Context) {
enableEpochsMetrics, err := group.facade.GetEnableEpochsMetricsV2()
if err != nil {
shared.RespondWith(c, http.StatusInternalServerError, nil, err.Error(), data.ReturnCodeInternalError)
return
}

c.JSON(http.StatusOK, enableEpochsMetrics)
}

func (group *networkGroup) getESDTSupply(c *gin.Context) {
tokenIdentifier := c.Param("token")
if tokenIdentifier == "" {
Expand Down
81 changes: 78 additions & 3 deletions api/groups/baseNetworkGroup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ func TestGetEconomicsData_ShouldWork(t *testing.T) {

assert.Equal(t, http.StatusOK, resp.Code)
assert.Equal(t, expectedResp, ecDataResp)
assert.Equal(t, expectedResp.Data, ecDataResp.Data) //extra safe
assert.Equal(t, expectedResp.Data, ecDataResp.Data) // extra safe
}

func TestGetAllIssuedESDTs_ShouldErr(t *testing.T) {
Expand Down Expand Up @@ -325,7 +325,7 @@ func TestGetDelegatedInfo_ShouldWork(t *testing.T) {

assert.Equal(t, http.StatusOK, resp.Code)
assert.Equal(t, expectedResp, delegatedInfoResp)
assert.Equal(t, expectedResp.Data, delegatedInfoResp.Data) //extra safe
assert.Equal(t, expectedResp.Data, delegatedInfoResp.Data) // extra safe
}

func TestGetDirectStaked_ShouldErr(t *testing.T) {
Expand Down Expand Up @@ -374,7 +374,7 @@ func TestGetDirectStaked_ShouldWork(t *testing.T) {

assert.Equal(t, http.StatusOK, resp.Code)
assert.Equal(t, expectedResp, directStakedResp)
assert.Equal(t, expectedResp.Data, directStakedResp.Data) //extra safe
assert.Equal(t, expectedResp.Data, directStakedResp.Data) // extra safe
}

func TestGetEnableEpochsMetrics_FacadeErrShouldErr(t *testing.T) {
Expand Down Expand Up @@ -452,6 +452,81 @@ func TestGetEnableEpochsMetrics_OkRequestShouldWork(t *testing.T) {
assert.Equal(t, value, res)
}

func TestGetEnableEpochsMetricsV2_FacadeErrShouldErr(t *testing.T) {
t.Parallel()

expectedErr := errors.New("expected err")
facade := &mock.FacadeStub{
GetEnableEpochsMetricsV2Handler: func() (*data.GenericAPIResponse, error) {
return nil, expectedErr
},
}
networkGroup, err := groups.NewNetworkGroup(facade)
require.NoError(t, err)
ws := startProxyServer(networkGroup, networkPath)

req, _ := http.NewRequest("GET", "/network/enable-epochs-v2", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)
assert.Equal(t, http.StatusInternalServerError, resp.Code)

var result metricsResponse
loadResponse(resp.Body, &result)

assert.Equal(t, expectedErr.Error(), result.Error)
}

func TestGetEnableEpochsMetricsV2_BadRequestShouldErr(t *testing.T) {
t.Parallel()

facade := &mock.FacadeStub{
GetEnableEpochsMetricsV2Handler: func() (*data.GenericAPIResponse, error) {
return nil, errors.New("bad request")
},
}
networkGroup, err := groups.NewNetworkGroup(facade)
require.NoError(t, err)
ws := startProxyServer(networkGroup, networkPath)

req, _ := http.NewRequest("GET", "/network/enable-epochs-v2", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusInternalServerError, resp.Code)
}

func TestGetEnableEpochsMetricsV2_OkRequestShouldWork(t *testing.T) {
t.Parallel()

key := "SupernovaEnableEpoch"
value := float64(4)
facade := &mock.FacadeStub{
GetEnableEpochsMetricsV2Handler: func() (*data.GenericAPIResponse, error) {
return &data.GenericAPIResponse{
Data: map[string]interface{}{
key: value,
},
Error: "",
}, nil
},
}
networkGroup, err := groups.NewNetworkGroup(facade)
require.NoError(t, err)
ws := startProxyServer(networkGroup, networkPath)

req, _ := http.NewRequest("GET", "/network/enable-epochs-v2", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)
assert.Equal(t, http.StatusOK, resp.Code)

var result metricsResponse
loadResponse(resp.Body, &result)

res, ok := result.Data[key]
assert.True(t, ok)
assert.Equal(t, value, res)
}

func TestGetRatingsConfig_ShouldFail(t *testing.T) {
t.Parallel()

Expand Down
1 change: 1 addition & 0 deletions api/groups/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ type NetworkFacadeHandler interface {
GetDirectStakedInfo() (*data.GenericAPIResponse, error)
GetDelegatedInfo() (*data.GenericAPIResponse, error)
GetEnableEpochsMetrics() (*data.GenericAPIResponse, error)
GetEnableEpochsMetricsV2() (*data.GenericAPIResponse, error)
GetESDTSupply(token string) (*data.ESDTSupplyResponse, error)
GetRatingsConfig() (*data.GenericAPIResponse, error)
GetGenesisNodesPubKeys() (*data.GenericAPIResponse, error)
Expand Down
6 changes: 6 additions & 0 deletions api/mock/facadeStub.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ type FacadeStub struct {
GetNetworkMetricsHandler func(shardID uint32) (*data.GenericAPIResponse, error)
GetAllIssuedESDTsHandler func(tokenType string) (*data.GenericAPIResponse, error)
GetEnableEpochsMetricsHandler func() (*data.GenericAPIResponse, error)
GetEnableEpochsMetricsV2Handler func() (*data.GenericAPIResponse, error)
GetEconomicsDataMetricsHandler func() (*data.GenericAPIResponse, error)
GetDirectStakedInfoCalled func() (*data.GenericAPIResponse, error)
GetDelegatedInfoCalled func() (*data.GenericAPIResponse, error)
Expand Down Expand Up @@ -235,6 +236,11 @@ func (f *FacadeStub) GetEnableEpochsMetrics() (*data.GenericAPIResponse, error)
return f.GetEnableEpochsMetricsHandler()
}

// GetEnableEpochsMetricsV2 -
func (f *FacadeStub) GetEnableEpochsMetricsV2() (*data.GenericAPIResponse, error) {
return f.GetEnableEpochsMetricsV2Handler()
}

// GetRatingsConfig -
func (f *FacadeStub) GetRatingsConfig() (*data.GenericAPIResponse, error) {
return f.GetRatingsConfigCalled()
Expand Down
1 change: 1 addition & 0 deletions cmd/proxy/config/apiConfig/v1_0.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Routes = [
{ Name = "/direct-staked-info", Open = true, Secured = true, RateLimit = 0 },
{ Name = "/delegated-info", Open = true, Secured = true, RateLimit = 0 },
{ Name = "/enable-epochs", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/enable-epochs-v2", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/ratings", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/genesis-nodes", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/gas-configs", Open = true, Secured = false, RateLimit = 0 },
Expand Down
1 change: 1 addition & 0 deletions cmd/proxy/config/apiConfig/v_next.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Routes = [
{ Name = "/direct-staked-info", Open = true, Secured = true, RateLimit = 0 },
{ Name = "/delegated-info", Open = true, Secured = true, RateLimit = 0 },
{ Name = "/enable-epochs", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/enable-epochs-v2", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/ratings", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/genesis-nodes", Open = true, Secured = false, RateLimit = 0 },
{ Name = "/gas-configs", Open = true, Secured = false, RateLimit = 0 },
Expand Down
20 changes: 20 additions & 0 deletions cmd/proxy/config/swagger/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -1071,6 +1071,26 @@
}
}
},
"/network/enable-epochs-v2": {
"get": {
"tags": [
"network"
],
"summary": "returns the activation epochs metric",
"responses": {
"200": {
"description": "successful operation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GenericResponse"
}
}
}
}
}
}
},
"/network/ratings": {
"get": {
"tags": [
Expand Down
13 changes: 9 additions & 4 deletions facade/baseFacade.go
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,11 @@ func (pf *ProxyFacade) GetEnableEpochsMetrics() (*data.GenericAPIResponse, error
return pf.nodeStatusProc.GetEnableEpochsMetrics()
}

// GetEnableEpochsMetricsV2 retrieves the activation epochs
func (pf *ProxyFacade) GetEnableEpochsMetricsV2() (*data.GenericAPIResponse, error) {
return pf.nodeStatusProc.GetEnableEpochsMetricsV2()
}

// GetRatingsConfig retrieves the node's configuration's metrics
func (pf *ProxyFacade) GetRatingsConfig() (*data.GenericAPIResponse, error) {
return pf.nodeStatusProc.GetRatingsConfig()
Expand Down Expand Up @@ -406,8 +411,8 @@ func (pf *ProxyFacade) ValidatorStatistics() (map[string]*data.ValidatorApiRespo
}

// AuctionList will return the auction list
func (epf *ProxyFacade) AuctionList() ([]*data.AuctionListValidatorAPIResponse, error) {
auctionList, err := epf.valStatsProc.GetAuctionList()
func (pf *ProxyFacade) AuctionList() ([]*data.AuctionListValidatorAPIResponse, error) {
auctionList, err := pf.valStatsProc.GetAuctionList()
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -536,8 +541,8 @@ func (pf *ProxyFacade) GetInternalStartOfEpochValidatorsInfo(epoch uint32) (*dat
}

// GetWaitingEpochsLeftForPublicKey returns the number of epochs left for the public key until it becomes eligible
func (epf *ProxyFacade) GetWaitingEpochsLeftForPublicKey(publicKey string) (*data.WaitingEpochsLeftApiResponse, error) {
return epf.nodeGroupProc.GetWaitingEpochsLeftForPublicKey(publicKey)
func (pf *ProxyFacade) GetWaitingEpochsLeftForPublicKey(publicKey string) (*data.WaitingEpochsLeftApiResponse, error) {
return pf.nodeGroupProc.GetWaitingEpochsLeftForPublicKey(publicKey)
}

// IsDataTrieMigrated returns true if the data trie for the given address is migrated
Expand Down
1 change: 1 addition & 0 deletions facade/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ type NodeStatusProcessor interface {
GetLatestFullySynchronizedHyperblockNonce() (uint64, error)
GetAllIssuedESDTs(tokenType string) (*data.GenericAPIResponse, error)
GetEnableEpochsMetrics() (*data.GenericAPIResponse, error)
GetEnableEpochsMetricsV2() (*data.GenericAPIResponse, error)
GetDirectStakedInfo() (*data.GenericAPIResponse, error)
GetDelegatedInfo() (*data.GenericAPIResponse, error)
GetRatingsConfig() (*data.GenericAPIResponse, error)
Expand Down
10 changes: 10 additions & 0 deletions facade/mock/nodeStatusProcessorStub.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ type NodeStatusProcessorStub struct {
GetDirectStakedInfoCalled func() (*data.GenericAPIResponse, error)
GetDelegatedInfoCalled func() (*data.GenericAPIResponse, error)
GetEnableEpochsMetricsCalled func() (*data.GenericAPIResponse, error)
GetEnableEpochsMetricsV2Called func() (*data.GenericAPIResponse, error)
GetRatingsConfigCalled func() (*data.GenericAPIResponse, error)
GetGenesisNodesPubKeysCalled func() (*data.GenericAPIResponse, error)
GetGasConfigsCalled func() (*data.GenericAPIResponse, error)
Expand Down Expand Up @@ -91,6 +92,15 @@ func (stub *NodeStatusProcessorStub) GetEnableEpochsMetrics() (*data.GenericAPIR
return &data.GenericAPIResponse{}, nil
}

// GetEnableEpochsMetricsV2 -
func (stub *NodeStatusProcessorStub) GetEnableEpochsMetricsV2() (*data.GenericAPIResponse, error) {
if stub.GetEnableEpochsMetricsV2Called != nil {
return stub.GetEnableEpochsMetricsV2Called()
}

return &data.GenericAPIResponse{}, nil
}

// GetRatingsConfig -
func (stub *NodeStatusProcessorStub) GetRatingsConfig() (*data.GenericAPIResponse, error) {
if stub.GetRatingsConfigCalled != nil {
Expand Down
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ require (
github.com/gin-contrib/pprof v1.4.0
github.com/gin-contrib/static v0.0.1
github.com/gin-gonic/gin v1.10.0
github.com/multiversx/mx-chain-core-go v1.4.2-0.20251211081223-2b266c66a68a
github.com/multiversx/mx-chain-core-go v1.4.2-0.20260112082618-e36a88370557
github.com/multiversx/mx-chain-crypto-go v1.3.0
github.com/multiversx/mx-chain-es-indexer-go v1.8.0
github.com/multiversx/mx-chain-es-indexer-go v1.9.3-0.20260112102658-97d6a0ceb5f6
github.com/multiversx/mx-chain-logger-go v1.1.0
github.com/multiversx/mx-chain-storage-go v1.1.0
github.com/pkg/errors v0.9.1
Expand Down Expand Up @@ -49,11 +49,11 @@ require (
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
golang.org/x/arch v0.8.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/net v0.33.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/crypto v0.32.0 // indirect
golang.org/x/net v0.34.0 // indirect
golang.org/x/sys v0.30.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/protobuf v1.36.3 // indirect
google.golang.org/protobuf v1.36.4 // indirect
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -132,12 +132,12 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
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/multiversx/mx-chain-core-go v1.4.2-0.20251211081223-2b266c66a68a h1:+MWgbbcL8RoBOweAP+EBMgFYKk6wCYi0Ob+3Flgwypw=
github.com/multiversx/mx-chain-core-go v1.4.2-0.20251211081223-2b266c66a68a/go.mod h1:IO+vspNan+gT0WOHnJ95uvWygiziHZvfXpff6KnxV7g=
github.com/multiversx/mx-chain-core-go v1.4.2-0.20260112082618-e36a88370557 h1:OKl4jmdUPjR9qlK8e5g8BMA9vM0rtr8i87WnfSn7gVA=
github.com/multiversx/mx-chain-core-go v1.4.2-0.20260112082618-e36a88370557/go.mod h1:IO+vspNan+gT0WOHnJ95uvWygiziHZvfXpff6KnxV7g=
github.com/multiversx/mx-chain-crypto-go v1.3.0 h1:0eK2bkDOMi8VbSPrB1/vGJSYT81IBtfL4zw+C4sWe/k=
github.com/multiversx/mx-chain-crypto-go v1.3.0/go.mod h1:nPIkxxzyTP8IquWKds+22Q2OJ9W7LtusC7cAosz7ojM=
github.com/multiversx/mx-chain-es-indexer-go v1.8.0 h1:VLN9V3yNxchyGub25yOIUoa3KOuxqxGfRuXIH5f24s8=
github.com/multiversx/mx-chain-es-indexer-go v1.8.0/go.mod h1:OLsBLRme3wL59qPRSJ2UG3xRU8QIR/JnbXHPEncR4dg=
github.com/multiversx/mx-chain-es-indexer-go v1.9.3-0.20260112102658-97d6a0ceb5f6 h1:ywYAthnCkytgSGfMBTBvojlBJh9o5zUmottZwaVYTd8=
github.com/multiversx/mx-chain-es-indexer-go v1.9.3-0.20260112102658-97d6a0ceb5f6/go.mod h1:F/BpaYVPuHN7POJN6gwvJfZ22diYtvz2576a+PWiPvw=
github.com/multiversx/mx-chain-logger-go v1.1.0 h1:97x84A6L4RfCa6YOx1HpAFxZp1cf/WI0Qh112whgZNM=
github.com/multiversx/mx-chain-logger-go v1.1.0/go.mod h1:K9XgiohLwOsNACETMNL0LItJMREuEvTH6NsoXWXWg7g=
github.com/multiversx/mx-chain-storage-go v1.1.0 h1:M1Y9DqMrJ62s7Zw31+cyuqsnPIvlG4jLBJl5WzeZLe8=
Expand Down Expand Up @@ -202,8 +202,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
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-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
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/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand All @@ -215,8 +215,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/
golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/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-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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=
Expand All @@ -237,8 +237,8 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
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.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
Expand All @@ -264,8 +264,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
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-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
Expand Down
Loading
Loading