This is an automated email from the ASF dual-hosted git repository.

laurence pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new dc4fd76  Ftr: Generic invocation supports generalizer.Generalizer 
(#170)
dc4fd76 is described below

commit dc4fd76ca0a480e389c291c283c7aa010717b887
Author: XavierNiu <[email protected]>
AuthorDate: Mon Jul 26 19:37:26 2021 +0800

    Ftr: Generic invocation supports generalizer.Generalizer (#170)
    
    * Generic invocation supports generalizer.Generalizer
    
    * update version
    
    * generic invocation between java and go
    
    * add generic invocation tests for protobuf-json
    
    * disable protobuf-json
    
    * fix conflict
    
    * go fmt
    
    * add comments
---
 game/go-server-game/pkg/provider.go                | 162 ++++++++--------
 .../tests/integration/gameprovider_test.go         |  30 +--
 game/go-server-game/tests/integration/main_test.go |   2 +-
 game/go-server-gate/cmd/server.go                  | 127 ++++++------
 game/go-server-gate/pkg/consumer.go                |   8 +-
 game/pkg/consumer/game/basketball.go               |   6 +-
 game/pkg/pojo/info.go                              |   4 +-
 generic/README.md                                  | 108 ++++++-----
 generic/README_zh.md                               | 105 ++++++----
 generic/{ => default}/go-client/cmd/client.go      |  30 +--
 generic/{ => default}/go-client/conf/client.yml    |   0
 generic/{ => default}/go-client/conf/log.yml       |   0
 generic/{ => default}/go-client/pkg/user.go        |   0
 generic/{ => default}/go-server/cmd/server.go      |   2 +-
 generic/{ => default}/go-server/conf/client.yml    |   0
 generic/{ => default}/go-server/conf/log.yml       |   0
 generic/{ => default}/go-server/conf/server.yml    |   0
 .../go-server/docker/docker-compose.yml            |   0
 .../go-server/docker/docker-health-check.sh        |   0
 generic/{ => default}/go-server/pkg/user.go        |   0
 .../go-server/tests/integration/main_test.go       |   2 +-
 .../tests/integration/userprovider_test.go         |  18 +-
 .../java-client}/2.6/pom.xml                       |   0
 .../src/main/java/org/apache/dubbo/Consumer.java   |   0
 .../2.6}/src/main/java/org/apache/dubbo/User.java  |   0
 .../2.6}/src/main/resources/log4j.properties       |   0
 .../java-client}/2.7/pom.xml                       |   0
 .../src/main/java/org/apache/dubbo/Consumer.java   |  10 +-
 .../2.7}/src/main/java/org/apache/dubbo/User.java  |   0
 .../2.7}/src/main/resources/log4j.properties       |   0
 .../java-server}/2.6/pom.xml                       |   0
 .../src/main/java/org/apache/dubbo/Gender.java     |   0
 .../src/main/java/org/apache/dubbo/Provider.java   |   0
 .../src/main/java/org/apache/dubbo/Response.java   |   0
 .../2.6}/src/main/java/org/apache/dubbo/User.java  |   0
 .../main/java/org/apache/dubbo/UserProvider.java   |   0
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |   0
 .../java/org/apache/dubbo/UserProviderImpl.java    |   0
 .../resources/META-INF/spring/dubbo.provider.xml   |   0
 .../2.6}/src/main/resources/log4j.properties       |   0
 .../java-server}/2.7/pom.xml                       |   0
 .../src/main/java/org/apache/dubbo/Gender.java     |   0
 .../src/main/java/org/apache/dubbo/Provider.java   |   0
 .../src/main/java/org/apache/dubbo/Response.java   |   0
 .../2.7}/src/main/java/org/apache/dubbo/User.java  |   0
 .../main/java/org/apache/dubbo/UserProvider.java   |   0
 .../org/apache/dubbo/UserProviderAnotherImpl.java  |   0
 .../java/org/apache/dubbo/UserProviderImpl.java    |   0
 .../resources/META-INF/spring/dubbo.provider.xml   |   0
 .../2.7}/src/main/resources/log4j.properties       |   0
 generic/{ => protobufjson}/go-client/cmd/client.go |  47 ++---
 .../{ => protobufjson}/go-client/conf/client.yml   |   0
 generic/{ => protobufjson}/go-client/conf/log.yml  |   0
 generic/{ => protobufjson}/go-client/pkg/user.go   |   0
 generic/{ => protobufjson}/go-server/cmd/server.go |  13 +-
 .../go-server}/conf/client.yml                     |   0
 generic/{ => protobufjson}/go-server/conf/log.yml  |   0
 .../{ => protobufjson}/go-server/conf/server.yml   |   0
 .../go-server/docker/docker-compose.yml            |   0
 .../go-server/docker/docker-health-check.sh        |   0
 .../go-server}/pkg/user.go                         |  26 ++-
 generic/protobufjson/go-server/pkg/user.pb.go      | 215 +++++++++++++++++++++
 .../go-server/tests/integration/main_test.go       |  25 +--
 .../tests/integration/userprovider_test.go}        |  33 ++--
 generic/protobufjson/user.proto                    |  14 ++
 go.mod                                             |   4 +-
 go.sum                                             | 174 +----------------
 logger/go-client/cmd/client.go                     |   4 +-
 start_integrate_test.sh                            |   4 +-
 69 files changed, 642 insertions(+), 531 deletions(-)

diff --git a/game/go-server-game/pkg/provider.go 
b/game/go-server-game/pkg/provider.go
index b70437b..f37f95a 100755
--- a/game/go-server-game/pkg/provider.go
+++ b/game/go-server-game/pkg/provider.go
@@ -19,92 +19,92 @@ type BasketballService struct{}
 var userMap = make(map[string]*pojo.Info, 0)
 
 func (p *BasketballService) Login(ctx context.Context, uid string) 
(*pojo.Result, error) {
-    logger.Infof("message: %#v", uid)
-    var (
-        info *pojo.Info
-        ok bool
-    )
-
-    // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, "")
-    if err != nil {
-        logger.Errorf("send fail: %#s", err.Error())
-        return &pojo.Result{Code: 1, Msg: err.Error()}, err
-    }
-
-    fmt.Println("receive data from gate:", rsp)
-
-    if info, ok = userMap[uid]; !ok {
-        info = &pojo.Info{}
-        info.Name = uid
-        userMap[uid] = info
-    }
-    return &pojo.Result{Code: 0, Msg: info.Name + ", your score is " + 
strconv.Itoa(info.Score) , Data: map[string]interface{}{"to": uid, "score": 
info.Score}}, nil
+       logger.Infof("message: %#v", uid)
+       var (
+               info *pojo.Info
+               ok   bool
+       )
+
+       // auto reply the same message
+       rsp, err := GateBasketball.Send(context.TODO(), uid, "")
+       if err != nil {
+               logger.Errorf("send fail: %#s", err.Error())
+               return &pojo.Result{Code: 1, Msg: err.Error()}, err
+       }
+
+       fmt.Println("receive data from gate:", rsp)
+
+       if info, ok = userMap[uid]; !ok {
+               info = &pojo.Info{}
+               info.Name = uid
+               userMap[uid] = info
+       }
+       return &pojo.Result{Code: 0, Msg: info.Name + ", your score is " + 
strconv.Itoa(info.Score), Data: map[string]interface{}{"to": uid, "score": 
info.Score}}, nil
 }
 
-func (p *BasketballService) Score (ctx context.Context, uid, score string) 
(*pojo.Result, error) {
-    logger.Infof("message: %#v, %#v", uid, score)
-    var (
-        info = &pojo.Info{}
-        ok bool
-    )
-
-    // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, score)
-    if err != nil {
-        logger.Errorf("send fail: %#s", err.Error())
-        return &pojo.Result{Code: 1, Msg: err.Error()}, err
-    }
-
-    fmt.Println("receive data from gate:", rsp)
-
-    if info, ok = userMap[uid]; !ok {
-      info = &pojo.Info{
-          Name: uid,
-      }
-      userMap[uid] = info
-      logger.Error("user data not found")
-      return &pojo.Result{Code: 1, Msg: "user data not found", Data: 
map[string]interface{}{}}, nil
-    }
-    intSource, err := strconv.Atoi(score)
-    if err != nil {
-        logger.Error(err.Error())
-    }
-    info.Score += intSource
-
-    return &pojo.Result{Code: 0, Msg: "进球成功", Data: 
map[string]interface{}{"to": uid, "score": info.Score}}, nil
+func (p *BasketballService) Score(ctx context.Context, uid, score string) 
(*pojo.Result, error) {
+       logger.Infof("message: %#v, %#v", uid, score)
+       var (
+               info = &pojo.Info{}
+               ok   bool
+       )
+
+       // auto reply the same message
+       rsp, err := GateBasketball.Send(context.TODO(), uid, score)
+       if err != nil {
+               logger.Errorf("send fail: %#s", err.Error())
+               return &pojo.Result{Code: 1, Msg: err.Error()}, err
+       }
+
+       fmt.Println("receive data from gate:", rsp)
+
+       if info, ok = userMap[uid]; !ok {
+               info = &pojo.Info{
+                       Name: uid,
+               }
+               userMap[uid] = info
+               logger.Error("user data not found")
+               return &pojo.Result{Code: 1, Msg: "user data not found", Data: 
map[string]interface{}{}}, nil
+       }
+       intSource, err := strconv.Atoi(score)
+       if err != nil {
+               logger.Error(err.Error())
+       }
+       info.Score += intSource
+
+       return &pojo.Result{Code: 0, Msg: "进球成功", Data: 
map[string]interface{}{"to": uid, "score": info.Score}}, nil
 }
 
-func (p *BasketballService) Rank (ctx context.Context, uid string) 
(*pojo.Result, error) {
-    var (
-        rank = 1
-        info  *pojo.Info
-        ok bool
-    )
-
-    // auto reply the same message
-    rsp, err := GateBasketball.Send(context.TODO(), uid, "")
-    if err != nil {
-        logger.Errorf("send fail: %#s", err.Error())
-        return &pojo.Result{Code: 1, Msg: err.Error()}, err
-    }
-
-    fmt.Println("receive data from gate:", rsp)
-
-    if info, ok = userMap[uid]; !ok {
-        logger.Error("no user found")
-        return &pojo.Result{Code: 1, Msg: "no user found", Data: 
map[string]interface{}{"to": uid, "rank": rank}}, nil
-    }
-
-    for _, v := range userMap {
-        if v.Score > info.Score {
-            rank ++
-        }
-    }
-
-    return &pojo.Result{Code: 0, Msg: "success", Data: 
map[string]interface{}{"to": uid, "rank": rank}}, nil
+func (p *BasketballService) Rank(ctx context.Context, uid string) 
(*pojo.Result, error) {
+       var (
+               rank = 1
+               info *pojo.Info
+               ok   bool
+       )
+
+       // auto reply the same message
+       rsp, err := GateBasketball.Send(context.TODO(), uid, "")
+       if err != nil {
+               logger.Errorf("send fail: %#s", err.Error())
+               return &pojo.Result{Code: 1, Msg: err.Error()}, err
+       }
+
+       fmt.Println("receive data from gate:", rsp)
+
+       if info, ok = userMap[uid]; !ok {
+               logger.Error("no user found")
+               return &pojo.Result{Code: 1, Msg: "no user found", Data: 
map[string]interface{}{"to": uid, "rank": rank}}, nil
+       }
+
+       for _, v := range userMap {
+               if v.Score > info.Score {
+                       rank++
+               }
+       }
+
+       return &pojo.Result{Code: 0, Msg: "success", Data: 
map[string]interface{}{"to": uid, "rank": rank}}, nil
 }
 
 func (p *BasketballService) Reference() string {
-    return "gameProvider.basketballService"
+       return "gameProvider.basketballService"
 }
diff --git a/game/go-server-game/tests/integration/gameprovider_test.go 
b/game/go-server-game/tests/integration/gameprovider_test.go
index 7a8aacf..1b29e13 100755
--- a/game/go-server-game/tests/integration/gameprovider_test.go
+++ b/game/go-server-game/tests/integration/gameprovider_test.go
@@ -10,25 +10,25 @@ import (
 )
 
 func TestMessage(t *testing.T) {
-    res, err := gameProvider.Login(context.TODO(), "A001")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
-    assert.NotNil(t, res.Data)
-    assert.Equal(t, "A001", res.Data["to"])
-    assert.Equal(t, 0, res.Data["score"])
+       res, err := gameProvider.Login(context.TODO(), "A001")
+       assert.Nil(t, err)
+       assert.NotNil(t, res)
+       assert.Equal(t, int32(0), res.Code)
+       assert.NotNil(t, res.Data)
+       assert.Equal(t, "A001", res.Data["to"])
+       assert.Equal(t, 0, res.Data["score"])
 }
 
 func TestOnline(t *testing.T) {
-    res, err := gameProvider.Score(context.TODO(), "A001", "1")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
+       res, err := gameProvider.Score(context.TODO(), "A001", "1")
+       assert.Nil(t, err)
+       assert.NotNil(t, res)
+       assert.Equal(t, int32(0), res.Code)
 }
 
 func TestOffline(t *testing.T) {
-    res, err := gameProvider.Rank(context.TODO(), "A001")
-    assert.Nil(t, err)
-    assert.NotNil(t, res)
-    assert.Equal(t, int32(0), res.Code)
+       res, err := gameProvider.Rank(context.TODO(), "A001")
+       assert.Nil(t, err)
+       assert.NotNil(t, res)
+       assert.Equal(t, int32(0), res.Code)
 }
diff --git a/game/go-server-game/tests/integration/main_test.go 
b/game/go-server-game/tests/integration/main_test.go
index 0cd2c5e..057d58f 100755
--- a/game/go-server-game/tests/integration/main_test.go
+++ b/game/go-server-game/tests/integration/main_test.go
@@ -7,7 +7,6 @@ import (
 )
 
 import (
-       hessian "github.com/apache/dubbo-go-hessian2"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
        _ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
@@ -17,6 +16,7 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
        _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
        _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+       hessian "github.com/apache/dubbo-go-hessian2"
 )
 
 import (
diff --git a/game/go-server-gate/cmd/server.go 
b/game/go-server-gate/cmd/server.go
index eedcc1b..976445c 100755
--- a/game/go-server-gate/cmd/server.go
+++ b/game/go-server-gate/cmd/server.go
@@ -13,7 +13,6 @@ import (
 )
 
 import (
-       hessian "github.com/apache/dubbo-go-hessian2"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
        "dubbo.apache.org/dubbo-go/v3/common/logger"
@@ -24,6 +23,7 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
        _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
        _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+       hessian "github.com/apache/dubbo-go-hessian2"
 )
 
 import (
@@ -32,14 +32,13 @@ import (
 )
 
 func init() {
-    config.SetProviderService(new(pkg.BasketballService))
+       config.SetProviderService(new(pkg.BasketballService))
 
-    config.SetConsumerService(pkg.GameBasketball)
+       config.SetConsumerService(pkg.GameBasketball)
 
-    hessian.RegisterPOJO(&pojo.Result{})
+       hessian.RegisterPOJO(&pojo.Result{})
 }
 
-
 func main() {
        config.Load()
 
@@ -73,67 +72,67 @@ func initSignal() {
 
 func startHttp() {
 
-    http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Login(context.TODO(), r.URL.Query().Get("name"))
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-
-        b, err := json.Marshal(res)
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        responseWithOrigin(w, r, 200, b)
-    })
-
-    http.HandleFunc("/score", func(w http.ResponseWriter, r *http.Request) {
-        reqBody, err := ioutil.ReadAll(r.Body)
-        if err != nil {
-            logger.Error(err.Error())
-        }
-        var info pojo.Info
-        json.Unmarshal(reqBody, &info)
-        res, err := pkg.Score(context.TODO(), info.Name, 
strconv.Itoa(info.Score))
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-
-        b, err := json.Marshal(res)
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        responseWithOrigin(w, r, 200, b)
-    })
-
-    http.HandleFunc("/rank", func(w http.ResponseWriter, r *http.Request) {
-        res, err := pkg.Rank(context.TODO(), r.URL.Query().Get("name"))
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        b, err := json.Marshal(res)
-        if err != nil {
-            responseWithOrigin(w, r, 200, []byte(err.Error()))
-            return
-        }
-        responseWithOrigin(w, r, 200, b)
-    })
-
-    _ = http.ListenAndServe("127.0.0.1:8089", nil)
+       http.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
+               res, err := pkg.Login(context.TODO(), r.URL.Query().Get("name"))
+               if err != nil {
+                       responseWithOrigin(w, r, 200, []byte(err.Error()))
+                       return
+               }
+
+               b, err := json.Marshal(res)
+               if err != nil {
+                       responseWithOrigin(w, r, 200, []byte(err.Error()))
+                       return
+               }
+               responseWithOrigin(w, r, 200, b)
+       })
+
+       http.HandleFunc("/score", func(w http.ResponseWriter, r *http.Request) {
+               reqBody, err := ioutil.ReadAll(r.Body)
+               if err != nil {
+                       logger.Error(err.Error())
+               }
+               var info pojo.Info
+               json.Unmarshal(reqBody, &info)
+               res, err := pkg.Score(context.TODO(), info.Name, 
strconv.Itoa(info.Score))
+               if err != nil {
+                       responseWithOrigin(w, r, 200, []byte(err.Error()))
+                       return
+               }
+
+               b, err := json.Marshal(res)
+               if err != nil {
+                       responseWithOrigin(w, r, 200, []byte(err.Error()))
+                       return
+               }
+               responseWithOrigin(w, r, 200, b)
+       })
+
+       http.HandleFunc("/rank", func(w http.ResponseWriter, r *http.Request) {
+               res, err := pkg.Rank(context.TODO(), r.URL.Query().Get("name"))
+               if err != nil {
+                       responseWithOrigin(w, r, 200, []byte(err.Error()))
+                       return
+               }
+               b, err := json.Marshal(res)
+               if err != nil {
+                       responseWithOrigin(w, r, 200, []byte(err.Error()))
+                       return
+               }
+               responseWithOrigin(w, r, 200, b)
+       })
+
+       _ = http.ListenAndServe("127.0.0.1:8089", nil)
 }
 
 // avoid cors
 func responseWithOrigin(w http.ResponseWriter, r *http.Request, code int, json 
[]byte) {
-    w.Header().Set("Access-Control-Allow-Origin", "*")
-    w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, 
DELETE, UPDATE")
-    w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, 
Content-Type, Accept, Authorization")
-    w.Header().Set("Access-Control-Expose-Headers", "Content-Length, 
Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, 
Content-Language, Content-Type")
-    w.Header().Set("Access-Control-Allow-Credentials", "true")
-    w.Header().Set("Content-Type", "application/json; charset=utf-8")
-    w.WriteHeader(code)
-    w.Write(json)
+       w.Header().Set("Access-Control-Allow-Origin", "*")
+       w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, 
PUT, DELETE, UPDATE")
+       w.Header().Set("Access-Control-Allow-Headers", "Origin, 
X-Requested-With, Content-Type, Accept, Authorization")
+       w.Header().Set("Access-Control-Expose-Headers", "Content-Length, 
Access-Control-Allow-Origin, Access-Control-Allow-Headers, Cache-Control, 
Content-Language, Content-Type")
+       w.Header().Set("Access-Control-Allow-Credentials", "true")
+       w.Header().Set("Content-Type", "application/json; charset=utf-8")
+       w.WriteHeader(code)
+       w.Write(json)
 }
diff --git a/game/go-server-gate/pkg/consumer.go 
b/game/go-server-gate/pkg/consumer.go
index 3709d96..85a2908 100755
--- a/game/go-server-gate/pkg/consumer.go
+++ b/game/go-server-gate/pkg/consumer.go
@@ -16,13 +16,13 @@ var GameBasketball = new(game.BasketballService)
 // just easy for demo test
 
 func Login(ctx context.Context, data string) (*pojo.Result, error) {
-    return GameBasketball.Login(ctx, data)
+       return GameBasketball.Login(ctx, data)
 }
 
 func Score(ctx context.Context, uid, score string) (*pojo.Result, error) {
-    return GameBasketball.Score(ctx, uid, score)
+       return GameBasketball.Score(ctx, uid, score)
 }
 
-func Rank (ctx context.Context, uid string) (*pojo.Result, error) {
-    return GameBasketball.Rank(ctx, uid)
+func Rank(ctx context.Context, uid string) (*pojo.Result, error) {
+       return GameBasketball.Rank(ctx, uid)
 }
diff --git a/game/pkg/consumer/game/basketball.go 
b/game/pkg/consumer/game/basketball.go
index c244f7d..67d6f55 100755
--- a/game/pkg/consumer/game/basketball.go
+++ b/game/pkg/consumer/game/basketball.go
@@ -9,9 +9,9 @@ import (
 )
 
 type BasketballService struct {
-    Login   func(ctx context.Context, uid string) (*pojo.Result, error)
-    Score   func(ctx context.Context, uid, score string) (*pojo.Result, error)
-    Rank  func(ctx context.Context, uid string) (*pojo.Result, error)
+       Login func(ctx context.Context, uid string) (*pojo.Result, error)
+       Score func(ctx context.Context, uid, score string) (*pojo.Result, error)
+       Rank  func(ctx context.Context, uid string) (*pojo.Result, error)
 }
 
 func (p *BasketballService) Reference() string {
diff --git a/game/pkg/pojo/info.go b/game/pkg/pojo/info.go
index 6125b5a..8f923a7 100755
--- a/game/pkg/pojo/info.go
+++ b/game/pkg/pojo/info.go
@@ -1,8 +1,8 @@
 package pojo
 
 type Info struct {
-       Name string `json:"name"`
-       Score int       `json:"score"`
+       Name  string `json:"name"`
+       Score int    `json:"score"`
 }
 
 func (m Info) JavaClassName() string {
diff --git a/generic/README.md b/generic/README.md
index eb62c44..f22fe37 100644
--- a/generic/README.md
+++ b/generic/README.md
@@ -1,44 +1,64 @@
-# Generic Reference Example
-
-### 1. Introduction
-
-Generic invocation is mainly used when the client does not have API interface 
or model class, all POJOs in parameters
-and return values are represented by Map. Commonly used for framework 
integration such as: implementing a common service
-testing framework, all service implementations can be invoked via
-`GenericService`.
-
-### 2. Code
-
-```go
-var ( 
-    //appName is the unique identification of RPCService 
-    appName         = "UserConsumer"
-    referenceConfig = config.ReferenceConfig{
-        InterfaceName: "org.apache.dubbo.UserProvider",
-        Cluster:       "failover",
-        Registry:      "demoZk",
-        Protocol:      dubbo.DUBBO,
-        Generic:       true,
-    }
-)
-
-func init() {
-    referenceConfig.GenericLoad(appName)
-    time.Sleep(3 * time.Second)
-}
-
-func main() {
-    resp, err := 
referenceConfig.GetRPCService().(*config.GenericService).Invoke(
-       context.TODO(),
-       []interface{}{
-               //method name
-               "queryUser",
-               //parameter type
-               []string{"org.apache.dubbo.User"},
-               //parameter array
-               []interface{}{user},
-       },
-    )
-}
-
-```
\ No newline at end of file
+# Generic Invocation
+
+Generic invocation is mainly used when the client does not have API interface 
or model class, all POJOs in parameters and return values are represented by 
map or other generic data structures. Commonly used for framework integration 
such as: implementing a common service testing framework, all service 
implementations can be invoked via `GenericService`. For more information 
please visit our documentation.
+
+## Getting Started
+
+You should provide the information of config for both provider and consumer, 
in this case, we use `default` directory as an example.
+
+```shell
+export CONF_PROVIDER_FILE_PATH="$(pwd)/default/go-server/conf/server.yml"
+export CONF_CONSUMER_FILE_PATH="$(pwd)/default/go-client/conf/client.yml"
+```
+
+ZooKeeper is required as well, you could launch it using docker-compose.
+
+```shell
+cd ./default/go-server/docker \
+  && docker-compose up -d
+```
+
+### Map: Default Way
+
+The case for map is at `default` directory. Launch the provider by the 
following code.
+
+```shell
+cd ./default/go-server/cmd \
+  && go run server.go
+```
+
+Run the consumer to invoke generic invocations.
+
+```shell
+cd ./default/go-client/cmd \
+  && go run client.go
+```
+
+### Protobuf Json (Disabled)
+
+The case for Protobuf Json is at `protobufjson` directory. The first step is 
to generate struct definitions with proto file.  (The `user.pb.go` is generated 
for integrated tests, but we highly recommend you generate by yourself.)
+
+```shell
+cd ./protobufjson \
+  && protoc --go_out=. user.proto
+```
+
+Copy `user.pb.go` file generated by protobuf to provider.
+
+```shell
+mv ./protobufjson/user.pb.go ./protobufjson/go-server/pkg
+```
+
+Launch the provider by the following code.
+
+```shell
+cd ./protobufjson/go-server/cmd \
+  && go run server.go
+```
+
+Run the consumer to invoke generic invocations.
+
+```shell
+cd ./protobufjson/go-client/cmd \
+  && go run client.go
+```
diff --git a/generic/README_zh.md b/generic/README_zh.md
index 3a4368b..3587dc7 100644
--- a/generic/README_zh.md
+++ b/generic/README_zh.md
@@ -1,41 +1,64 @@
-# 泛化调用实例
-
-### 1. 介绍
-
-泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 
表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过`GenericService`调用所有服务实现。
-
-### 2. 代码示例
-
-```go
-var ( 
-    //appName是RPCService的唯一标识 
-    appName         = "UserConsumer"
-    referenceConfig = config.ReferenceConfig{
-        InterfaceName: "org.apache.dubbo.UserProvider",
-        Cluster:       "failover",
-        Registry:      "demoZk",
-        Protocol:      dubbo.DUBBO,
-        Generic:       true,
-    }
-)
-
-func init() {
-    referenceConfig.GenericLoad(appName)
-    time.Sleep(3 * time.Second)
-}
-
-func main() {
-    resp, err := 
referenceConfig.GetRPCService().(*config.GenericService).Invoke(
-       context.TODO(),
-       []interface{}{
-               //方法名
-               "queryUser",
-               //参数类型数组
-               []string{"org.apache.dubbo.User"},
-               //参数数组
-               []interface{}{user},
-       },
-    )
-}
-
-```
\ No newline at end of file
+# 泛化调用
+
+泛化接口调用方式主要用于客户端没有 API 接口及模型类元的情况,参数及返回值中的所有 POJO 均用 Map 
表示,通常用于框架集成,比如:实现一个通用的服务测试框架,可通过`GenericService`调用所有服务实现。更多信息请参与文档。
+
+## 开始
+
+你需要提供提供者(provider)和消费者(consumer)的配置文件信息,在这个例子中,使用`default`文件夹作为示例。
+
+```shell
+export CONF_PROVIDER_FILE_PATH="$(pwd)/default/go-server/conf/server.yml"
+export CONF_CONSUMER_FILE_PATH="$(pwd)/default/go-client/conf/client.yml"
+```
+
+ZooKeeper也是必须的,你可以使用docker-compose启动它。
+
+```shell
+cd ./default/go-server/docker \
+  && docker-compose up -d
+```
+
+### Map:默认方式
+
+Map的例子放在`default`文件夹中。通过下面的代码启动提供者。
+
+```shell
+cd ./default/go-server/cmd \
+  && go run server.go
+```
+
+运行消费者来发起泛化调用。
+
+```shell
+cd ./default/go-client/cmd \
+  && go run client.go
+```
+
+### Protobuf Json (暂时禁用)
+
+Protobuf 
Json的例子放在`protobufjson`文件夹中。首先需要根据proto文件生成结构体定义。(注:`user.pb.go`已经生成,这是为了CI的集成测试使用的,但是我们仍然强烈建议你自己生成一次。)
+
+```shell
+cd ./protobufjson \
+  && protoc --go_out=. user.proto
+```
+
+拷贝`user.pb.go`文件到提供者文件夹。
+
+```shell
+mv ./protobufjson/user.pb.go ./protobufjson/go-server/pkg
+```
+
+通过下面的代码启动提供者。
+
+```shell
+cd ./protobufjson/go-server/cmd \
+  && go run server.go
+```
+
+运行消费者来发起泛化调用。
+
+```shell
+cd ./protobufjson/go-client/cmd \
+  && go run client.go
+```
diff --git a/generic/go-client/cmd/client.go 
b/generic/default/go-client/cmd/client.go
similarity index 89%
copy from generic/go-client/cmd/client.go
copy to generic/default/go-client/cmd/client.go
index c3be7b7..5f428d9 100644
--- a/generic/go-client/cmd/client.go
+++ b/generic/default/go-client/cmd/client.go
@@ -37,11 +37,9 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
        _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
 
-       "github.com/dubbogo/gost/log"
-)
+       hessian "github.com/apache/dubbo-go-hessian2"
 
-import (
-       "github.com/apache/dubbo-go-samples/generic/go-client/pkg"
+       "github.com/dubbogo/gost/log"
 )
 
 var (
@@ -51,7 +49,7 @@ var (
                Cluster:       "failover",
                Registry:      "demoZk",
                Protocol:      dubbo.DUBBO,
-               Generic:       true,
+               Generic:       "true",
        }
 )
 
@@ -101,7 +99,7 @@ func callGetUser() {
                []interface{}{
                        "GetUser",
                        []string{"java.lang.String"},
-                       []interface{}{"A003"},
+                       []hessian.Object{"A003"},
                },
        )
        if err != nil {
@@ -113,18 +111,24 @@ func callGetUser() {
 }
 func callQueryUser() {
        gxlog.CInfo("\n\n\nstart to generic invoke")
-       user := pkg.User{
-               ID:   "3213",
-               Name: "panty",
-               Age:  25,
-               Time: time.Now(),
-       }
        resp, err := 
referenceConfig.GetRPCService().(*config.GenericService).Invoke(
                context.TODO(),
                []interface{}{
                        "queryUser",
                        []string{"org.apache.dubbo.User"},
-                       []interface{}{user},
+                       // the map represents a User object:
+                       // &User {
+                       //              ID: "3213",
+                       //              Name: "panty",
+                       //              Age: 25,
+                       //              Time: time.Now(),
+                       // }
+                       []hessian.Object{map[string]hessian.Object{
+                               "iD":   "3213",
+                               "name": "panty",
+                               "age":  25,
+                               "time": time.Now(),
+                       }},
                },
        )
        if err != nil {
diff --git a/generic/go-client/conf/client.yml 
b/generic/default/go-client/conf/client.yml
similarity index 100%
copy from generic/go-client/conf/client.yml
copy to generic/default/go-client/conf/client.yml
diff --git a/generic/go-client/conf/log.yml 
b/generic/default/go-client/conf/log.yml
similarity index 100%
copy from generic/go-client/conf/log.yml
copy to generic/default/go-client/conf/log.yml
diff --git a/generic/go-client/pkg/user.go 
b/generic/default/go-client/pkg/user.go
similarity index 100%
copy from generic/go-client/pkg/user.go
copy to generic/default/go-client/pkg/user.go
diff --git a/generic/go-server/cmd/server.go 
b/generic/default/go-server/cmd/server.go
similarity index 97%
copy from generic/go-server/cmd/server.go
copy to generic/default/go-server/cmd/server.go
index dfd8882..f73c7ae 100644
--- a/generic/go-server/cmd/server.go
+++ b/generic/default/go-server/cmd/server.go
@@ -40,7 +40,7 @@ import (
 )
 
 import (
-       "github.com/apache/dubbo-go-samples/generic/go-server/pkg"
+       "github.com/apache/dubbo-go-samples/generic/default/go-server/pkg"
 )
 
 var (
diff --git a/generic/go-server/conf/client.yml 
b/generic/default/go-server/conf/client.yml
similarity index 100%
rename from generic/go-server/conf/client.yml
rename to generic/default/go-server/conf/client.yml
diff --git a/generic/go-server/conf/log.yml 
b/generic/default/go-server/conf/log.yml
similarity index 100%
copy from generic/go-server/conf/log.yml
copy to generic/default/go-server/conf/log.yml
diff --git a/generic/go-server/conf/server.yml 
b/generic/default/go-server/conf/server.yml
similarity index 100%
copy from generic/go-server/conf/server.yml
copy to generic/default/go-server/conf/server.yml
diff --git a/generic/go-server/docker/docker-compose.yml 
b/generic/default/go-server/docker/docker-compose.yml
similarity index 100%
copy from generic/go-server/docker/docker-compose.yml
copy to generic/default/go-server/docker/docker-compose.yml
diff --git a/generic/go-server/docker/docker-health-check.sh 
b/generic/default/go-server/docker/docker-health-check.sh
similarity index 100%
copy from generic/go-server/docker/docker-health-check.sh
copy to generic/default/go-server/docker/docker-health-check.sh
diff --git a/generic/go-server/pkg/user.go 
b/generic/default/go-server/pkg/user.go
similarity index 100%
rename from generic/go-server/pkg/user.go
rename to generic/default/go-server/pkg/user.go
diff --git a/generic/go-server/tests/integration/main_test.go 
b/generic/default/go-server/tests/integration/main_test.go
similarity index 98%
copy from generic/go-server/tests/integration/main_test.go
copy to generic/default/go-server/tests/integration/main_test.go
index d69fd00..2f167fc 100644
--- a/generic/go-server/tests/integration/main_test.go
+++ b/generic/default/go-server/tests/integration/main_test.go
@@ -43,7 +43,7 @@ var referenceConfig = config.ReferenceConfig{
        Cluster:       "failover",
        Registry:      "demoZk",
        Protocol:      dubbo.DUBBO,
-       Generic:       true,
+       Generic:       "true",
 }
 
 func TestMain(m *testing.M) {
diff --git a/generic/go-server/tests/integration/userprovider_test.go 
b/generic/default/go-server/tests/integration/userprovider_test.go
similarity index 89%
rename from generic/go-server/tests/integration/userprovider_test.go
rename to generic/default/go-server/tests/integration/userprovider_test.go
index fcf61bc..6b8971a 100644
--- a/generic/go-server/tests/integration/userprovider_test.go
+++ b/generic/default/go-server/tests/integration/userprovider_test.go
@@ -28,6 +28,8 @@ import (
 import (
        "dubbo.apache.org/dubbo-go/v3/config"
 
+       hessian "github.com/apache/dubbo-go-hessian2"
+
        "github.com/stretchr/testify/assert"
 )
 
@@ -37,7 +39,7 @@ func TestGetUser(t *testing.T) {
                []interface{}{
                        "GetUser",
                        []string{"java.lang.String"},
-                       []interface{}{"A003"},
+                       []hessian.Object{"A003"},
                },
        )
        assert.Nil(t, err)
@@ -49,19 +51,17 @@ func TestGetUser(t *testing.T) {
 }
 
 func TestQueryUser(t *testing.T) {
-       user := User{
-               ID:   "3213",
-               Name: "panty",
-               Age:  25,
-               Time: time.Now(),
-       }
-
        o, err := 
referenceConfig.GetRPCService().(*config.GenericService).Invoke(
                context.TODO(),
                []interface{}{
                        "queryUser",
                        []string{"org.apache.dubbo.User"},
-                       []interface{}{user},
+                       []hessian.Object{map[string]hessian.Object{
+                               "iD":   "3213",
+                               "name": "panty",
+                               "age":  25,
+                               "time": time.Now(),
+                       }},
                },
        )
 
diff --git a/generic/java-server/2.6/pom.xml 
b/generic/default/java-client/2.6/pom.xml
similarity index 100%
rename from generic/java-server/2.6/pom.xml
rename to generic/default/java-client/2.6/pom.xml
diff --git 
a/generic/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java 
b/generic/default/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
similarity index 100%
rename from generic/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
rename to 
generic/default/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
diff --git a/generic/java-client/2.7/src/main/java/org/apache/dubbo/User.java 
b/generic/default/java-client/2.6/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from generic/java-client/2.7/src/main/java/org/apache/dubbo/User.java
rename to 
generic/default/java-client/2.6/src/main/java/org/apache/dubbo/User.java
diff --git a/generic/java-client/2.7/src/main/resources/log4j.properties 
b/generic/default/java-client/2.6/src/main/resources/log4j.properties
similarity index 100%
rename from generic/java-client/2.7/src/main/resources/log4j.properties
rename to generic/default/java-client/2.6/src/main/resources/log4j.properties
diff --git a/generic/java-server/2.7/pom.xml 
b/generic/default/java-client/2.7/pom.xml
similarity index 100%
rename from generic/java-server/2.7/pom.xml
rename to generic/default/java-client/2.7/pom.xml
diff --git 
a/generic/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java 
b/generic/default/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
similarity index 88%
rename from generic/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
rename to 
generic/default/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
index 0e9e952..3c32a70 100644
--- a/generic/java-client/2.6/src/main/java/org/apache/dubbo/Consumer.java
+++ 
b/generic/default/java-client/2.7/src/main/java/org/apache/dubbo/Consumer.java
@@ -17,10 +17,10 @@
 
 package org.apache.dubbo;
 
-import com.alibaba.dubbo.config.ApplicationConfig;
-import com.alibaba.dubbo.config.ReferenceConfig;
-import com.alibaba.dubbo.config.RegistryConfig;
-import com.alibaba.dubbo.rpc.service.GenericService;
+import org.apache.dubbo.config.ApplicationConfig;
+import org.apache.dubbo.config.ReferenceConfig;
+import org.apache.dubbo.config.RegistryConfig;
+import org.apache.dubbo.rpc.service.GenericService;
 
 public class Consumer {
     public static void main(String[] args) {
@@ -34,7 +34,7 @@ public class Consumer {
          registryConfig.setAddress("zookeeper://127.0.0.1:2181");
          reference.setRegistry(registryConfig);
          reference.setGeneric(true);
-         reference.setInterface("com.ikurento.user.UserProvider");
+         reference.setInterface("org.apache.dubbo.UserProvider");
          GenericService genericService = reference.get();
          Object[] parameterArgs = new Object[]{"A003"};
          Object result = genericService.$invoke("GetUser", null , 
parameterArgs);
diff --git a/generic/java-client/2.6/src/main/java/org/apache/dubbo/User.java 
b/generic/default/java-client/2.7/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from generic/java-client/2.6/src/main/java/org/apache/dubbo/User.java
rename to 
generic/default/java-client/2.7/src/main/java/org/apache/dubbo/User.java
diff --git a/generic/java-client/2.6/src/main/resources/log4j.properties 
b/generic/default/java-client/2.7/src/main/resources/log4j.properties
similarity index 100%
rename from generic/java-client/2.6/src/main/resources/log4j.properties
rename to generic/default/java-client/2.7/src/main/resources/log4j.properties
diff --git a/generic/java-client/2.6/pom.xml 
b/generic/default/java-server/2.6/pom.xml
similarity index 100%
rename from generic/java-client/2.6/pom.xml
rename to generic/default/java-server/2.6/pom.xml
diff --git a/generic/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
similarity index 100%
rename from generic/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
diff --git 
a/generic/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java
similarity index 100%
rename from generic/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java
diff --git 
a/generic/java-server/2.7/src/main/java/org/apache/dubbo/Response.java 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/Response.java
similarity index 100%
rename from generic/java-server/2.7/src/main/java/org/apache/dubbo/Response.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/Response.java
diff --git a/generic/java-server/2.7/src/main/java/org/apache/dubbo/User.java 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from generic/java-server/2.7/src/main/java/org/apache/dubbo/User.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/User.java
diff --git 
a/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
similarity index 100%
rename from 
generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
diff --git 
a/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
similarity index 100%
rename from 
generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
diff --git 
a/generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java 
b/generic/default/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
similarity index 100%
rename from 
generic/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
rename to 
generic/default/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
diff --git 
a/generic/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml 
b/generic/default/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
similarity index 100%
rename from 
generic/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
rename to 
generic/default/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
diff --git a/generic/java-server/2.7/src/main/resources/log4j.properties 
b/generic/default/java-server/2.6/src/main/resources/log4j.properties
similarity index 100%
rename from generic/java-server/2.7/src/main/resources/log4j.properties
rename to generic/default/java-server/2.6/src/main/resources/log4j.properties
diff --git a/generic/java-client/2.7/pom.xml 
b/generic/default/java-server/2.7/pom.xml
similarity index 100%
rename from generic/java-client/2.7/pom.xml
rename to generic/default/java-server/2.7/pom.xml
diff --git a/generic/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
similarity index 100%
rename from generic/java-server/2.6/src/main/java/org/apache/dubbo/Gender.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/Gender.java
diff --git 
a/generic/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java
similarity index 100%
rename from generic/java-server/2.6/src/main/java/org/apache/dubbo/Provider.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/Provider.java
diff --git 
a/generic/java-server/2.6/src/main/java/org/apache/dubbo/Response.java 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/Response.java
similarity index 100%
rename from generic/java-server/2.6/src/main/java/org/apache/dubbo/Response.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/Response.java
diff --git a/generic/java-server/2.6/src/main/java/org/apache/dubbo/User.java 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/User.java
similarity index 100%
rename from generic/java-server/2.6/src/main/java/org/apache/dubbo/User.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/User.java
diff --git 
a/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
similarity index 100%
rename from 
generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProvider.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/UserProvider.java
diff --git 
a/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
similarity index 100%
rename from 
generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderAnotherImpl.java
diff --git 
a/generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java 
b/generic/default/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
similarity index 100%
rename from 
generic/java-server/2.6/src/main/java/org/apache/dubbo/UserProviderImpl.java
rename to 
generic/default/java-server/2.7/src/main/java/org/apache/dubbo/UserProviderImpl.java
diff --git 
a/generic/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml 
b/generic/default/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
similarity index 100%
rename from 
generic/java-server/2.6/src/main/resources/META-INF/spring/dubbo.provider.xml
rename to 
generic/default/java-server/2.7/src/main/resources/META-INF/spring/dubbo.provider.xml
diff --git a/generic/java-server/2.6/src/main/resources/log4j.properties 
b/generic/default/java-server/2.7/src/main/resources/log4j.properties
similarity index 100%
rename from generic/java-server/2.6/src/main/resources/log4j.properties
rename to generic/default/java-server/2.7/src/main/resources/log4j.properties
diff --git a/generic/go-client/cmd/client.go 
b/generic/protobufjson/go-client/cmd/client.go
similarity index 81%
rename from generic/go-client/cmd/client.go
rename to generic/protobufjson/go-client/cmd/client.go
index c3be7b7..b2964cf 100644
--- a/generic/go-client/cmd/client.go
+++ b/generic/protobufjson/go-client/cmd/client.go
@@ -27,6 +27,11 @@ import (
 )
 
 import (
+       hessian "github.com/apache/dubbo-go-hessian2"
+       "github.com/dubbogo/gost/log"
+)
+
+import (
        _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
        "dubbo.apache.org/dubbo-go/v3/common/logger"
@@ -36,12 +41,6 @@ import (
        "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
        _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
        _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-       "github.com/dubbogo/gost/log"
-)
-
-import (
-       "github.com/apache/dubbo-go-samples/generic/go-client/pkg"
 )
 
 var (
@@ -51,7 +50,7 @@ var (
                Cluster:       "failover",
                Registry:      "demoZk",
                Protocol:      dubbo.DUBBO,
-               Generic:       true,
+               Generic:       "protobuf-json",
        }
 )
 
@@ -65,8 +64,7 @@ func init() {
 func main() {
        gxlog.CInfo("\n\ncall getUser")
        callGetUser()
-       gxlog.CInfo("\n\ncall queryUser")
-       callQueryUser()
+
        initSignal()
 }
 
@@ -100,31 +98,12 @@ func callGetUser() {
                context.TODO(),
                []interface{}{
                        "GetUser",
-                       []string{"java.lang.String"},
-                       []interface{}{"A003"},
-               },
-       )
-       if err != nil {
-               panic(err)
-       }
-       gxlog.CInfo("res: %+v\n", resp)
-       gxlog.CInfo("success!")
-
-}
-func callQueryUser() {
-       gxlog.CInfo("\n\n\nstart to generic invoke")
-       user := pkg.User{
-               ID:   "3213",
-               Name: "panty",
-               Age:  25,
-               Time: time.Now(),
-       }
-       resp, err := 
referenceConfig.GetRPCService().(*config.GenericService).Invoke(
-               context.TODO(),
-               []interface{}{
-                       "queryUser",
-                       []string{"org.apache.dubbo.User"},
-                       []interface{}{user},
+                       []string{},
+                       // "{\"id\":1}" is a JSON string that represents an 
UserRequestType object shown in the below:
+                       // &UserRequestType{
+                       //              Id: 1
+                       // }
+                       []hessian.Object{"{\"id\":1}"},
                },
        )
        if err != nil {
diff --git a/generic/go-client/conf/client.yml 
b/generic/protobufjson/go-client/conf/client.yml
similarity index 100%
copy from generic/go-client/conf/client.yml
copy to generic/protobufjson/go-client/conf/client.yml
diff --git a/generic/go-client/conf/log.yml 
b/generic/protobufjson/go-client/conf/log.yml
similarity index 100%
rename from generic/go-client/conf/log.yml
rename to generic/protobufjson/go-client/conf/log.yml
diff --git a/generic/go-client/pkg/user.go 
b/generic/protobufjson/go-client/pkg/user.go
similarity index 100%
copy from generic/go-client/pkg/user.go
copy to generic/protobufjson/go-client/pkg/user.go
diff --git a/generic/go-server/cmd/server.go 
b/generic/protobufjson/go-server/cmd/server.go
similarity index 93%
rename from generic/go-server/cmd/server.go
rename to generic/protobufjson/go-server/cmd/server.go
index dfd8882..87a9d5f 100644
--- a/generic/go-server/cmd/server.go
+++ b/generic/protobufjson/go-server/cmd/server.go
@@ -26,6 +26,10 @@ import (
 )
 
 import (
+       "github.com/apache/dubbo-go-samples/generic/protobufjson/go-server/pkg"
+)
+
+import (
        _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
        "dubbo.apache.org/dubbo-go/v3/common/logger"
@@ -35,13 +39,11 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
        _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
        _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
-
-       hessian "github.com/apache/dubbo-go-hessian2"
 )
 
-import (
-       "github.com/apache/dubbo-go-samples/generic/go-server/pkg"
-)
+func init() {
+       config.SetProviderService(new(pkg.UserProvider))
+}
 
 var (
        survivalTimeout = int(3e9)
@@ -49,7 +51,6 @@ var (
 
 // need to setup environment variable "CONF_PROVIDER_FILE_PATH" to 
"conf/server.yml" before run
 func main() {
-       hessian.RegisterPOJO(&pkg.User{})
        config.Load()
 
        initSignal()
diff --git a/generic/go-client/conf/client.yml 
b/generic/protobufjson/go-server/conf/client.yml
similarity index 100%
rename from generic/go-client/conf/client.yml
rename to generic/protobufjson/go-server/conf/client.yml
diff --git a/generic/go-server/conf/log.yml 
b/generic/protobufjson/go-server/conf/log.yml
similarity index 100%
rename from generic/go-server/conf/log.yml
rename to generic/protobufjson/go-server/conf/log.yml
diff --git a/generic/go-server/conf/server.yml 
b/generic/protobufjson/go-server/conf/server.yml
similarity index 100%
rename from generic/go-server/conf/server.yml
rename to generic/protobufjson/go-server/conf/server.yml
diff --git a/generic/go-server/docker/docker-compose.yml 
b/generic/protobufjson/go-server/docker/docker-compose.yml
similarity index 100%
rename from generic/go-server/docker/docker-compose.yml
rename to generic/protobufjson/go-server/docker/docker-compose.yml
diff --git a/generic/go-server/docker/docker-health-check.sh 
b/generic/protobufjson/go-server/docker/docker-health-check.sh
similarity index 100%
rename from generic/go-server/docker/docker-health-check.sh
rename to generic/protobufjson/go-server/docker/docker-health-check.sh
diff --git a/generic/go-client/pkg/user.go 
b/generic/protobufjson/go-server/pkg/user.go
similarity index 67%
copy from generic/go-client/pkg/user.go
copy to generic/protobufjson/go-server/pkg/user.go
index 185b851..6871451 100644
--- a/generic/go-client/pkg/user.go
+++ b/generic/protobufjson/go-server/pkg/user.go
@@ -18,16 +18,26 @@
 package pkg
 
 import (
-       "time"
+       "context"
 )
 
-type User struct {
-       ID   string
-       Name string
-       Age  int32
-       Time time.Time
+import (
+       "github.com/dubbogo/gost/log"
+)
+
+type UserProvider struct {
+}
+
+func (u *UserProvider) GetUser(ctx context.Context, user *UserRequestType) 
(*UserResponseType, error) {
+       gxlog.CInfo("req:%#v", int(user.GetId()))
+       rsp := &UserResponseType{
+               Name: "XavierNiu",
+               Age:  20,
+       }
+       gxlog.CInfo("rsp:%#v", rsp)
+       return rsp, nil
 }
 
-func (User) JavaClassName() string {
-       return "org.apache.dubbo.User"
+func (u *UserProvider) Reference() string {
+       return "UserProvider"
 }
diff --git a/generic/protobufjson/go-server/pkg/user.pb.go 
b/generic/protobufjson/go-server/pkg/user.pb.go
new file mode 100644
index 0000000..1c1ef8b
--- /dev/null
+++ b/generic/protobufjson/go-server/pkg/user.pb.go
@@ -0,0 +1,215 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+//     protoc-gen-go v1.26.0
+//     protoc        v3.17.3
+// source: user.proto
+
+package pkg
+
+import (
+       protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+       protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+       reflect "reflect"
+       sync "sync"
+)
+
+const (
+       // Verify that this generated code is sufficiently up-to-date.
+       _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+       // Verify that runtime/protoimpl is sufficiently up-to-date.
+       _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+type UserRequestType struct {
+       state         protoimpl.MessageState
+       sizeCache     protoimpl.SizeCache
+       unknownFields protoimpl.UnknownFields
+
+       Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
+}
+
+func (x *UserRequestType) Reset() {
+       *x = UserRequestType{}
+       if protoimpl.UnsafeEnabled {
+               mi := &file_user_proto_msgTypes[0]
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               ms.StoreMessageInfo(mi)
+       }
+}
+
+func (x *UserRequestType) String() string {
+       return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserRequestType) ProtoMessage() {}
+
+func (x *UserRequestType) ProtoReflect() protoreflect.Message {
+       mi := &file_user_proto_msgTypes[0]
+       if protoimpl.UnsafeEnabled && x != nil {
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               if ms.LoadMessageInfo() == nil {
+                       ms.StoreMessageInfo(mi)
+               }
+               return ms
+       }
+       return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserRequestType.ProtoReflect.Descriptor instead.
+func (*UserRequestType) Descriptor() ([]byte, []int) {
+       return file_user_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *UserRequestType) GetId() int64 {
+       if x != nil {
+               return x.Id
+       }
+       return 0
+}
+
+type UserResponseType struct {
+       state         protoimpl.MessageState
+       sizeCache     protoimpl.SizeCache
+       unknownFields protoimpl.UnknownFields
+
+       Name string `protobuf:"bytes,1,opt,name=name,proto3" 
json:"name,omitempty"`
+       Age  int64  `protobuf:"varint,2,opt,name=age,proto3" 
json:"age,omitempty"`
+}
+
+func (x *UserResponseType) Reset() {
+       *x = UserResponseType{}
+       if protoimpl.UnsafeEnabled {
+               mi := &file_user_proto_msgTypes[1]
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               ms.StoreMessageInfo(mi)
+       }
+}
+
+func (x *UserResponseType) String() string {
+       return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserResponseType) ProtoMessage() {}
+
+func (x *UserResponseType) ProtoReflect() protoreflect.Message {
+       mi := &file_user_proto_msgTypes[1]
+       if protoimpl.UnsafeEnabled && x != nil {
+               ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+               if ms.LoadMessageInfo() == nil {
+                       ms.StoreMessageInfo(mi)
+               }
+               return ms
+       }
+       return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserResponseType.ProtoReflect.Descriptor instead.
+func (*UserResponseType) Descriptor() ([]byte, []int) {
+       return file_user_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *UserResponseType) GetName() string {
+       if x != nil {
+               return x.Name
+       }
+       return ""
+}
+
+func (x *UserResponseType) GetAge() int64 {
+       if x != nil {
+               return x.Age
+       }
+       return 0
+}
+
+var File_user_proto protoreflect.FileDescriptor
+
+var file_user_proto_rawDesc = []byte{
+       0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 
0x12, 0x2a, 0x6f, 0x72,
+       0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x64, 0x75, 0x62, 
0x62, 0x6f, 0x2e, 0x67,
+       0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 
0x62, 0x75, 0x66, 0x6a,
+       0x73, 0x6f, 0x6e, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x22, 0x21, 0x0a, 0x0f, 
0x55, 0x73, 0x65, 0x72,
+       0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 
0x0e, 0x0a, 0x02, 0x69,
+       0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 
0x38, 0x0a, 0x10, 0x55,
+       0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 
0x79, 0x70, 0x65, 0x12,
+       0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 
0x09, 0x52, 0x04, 0x6e,
+       0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x02, 
0x20, 0x01, 0x28, 0x03,
+       0x52, 0x03, 0x61, 0x67, 0x65, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2f, 0x3b, 
0x70, 0x6b, 0x67, 0x62,
+       0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+       file_user_proto_rawDescOnce sync.Once
+       file_user_proto_rawDescData = file_user_proto_rawDesc
+)
+
+func file_user_proto_rawDescGZIP() []byte {
+       file_user_proto_rawDescOnce.Do(func() {
+               file_user_proto_rawDescData = 
protoimpl.X.CompressGZIP(file_user_proto_rawDescData)
+       })
+       return file_user_proto_rawDescData
+}
+
+var file_user_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_user_proto_goTypes = []interface{}{
+       (*UserRequestType)(nil),  // 0: 
org.apache.dubbo.generic.protobufjson.user.UserRequestType
+       (*UserResponseType)(nil), // 1: 
org.apache.dubbo.generic.protobufjson.user.UserResponseType
+}
+var file_user_proto_depIdxs = []int32{
+       0, // [0:0] is the sub-list for method output_type
+       0, // [0:0] is the sub-list for method input_type
+       0, // [0:0] is the sub-list for extension type_name
+       0, // [0:0] is the sub-list for extension extendee
+       0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_user_proto_init() }
+func file_user_proto_init() {
+       if File_user_proto != nil {
+               return
+       }
+       if !protoimpl.UnsafeEnabled {
+               file_user_proto_msgTypes[0].Exporter = func(v interface{}, i 
int) interface{} {
+                       switch v := v.(*UserRequestType); i {
+                       case 0:
+                               return &v.state
+                       case 1:
+                               return &v.sizeCache
+                       case 2:
+                               return &v.unknownFields
+                       default:
+                               return nil
+                       }
+               }
+               file_user_proto_msgTypes[1].Exporter = func(v interface{}, i 
int) interface{} {
+                       switch v := v.(*UserResponseType); i {
+                       case 0:
+                               return &v.state
+                       case 1:
+                               return &v.sizeCache
+                       case 2:
+                               return &v.unknownFields
+                       default:
+                               return nil
+                       }
+               }
+       }
+       type x struct{}
+       out := protoimpl.TypeBuilder{
+               File: protoimpl.DescBuilder{
+                       GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+                       RawDescriptor: file_user_proto_rawDesc,
+                       NumEnums:      0,
+                       NumMessages:   2,
+                       NumExtensions: 0,
+                       NumServices:   0,
+               },
+               GoTypes:           file_user_proto_goTypes,
+               DependencyIndexes: file_user_proto_depIdxs,
+               MessageInfos:      file_user_proto_msgTypes,
+       }.Build()
+       File_user_proto = out.File
+       file_user_proto_rawDesc = nil
+       file_user_proto_goTypes = nil
+       file_user_proto_depIdxs = nil
+}
diff --git a/generic/go-server/tests/integration/main_test.go 
b/generic/protobufjson/go-server/tests/integration/main_test.go
similarity index 90%
rename from generic/go-server/tests/integration/main_test.go
rename to generic/protobufjson/go-server/tests/integration/main_test.go
index d69fd00..0c776e7 100644
--- a/generic/go-server/tests/integration/main_test.go
+++ b/generic/protobufjson/go-server/tests/integration/main_test.go
@@ -20,12 +20,6 @@
 package integration
 
 import (
-       "os"
-       "testing"
-       "time"
-)
-
-import (
        _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
        _ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
@@ -37,13 +31,19 @@ import (
        _ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
 )
 
+import (
+       "os"
+       "testing"
+       "time"
+)
+
 var appName = "UserConsumerTest"
 var referenceConfig = config.ReferenceConfig{
        InterfaceName: "org.apache.dubbo.UserProvider",
        Cluster:       "failover",
        Registry:      "demoZk",
        Protocol:      dubbo.DUBBO,
-       Generic:       true,
+       Generic:       "protobuf-json",
 }
 
 func TestMain(m *testing.M) {
@@ -53,14 +53,3 @@ func TestMain(m *testing.M) {
 
        os.Exit(m.Run())
 }
-
-type User struct {
-       ID   string
-       Name string
-       Age  int32
-       Time time.Time
-}
-
-func (User) JavaClassName() string {
-       return "org.apache.dubbo.User"
-}
diff --git a/generic/go-client/pkg/user.go 
b/generic/protobufjson/go-server/tests/integration/userprovider_test.go
similarity index 61%
rename from generic/go-client/pkg/user.go
rename to generic/protobufjson/go-server/tests/integration/userprovider_test.go
index 185b851..43ef763 100644
--- a/generic/go-client/pkg/user.go
+++ b/generic/protobufjson/go-server/tests/integration/userprovider_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,19 +17,28 @@
  * limitations under the License.
  */
 
-package pkg
+package integration
 
 import (
-       "time"
+       "context"
+       "github.com/stretchr/testify/assert"
+       "testing"
+)
+import (
+       "dubbo.apache.org/dubbo-go/v3/config"
+       hessian "github.com/apache/dubbo-go-hessian2"
 )
 
-type User struct {
-       ID   string
-       Name string
-       Age  int32
-       Time time.Time
-}
-
-func (User) JavaClassName() string {
-       return "org.apache.dubbo.User"
+func TestGetUser(t *testing.T) {
+       o, err := 
referenceConfig.GetRPCService().(*config.GenericService).Invoke(
+               context.TODO(),
+               []interface{}{
+                       "GetUser",
+                       []string{},
+                       []hessian.Object{"{\"id\":1}"},
+               },
+       )
+       assert.Nil(t, err)
+       resp := o.(string)
+       assert.Equal(t, `{"name":"XavierNiu","age":"20"}`, resp)
 }
diff --git a/generic/protobufjson/user.proto b/generic/protobufjson/user.proto
new file mode 100644
index 0000000..22cc3dd
--- /dev/null
+++ b/generic/protobufjson/user.proto
@@ -0,0 +1,14 @@
+syntax = "proto3";
+
+package org.apache.dubbo.generic.protobufjson.user;
+
+option go_package = "./;pkg";
+
+message UserRequestType {
+  int64 id = 1;
+}
+
+message UserResponseType {
+  string name = 1;
+  int64 age = 2;
+}
diff --git a/go.mod b/go.mod
index 5262bf5..adbc13c 100644
--- a/go.mod
+++ b/go.mod
@@ -1,12 +1,12 @@
 module github.com/apache/dubbo-go-samples
 
 require (
-       dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210708063655-af290429dee4
+       dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210725154253-9aeb7ff3c612
        github.com/alibaba/sentinel-golang v1.0.2
        github.com/apache/dubbo-getty v1.4.3
        github.com/apache/dubbo-go-hessian2 v1.9.2
        github.com/bwmarrin/snowflake v0.3.0
-       github.com/dubbogo/gost v1.11.11
+       github.com/dubbogo/gost v1.11.14
        github.com/dubbogo/net v0.0.3
        github.com/dubbogo/triple v1.0.1
        github.com/emicklei/go-restful/v3 v3.4.0
diff --git a/go.sum b/go.sum
index 43304df..849c5de 100644
--- a/go.sum
+++ b/go.sum
@@ -6,7 +6,6 @@ cloud.google.com/go v0.44.1/go.mod 
h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A
 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/bigquery v1.0.1/go.mod 
h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
 cloud.google.com/go/datastore v1.0.0/go.mod 
h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
 cloud.google.com/go/firestore v1.1.0/go.mod 
h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
@@ -15,37 +14,23 @@ cloud.google.com/go/storage v1.0.0/go.mod 
h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiy
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod 
h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
 dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210708063655-af290429dee4 
h1:JRGjw66CguqaOeYigLauTdccWqnvy7U3OYqAHzXYmlw=
 dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210708063655-af290429dee4/go.mod 
h1:2l+IXuSuJvEk2g/ze1la8t1sX+yJH220aHo6JJVriM8=
+dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210725154253-9aeb7ff3c612 
h1:uQMGg4Hnu/iO+RLrKIRsBXgJLUpLh+UG5NuVNGxGlsg=
+dubbo.apache.org/dubbo-go/v3 v3.0.0-rc2.0.20210725154253-9aeb7ff3c612/go.mod 
h1:RvuYcSX5rxb1aQTSol4EFt2txaJhzMmUAkT75lT9ETE=
 github.com/Azure/azure-sdk-for-go v40.3.0+incompatible/go.mod 
h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
 github.com/Azure/go-autorest/autorest v0.9.0/go.mod 
h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
-github.com/Azure/go-autorest/autorest v0.9.3/go.mod 
h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0=
-github.com/Azure/go-autorest/autorest v0.10.0/go.mod 
h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
 github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod 
h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
-github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod 
h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
-github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod 
h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
-github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod 
h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
-github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod 
h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM=
-github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod 
h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw=
 github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod 
h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
-github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod 
h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
 github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod 
h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
 github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod 
h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod 
h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
-github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod 
h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA=
-github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod 
h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI=
 github.com/Azure/go-autorest/logger v0.1.0/go.mod 
h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
 github.com/Azure/go-autorest/tracing v0.5.0/go.mod 
h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
 github.com/BurntSushi/toml v0.3.1 
h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
 github.com/BurntSushi/toml v0.3.1/go.mod 
h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod 
h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod 
h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
 github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod 
h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
 github.com/Julusian/godocdown v0.0.0-20170816220326-6d19f8ff2df8/go.mod 
h1:INZr5t32rG59/5xeltqoCJoNY7e5x/3xoY9WSWVWg74=
 github.com/Knetic/govaluate 
v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod 
h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
-github.com/Microsoft/go-winio v0.4.3/go.mod 
h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA=
-github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod 
h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
 github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod 
h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/NYTimes/gziphandler v1.0.1/go.mod 
h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
-github.com/NYTimes/gziphandler v1.1.1/go.mod 
h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
 github.com/OneOfOne/xxhash v1.2.2/go.mod 
h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/PuerkitoBio/purell v1.0.0/go.mod 
h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
 github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod 
h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
@@ -53,13 +38,11 @@ github.com/RoaringBitmap/roaring v0.7.1 
h1:HkcLv8q/kwGJnhEWe+vinu+04DGDdQ7nVivMh
 github.com/RoaringBitmap/roaring v0.7.1/go.mod 
h1:jdT9ykXwHFNdJbEtxePexlFYH9LXucApeS0/+/g+p1I=
 github.com/Shopify/sarama v1.19.0/go.mod 
h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
 github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod 
h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
-github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod 
h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d 
h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk=
 github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod 
h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
 github.com/VividCortex/gohistogram v1.0.0/go.mod 
h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
 github.com/Workiva/go-datastructures v1.0.52 
h1:PLSK6pwn8mYdaoaCZEMsXBpBotr4HHn9abU0yMQt0NI=
 github.com/Workiva/go-datastructures v1.0.52/go.mod 
h1:Z+F2Rca0qCsVYDS8z7bAGm8f3UkzuWYS/oBZz5a7VVA=
-github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod 
h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw=
 github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 
h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw=
 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=
@@ -82,14 +65,11 @@ github.com/apache/thrift v0.13.0/go.mod 
h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb
 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod 
h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
 github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod 
h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod 
h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod 
h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg=
 github.com/armon/go-metrics v0.3.0/go.mod 
h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs=
 github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod 
h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/armon/go-radix v1.0.0/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.25.37/go.mod 
h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.25.41/go.mod 
h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
 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/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod 
h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
@@ -100,7 +80,6 @@ github.com/bgentry/speakeasy v0.1.0/go.mod 
h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
 github.com/bits-and-blooms/bitset v1.2.0 
h1:Kn4yilvwNtMACtf1eYDlG8H77R07mZSPbMjLyS07ChA=
 github.com/bits-and-blooms/bitset v1.2.0/go.mod 
h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA=
 github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod 
h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
-github.com/boltdb/bolt v1.3.1/go.mod 
h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
 github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 
h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI=
 github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod 
h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
 github.com/bwmarrin/snowflake v0.3.0 
h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
@@ -129,23 +108,18 @@ github.com/cockroachdb/logtags 
v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOi
 github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod 
h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
 github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd 
h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=
 github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod 
h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
-github.com/coredns/coredns v1.1.2/go.mod 
h1:zASH/MVDgR6XZTbxvOnsZfffS+31vg6Ackf/wo1+AM0=
 github.com/coreos/bbolt v1.3.2/go.mod 
h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
 github.com/coreos/etcd v3.3.10+incompatible/go.mod 
h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
 github.com/coreos/etcd v3.3.13+incompatible/go.mod 
h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod 
h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-oidc v2.1.0+incompatible/go.mod 
h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
 github.com/coreos/go-semver v0.2.0/go.mod 
h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 github.com/coreos/go-semver v0.3.0 
h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
 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-20190321100706-95778dfbb74e 
h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8=
 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod 
h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/coreos/go-systemd/v22 v22.1.0 
h1:kq/SbG2BCKLkDKkjQf5OWwKWUKj1lgs3lFI4PxnR5lg=
 github.com/coreos/go-systemd/v22 v22.1.0/go.mod 
h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk=
 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod 
h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/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/cpuguy83/go-md2man/v2 v2.0.0/go.mod 
h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/creack/pty v1.1.7/go.mod 
h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
@@ -165,23 +139,16 @@ 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/denisenkom/go-mssqldb v0.0.0-20190707035753-2be1aa521ff4/go.mod 
h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM=
 github.com/denisenkom/go-mssqldb v0.0.0-20191124224453-732737034ffd/go.mod 
h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
-github.com/denverdino/aliyungo v0.0.0-20170926055100-d3308649c661/go.mod 
h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod 
h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod 
h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/digitalocean/godo v1.1.1/go.mod 
h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU=
-github.com/digitalocean/godo v1.10.0/go.mod 
h1:h6faOIcZ8lWIwNQ+DN7b3CgX4Kwby5T+nbpNqkUIozU=
-github.com/dimchansky/utfbom v1.1.0/go.mod 
h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
-github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod 
h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/dnaeon/go-vcr v1.0.1/go.mod 
h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/docker/go-connections v0.3.0/go.mod 
h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/go-connections v0.4.0/go.mod 
h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
 github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod 
h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
 github.com/dubbogo/go-zookeeper v1.0.3 
h1:UkuY+rBsxdT7Bs63QAzp9z7XqQ53W1j8E5rwl83me8g=
 github.com/dubbogo/go-zookeeper v1.0.3/go.mod 
h1:fn6n2CAEer3novYgk9ULLwAjuV8/g4DdC2ENwRb6E+c=
 github.com/dubbogo/gost v1.9.0/go.mod 
h1:pPTjVyoJan3aPxBPNUX0ADkXjPibLo+/Ib0/fADXSG8=
 github.com/dubbogo/gost v1.10.1/go.mod 
h1:+mQGS51XQEUWZP2JeGZTxJwipjRKtJO7Tr+FOg+72rI=
-github.com/dubbogo/gost v1.11.11 
h1:u6kY0oJEZEKLCdo9Hz5eAqeDZev2e7+3rJrUkqgC24s=
-github.com/dubbogo/gost v1.11.11/go.mod 
h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
+github.com/dubbogo/gost v1.11.13 
h1:sWvK1QbHpPBMmRQJV9qIH3syLegQBQa4xAPof3/Kv5c=
+github.com/dubbogo/gost v1.11.13/go.mod 
h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
+github.com/dubbogo/gost v1.11.14/go.mod 
h1:vIcP9rqz2KsXHPjsAwIUtfJIJjppQLQDcYaZTy/61jI=
 github.com/dubbogo/jsonparser v1.0.1/go.mod 
h1:tYAtpctvSP/tWw4MeelsowSPgXQRVHHWbqL6ynps8jU=
 github.com/dubbogo/net v0.0.3 h1:2k53mh+1U8h1gFjJ8ykzyP4wNdAdgjc5moD+xVHI/AE=
 github.com/dubbogo/net v0.0.3/go.mod 
h1:B6/ka3g8VzcyrmdCH4VkHP1K0aHeI37FmclS+TCwIBU=
@@ -195,7 +162,6 @@ github.com/eapache/go-resiliency v1.1.0/go.mod 
h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m
 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/elazarl/go-bindata-assetfs 
v0.0.0-20160803192304-e1a2a7ec64b0/go.mod 
h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
 github.com/elazarl/go-bindata-assetfs v1.0.1/go.mod 
h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4=
 github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod 
h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
 github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 
h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw=
@@ -209,7 +175,6 @@ github.com/evanphx/json-patch v4.2.0+incompatible/go.mod 
h1:50XU6AFN0ol/bzJsmQLi
 github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 
h1:Ghm4eQYC0nEPnSJdVkTrXpu9KtoVCSo1hg7mtI7G9KU=
 github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239/go.mod 
h1:Gdwt2ce0yfBxPvZrHkprdPPTTS3N5rwmLE8T22KBXlw=
 github.com/fatih/color v1.7.0/go.mod 
h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
-github.com/fatih/color v1.9.0/go.mod 
h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
 github.com/fatih/structs v1.1.0/go.mod 
h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
 github.com/form3tech-oss/jwt-go v3.2.2+incompatible 
h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk=
 github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod 
h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
@@ -235,18 +200,15 @@ github.com/go-co-op/gocron v0.1.1/go.mod 
h1:Y9PWlYqDChf2Nbgg7kfS+ZsXHDTZbMZYPEQ0
 github.com/go-errors/errors v1.0.1 
h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
 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-ldap/ldap v3.0.2+incompatible/go.mod 
h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc=
 github.com/go-ldap/ldap/v3 v3.1.3/go.mod 
h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8=
 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-logr/logr v0.1.0/go.mod 
h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas=
-github.com/go-ole/go-ole v1.2.1/go.mod 
h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
 github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI=
 github.com/go-ole/go-ole v1.2.4/go.mod 
h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
 github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod 
h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
@@ -266,7 +228,6 @@ github.com/go-sql-driver/mysql v1.4.1 
h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZp
 github.com/go-sql-driver/mysql v1.4.1/go.mod 
h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
 github.com/go-stack/stack v1.8.0/go.mod 
h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod 
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
-github.com/go-test/deep v1.0.2/go.mod 
h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod 
h1:56xuuqnHyryaerycW3BfssRdxQstACi0Epw/yC5E2xM=
 github.com/go-xorm/xorm v0.7.9/go.mod 
h1:XiVxrMMIhFkwSkh96BW7PACl7UhLtx2iJIHMdmjh5sQ=
 github.com/godbus/dbus/v5 v5.0.3/go.mod 
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
@@ -323,8 +284,6 @@ github.com/google/go-cmp v0.4.0/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.0/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
 github.com/google/go-cmp v0.5.5/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-querystring v0.0.0-20170111101155-53e6ce116135/go.mod 
h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
-github.com/google/go-querystring v1.0.0/go.mod 
h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
 github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod 
h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
 github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
 github.com/google/gofuzz v1.0.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -332,7 +291,6 @@ github.com/google/martian v2.1.0+incompatible/go.mod 
h1:9I4somxYTbIHy5NJKHRl3wXi
 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/renameio v0.1.0/go.mod 
h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2/go.mod 
h1:DavVbd41y+b7ukKDmlnPR4nGYmkWXR6vHUkjQNiHPBs=
 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 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y=
@@ -340,9 +298,7 @@ github.com/google/uuid v1.1.2/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+
 github.com/googleapis/gax-go/v2 v2.0.4/go.mod 
h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod 
h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod 
h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.2.0/go.mod 
h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
 github.com/gophercloud/gophercloud v0.1.0/go.mod 
h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
-github.com/gophercloud/gophercloud v0.3.0/go.mod 
h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod 
h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
 github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99 
h1:twflg0XRTjwKpxb/jFExr4HGq6on2dEOmnL6FV+fgPw=
 github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod 
h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
@@ -363,98 +319,56 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 
h1:Ovs26xHkKqVztRpIrF/92Bcuy
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod 
h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
 github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod 
h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
 github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod 
h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.14.6 
h1:8ERzHx8aj1Sc47mu9n/AksaKCSWrMchFtkdrS4BIj5o=
 github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod 
h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0 
h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
+github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod 
h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
 github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 
h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU=
 github.com/grpc-ecosystem/grpc-opentracing 
v0.0.0-20180507213350-8e809c8a8645/go.mod 
h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
-github.com/hashicorp/consul v1.8.0/go.mod 
h1:Gg9/UgAQ9rdY3CTvzQZ6g2jcIb7NlIfjI+0pvLk5D1A=
 github.com/hashicorp/consul/api v1.1.0/go.mod 
h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
 github.com/hashicorp/consul/api v1.3.0/go.mod 
h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/api v1.5.0/go.mod 
h1:LqwrLNW876eYSuUOo4ZLHBcdKc038txr/IMfbLPATa4=
 github.com/hashicorp/consul/sdk v0.1.1/go.mod 
h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
 github.com/hashicorp/consul/sdk v0.3.0/go.mod 
h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/consul/sdk v0.5.0/go.mod 
h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
 github.com/hashicorp/errwrap v1.0.0 
h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
 github.com/hashicorp/errwrap v1.0.0/go.mod 
h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-bexpr v0.1.2/go.mod 
h1:ANbpTX1oAql27TZkKVeW8p1w8NTdnyzPe/0qqPCKohU=
-github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de/go.mod 
h1:xIwEieBHERyEvaeKF/TcHh1Hu+lxPM+n2vT1+g9I4m4=
 github.com/hashicorp/go-cleanhttp v0.5.0/go.mod 
h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
 github.com/hashicorp/go-cleanhttp v0.5.1/go.mod 
h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
-github.com/hashicorp/go-connlimit v0.2.0/go.mod 
h1:OUj9FGL1tPIhl/2RCfzYHrIiWj+VVPGNyVPnUX8AqS0=
-github.com/hashicorp/go-discover v0.0.0-20200501174627-ad1e96bde088/go.mod 
h1:vZu6Opqf49xX5lsFAu7iFNewkcVF1sn/wyapZh5ytlg=
 github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod 
h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
-github.com/hashicorp/go-hclog v0.8.0/go.mod 
h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.9.1/go.mod 
h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.9.2/go.mod 
h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
 github.com/hashicorp/go-hclog v0.12.0/go.mod 
h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod 
h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-immutable-radix v1.1.0/go.mod 
h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
 github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod 
h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g=
-github.com/hashicorp/go-memdb v1.0.3/go.mod 
h1:LWQ8R70vPrS4OEY9k28D2z8/Zzyu34NVzeRibGAzHO0=
 github.com/hashicorp/go-msgpack v0.5.3/go.mod 
h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-msgpack v0.5.5/go.mod 
h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
 github.com/hashicorp/go-multierror v1.0.0/go.mod 
h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
-github.com/hashicorp/go-multierror v1.1.0/go.mod 
h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
 github.com/hashicorp/go-plugin v1.0.1/go.mod 
h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
-github.com/hashicorp/go-raftchunking v0.6.1/go.mod 
h1:cGlg3JtDy7qy6c/3Bu660Mic1JF+7lWqIwCFSb08fX0=
-github.com/hashicorp/go-raftchunking 
v0.6.3-0.20191002164813-7e9e8525653a/go.mod 
h1:xbXnmKqX9/+RhPkJ4zrEx4738HacP72aaUPlT2RZ4sU=
 github.com/hashicorp/go-retryablehttp v0.5.3/go.mod 
h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-retryablehttp v0.5.4/go.mod 
h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
-github.com/hashicorp/go-retryablehttp v0.6.2/go.mod 
h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY=
 github.com/hashicorp/go-rootcerts v1.0.0/go.mod 
h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-github.com/hashicorp/go-rootcerts v1.0.1/go.mod 
h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-rootcerts v1.0.2/go.mod 
h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
 github.com/hashicorp/go-sockaddr v1.0.0/go.mod 
h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
 github.com/hashicorp/go-sockaddr v1.0.2/go.mod 
h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A=
 github.com/hashicorp/go-syslog v1.0.0/go.mod 
h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
 github.com/hashicorp/go-uuid v1.0.0/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-uuid v1.0.1/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2-0.20191001231223-f32f5fe8d6a8/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-uuid v1.0.2/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-version v1.1.0/go.mod 
h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 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 
h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
 github.com/hashicorp/golang-lru v0.5.1/go.mod 
h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.3 
h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk=
-github.com/hashicorp/golang-lru v0.5.3/go.mod 
h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 github.com/hashicorp/hcl v1.0.0/go.mod 
h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/hil v0.0.0-20160711231837-1e86c6b523c5/go.mod 
h1:KHvg/R2/dPtaePb16oW4qIyzkMxXOL38xjRN64adsts=
 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/mdns v1.0.1/go.mod 
h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
 github.com/hashicorp/memberlist v0.1.3/go.mod 
h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/memberlist v0.2.0/go.mod 
h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
-github.com/hashicorp/memberlist v0.2.2/go.mod 
h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
-github.com/hashicorp/net-rpc-msgpackrpc 
v0.0.0-20151116020338-a14192a58a69/go.mod 
h1:/z+jUGRBlwVpUZfjute9jWaF6/HuhjuFQuL1YXzVD1Q=
-github.com/hashicorp/raft v1.1.1/go.mod 
h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
-github.com/hashicorp/raft v1.1.2-0.20191002163536-9c6bd3e3eb17/go.mod 
h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
-github.com/hashicorp/raft v1.1.2/go.mod 
h1:vPAJM8Asw6u8LxC3eJCUZmRP/E4QmUGE1R7g7k8sG/8=
-github.com/hashicorp/raft-boltdb v0.0.0-20171010151810-6e5ba93211ea/go.mod 
h1:pNv7Wc3ycL6F5oOWn+tPGo2gWD4a5X+yp/ntwdKLjRk=
 github.com/hashicorp/serf v0.8.2/go.mod 
h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/serf v0.9.0/go.mod 
h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU=
-github.com/hashicorp/serf v0.9.2/go.mod 
h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk=
-github.com/hashicorp/vault/api v1.0.4/go.mod 
h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q=
-github.com/hashicorp/vault/api v1.0.5-0.20191108163347-bdd38fca2cff/go.mod 
h1:Uf8LaHyrYsgVgHzO2tMZKhqRGlL3UJ6XaSwW2EA1Iqo=
-github.com/hashicorp/vault/sdk v0.1.13/go.mod 
h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M=
-github.com/hashicorp/vault/sdk v0.1.14-0.20191108161836-82f2b5571044/go.mod 
h1:PcekaFGiPJyHnFy+NZhP6ll650zEw51Ag7g/YEa+EOU=
 github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267 
h1:e1ok06zGrWJW91rzRroyl5nRNqraaBe4d5hiKcVZuHM=
 github.com/hashicorp/vault/sdk v0.1.14-0.20200519221838-e0cfd64bc267/go.mod 
h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10=
-github.com/hashicorp/vic v1.5.1-0.20190403131502-bbfe86ec9443/go.mod 
h1:bEpDU35nTu0ey1EXjwNwPjI9xErAsoOCmcMb9GKvyxo=
 github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod 
h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod 
h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
 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/imdario/mergo v0.3.5/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.6/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.9/go.mod 
h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 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/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod 
h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ=
-github.com/jackc/pgx v3.3.0+incompatible/go.mod 
h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
 github.com/jackc/pgx v3.6.0+incompatible/go.mod 
h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I=
-github.com/jarcoal/httpmock v0.0.0-20180424175123-9c70cfe4a1da/go.mod 
h1:ks+b9deReOc7jgqp+e7LuFiCBH6Rm5hL32cLcEAArb4=
 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 
h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4=
 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod 
h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag=
 github.com/jinzhu/copier v0.0.0-20190625015134-976e0346caa8 
h1:mGIXW/lubQ4B+3bXTLxcTMTjUNDqoF6T/HUW9LbFx9s=
@@ -464,8 +378,6 @@ github.com/jmespath/go-jmespath 
v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht
 github.com/jonboulle/clockwork v0.1.0/go.mod 
h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
 github.com/jonboulle/clockwork v0.2.2 
h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=
 github.com/jonboulle/clockwork v0.2.2/go.mod 
h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
-github.com/joyent/triton-go v0.0.0-20180628001255-830d2b111e62/go.mod 
h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA=
-github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f/go.mod 
h1:KDSfL7qe5ZfQqvlDMkVjCztbmcpp/c8M77vhQP8ZPvk=
 github.com/jpillora/backoff v1.0.0/go.mod 
h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
 github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod 
h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.5/go.mod 
h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -489,7 +401,6 @@ github.com/kisielk/errcheck v1.2.0/go.mod 
h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL
 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/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.2/go.mod 
h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod 
h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod 
h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
 github.com/kr/pretty v0.1.0/go.mod 
h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
@@ -511,8 +422,6 @@ github.com/lib/pq v1.0.0/go.mod 
h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 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/linode/linodego v0.7.1/go.mod 
h1:ga11n3ivecUrPCHN0rANxKmfWBJVkOXfLMZinAbj2sY=
-github.com/linode/linodego v0.10.0/go.mod 
h1:cziNP7pbvE3mXIPneHj0oRY8L1WtGEIKlZ8LANE4eXA=
 github.com/lyft/protoc-gen-validate v0.0.13/go.mod 
h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
 github.com/magiconair/properties v1.8.0/go.mod 
h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/magiconair/properties v1.8.1/go.mod 
h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -521,46 +430,34 @@ github.com/magiconair/properties v1.8.5/go.mod 
h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPK
 github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod 
h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mattn/go-colorable v0.0.9/go.mod 
h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-colorable v0.1.4/go.mod 
h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-github.com/mattn/go-colorable v0.1.6/go.mod 
h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-colorable v0.1.7 
h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
 github.com/mattn/go-colorable v0.1.7/go.mod 
h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-isatty v0.0.3/go.mod 
h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-isatty v0.0.4/go.mod 
h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-isatty v0.0.8/go.mod 
h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 github.com/mattn/go-isatty v0.0.10/go.mod 
h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
-github.com/mattn/go-isatty v0.0.11/go.mod 
h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
 github.com/mattn/go-isatty v0.0.12 
h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 github.com/mattn/go-isatty v0.0.12/go.mod 
h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 github.com/mattn/go-runewidth v0.0.2/go.mod 
h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-runewidth v0.0.3/go.mod 
h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
 github.com/mattn/go-sqlite3 v1.10.0/go.mod 
h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 github.com/mattn/go-sqlite3 v2.0.1+incompatible/go.mod 
h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 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.0.14/go.mod 
h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/miekg/dns v1.1.26/go.mod 
h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
-github.com/miekg/dns v1.1.27/go.mod 
h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
 github.com/mitchellh/cli v1.0.0/go.mod 
h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/cli v1.1.0/go.mod 
h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
 github.com/mitchellh/copystructure v1.0.0/go.mod 
h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
 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 
v0.0.0-20171004221916-a61a99592b77/go.mod 
h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
 github.com/mitchellh/go-testing-interface v1.0.0/go.mod 
h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.14.0/go.mod 
h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
 github.com/mitchellh/go-wordwrap v1.0.0/go.mod 
h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
 github.com/mitchellh/gox v0.4.0/go.mod 
h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod 
h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
-github.com/mitchellh/hashstructure v1.0.0/go.mod 
h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
 github.com/mitchellh/iochan v1.0.0/go.mod 
h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
 github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod 
h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
 github.com/mitchellh/mapstructure v1.1.2/go.mod 
h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.2.3/go.mod 
h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/mitchellh/mapstructure v1.4.1 
h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag=
 github.com/mitchellh/mapstructure v1.4.1/go.mod 
h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
-github.com/mitchellh/pointerstructure v1.0.0/go.mod 
h1:k4XwG94++jLVsSiTxo7qdIfXA9pj9EAeo0QsNNJOLZ8=
 github.com/mitchellh/reflectwalk v1.0.0/go.mod 
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/mitchellh/reflectwalk v1.0.1/go.mod 
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd 
h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -583,14 +480,12 @@ github.com/nats-io/nats.go v1.9.1/go.mod 
h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE
 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/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2/go.mod 
h1:TLb2Sg7HQcgGdloNxkrmtgDNR9uVYF3lfdFIN4Ro6Sk=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e 
h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod 
h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
 github.com/oklog/oklog v0.3.2/go.mod 
h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
 github.com/oklog/run v1.0.0/go.mod 
h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
 github.com/oklog/ulid v1.3.1/go.mod 
h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
 github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod 
h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/olekukonko/tablewriter v0.0.0-20180130162743-b8a9be070da4/go.mod 
h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 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=
@@ -614,7 +509,6 @@ github.com/openzipkin/zipkin-go v0.1.6/go.mod 
h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJ
 github.com/openzipkin/zipkin-go v0.2.1/go.mod 
h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
 github.com/openzipkin/zipkin-go v0.2.2 
h1:nY8Hti+WKaP0cRsSeQ026wU03QsM762XBeCXBb9NAWI=
 github.com/openzipkin/zipkin-go v0.2.2/go.mod 
h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c/go.mod 
h1:otzZQXgoO96RTzDB/Hycg0qZcXZsWJGJRSXbmEIJ+4M=
 github.com/pact-foundation/pact-go v1.0.4/go.mod 
h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod 
h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pascaldekloe/goe v0.1.0/go.mod 
h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -653,8 +547,6 @@ github.com/pmezard/go-difflib 
v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77
 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/posener/complete v1.1.1/go.mod 
h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
-github.com/posener/complete v1.2.3/go.mod 
h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
-github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod 
h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
 github.com/prometheus/client_golang v0.9.1/go.mod 
h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 github.com/prometheus/client_golang v0.9.2/go.mod 
h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
 github.com/prometheus/client_golang 
v0.9.3-0.20190127221311-3c4408c8b829/go.mod 
h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
@@ -691,39 +583,28 @@ github.com/prometheus/procfs v0.1.3/go.mod 
h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O
 github.com/prometheus/procfs v0.2.0 
h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4=
 github.com/prometheus/procfs v0.2.0/go.mod 
h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
 github.com/prometheus/tsdb v0.7.1/go.mod 
h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
-github.com/rboyer/safeio v0.2.1/go.mod 
h1:Cq/cEPK+YXFn622lsQ0K4KsPZSPtaptHHEldsy7Fmig=
 github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod 
h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
 github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237/go.mod 
h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
-github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03/go.mod 
h1:gRAiPF5C5Nd0eyyRdqIu9qTiFSoZzpTq727b5B8fkkU=
 github.com/robertkrimen/godocdown v0.0.0-20130622164427-0bfa04905481/go.mod 
h1:C9WhFzY47SzYBIvzFqSvHIR6ROgDo4TtdTuRaOMjF/s=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod 
h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod 
h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.3.0/go.mod 
h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rs/zerolog v1.4.0/go.mod 
h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU=
-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/ryanuber/columnize v2.1.0+incompatible/go.mod 
h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
 github.com/ryanuber/go-glob v1.0.0/go.mod 
h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc=
 github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod 
h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
-github.com/satori/go.uuid v1.2.0/go.mod 
h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b 
h1:gQZ0qzfKHQIybLANtM3mBXNUtOfsCFXeTsnBqCsx1KM=
 github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod 
h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
-github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod 
h1:7zjs06qF79/FKAJpBvFx3P8Ww4UTIMAe+lpNXDHziac=
-github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod 
h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM=
 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod 
h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
 github.com/shima-park/agollo v1.2.6 
h1:5COt4poF4kWPLE7iean0hsnKZPrDQz9nRLqvU9Qwmi8=
 github.com/shima-park/agollo v1.2.6/go.mod 
h1:pbHN4SgHDd84eTKyhCvG2LjQ+6mcZq/fEkElxL+oRYk=
-github.com/shirou/gopsutil v0.0.0-20181107111621-48177ef5f880/go.mod 
h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil 
v3.20.11-0.20201116082039-2fb5da2f2449+incompatible/go.mod 
h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
 github.com/shirou/gopsutil v3.20.11+incompatible 
h1:LJr4ZQK4mPpIV5gOa4jCOKOGb4ty4DZO54I4FGqIpto=
 github.com/shirou/gopsutil v3.20.11+incompatible/go.mod 
h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
-github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod 
h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc=
 github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod 
h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod 
h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/sirupsen/logrus v1.0.6/go.mod 
h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
 github.com/sirupsen/logrus v1.2.0/go.mod 
h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.1/go.mod 
h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
 github.com/sirupsen/logrus v1.4.2/go.mod 
h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod 
h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.7.0 
h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
@@ -733,20 +614,17 @@ github.com/smartystreets/assertions 
v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1
 github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod 
h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 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/softlayer/softlayer-go v0.0.0-20180806151055-260589d94c7d/go.mod 
h1:Cw4GTlQccdRGSEf6KiMju767x0NEHE0YIVPJSaXjlsw=
 github.com/soheilhy/cmux v0.1.4/go.mod 
h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
 github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5 
h1:GJTW+uNMIV1RKwox+T4aN0/sQlYRg78uHZf2H0aBcDw=
 github.com/soheilhy/cmux v0.1.5-0.20210205191134-5ec6847320e5/go.mod 
h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
 github.com/sony/gobreaker v0.4.1/go.mod 
h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod 
h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/afero v1.1.2/go.mod 
h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/afero v1.2.1/go.mod 
h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
 github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
 github.com/spf13/afero v1.2.2/go.mod 
h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
 github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
 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/cobra v1.1.1/go.mod 
h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
 github.com/spf13/jwalterweatherman v1.0.0 
h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
 github.com/spf13/jwalterweatherman v1.0.0/go.mod 
h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
@@ -755,7 +633,6 @@ github.com/spf13/pflag v1.0.1/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn
 github.com/spf13/pflag v1.0.3/go.mod 
h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.3.2/go.mod 
h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
 github.com/spf13/viper v1.4.0/go.mod 
h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
 github.com/spf13/viper v1.7.0/go.mod 
h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
@@ -780,8 +657,6 @@ github.com/subosito/gotenv v1.2.0 
h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s
 github.com/subosito/gotenv v1.2.0/go.mod 
h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
 github.com/tebeka/strftime v0.1.3 
h1:5HQXOqWKYRFfNyBMNVc9z5+QzuBtIXy03psIhtdJYto=
 github.com/tebeka/strftime v0.1.3/go.mod 
h1:7wJm3dZlpr4l/oVK0t1HYIc4rMzQ2XJlOMIUJUJH6XQ=
-github.com/tencentcloud/tencentcloud-sdk-go v3.0.83+incompatible/go.mod 
h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4=
-github.com/tent/http-link-go v0.0.0-20130702225549-ac974c61c2f9/go.mod 
h1:RHkNRtSLfOK7qBTHaeSX1D6BNpI3qw7NTxsmNr4RvN8=
 github.com/tevid/gohamcrest v1.1.1 
h1:ou+xSqlIw1xfGTg1uq1nif/htZ2S3EzRqLm2BP+tYU0=
 github.com/tevid/gohamcrest v1.1.1/go.mod 
h1:3UvtWlqm8j5JbwYZh80D/PVBt0mJ1eJiYgZMibh0H/k=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod 
h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
@@ -802,14 +677,12 @@ github.com/ugorji/go v1.1.4/go.mod 
h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr
 github.com/ugorji/go v1.1.7/go.mod 
h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
 github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E=
 github.com/ugorji/go v1.2.6/go.mod 
h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod 
h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
 github.com/ugorji/go/codec v1.1.7/go.mod 
h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
 github.com/ugorji/go/codec v1.2.6 
h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ=
 github.com/ugorji/go/codec v1.2.6/go.mod 
h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
 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/urfave/cli/v2 v2.2.0/go.mod 
h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ=
-github.com/vmware/govmomi v0.18.0/go.mod 
h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 
h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
 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=
@@ -864,16 +737,13 @@ go.uber.org/zap v1.16.0 
h1:uFRZXykJGK9lLY4HtgSw44DnIcAM+kRBP7x5m+NpAOM=
 go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod 
h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod 
h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod 
h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-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-20190325154230-a5d413f7728c/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod 
h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
 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-20190701094942-4def268fd1a4/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod 
h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -885,7 +755,6 @@ golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod 
h1:CJ0aWSM057203Lf6IL
 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-20200331195152-e8c3332aa8e5/go.mod 
h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
 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=
@@ -896,7 +765,6 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod 
h1:6SW0HCj/g11FgYtHl
 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-20200302205851-738671d3881b 
h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
 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=
@@ -909,7 +777,6 @@ golang.org/x/mod v0.2.0/go.mod 
h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod 
h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180611182652-db08ff08e862/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=
@@ -928,9 +795,7 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod 
h1:HSz+uSET+XFnRR8LxR
 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-20190724013045-ca1201d0de80/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -963,7 +828,6 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod 
h1:STP8DvDyc/dI5b8T5h
 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-20190129075346-302c3dd5f1cc/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -975,16 +839,11 @@ golang.org/x/sys 
v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190508220229-2d0786266e9c/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190523142557-0e01d883c5c5/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-20190813064441-fde4db37ae7a/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -993,7 +852,6 @@ golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod 
h1:h1NjWce9XRLGQEsW7w
 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-20200122134326-e047566fdf82/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/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=
@@ -1010,7 +868,6 @@ golang.org/x/term 
v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn
 golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/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.1-0.20181227161524-e6919f6577db/go.mod 
h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -1039,7 +896,6 @@ golang.org/x/tools 
v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgw
 golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod 
h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod 
h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/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=
@@ -1047,10 +903,7 @@ golang.org/x/tools 
v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtn
 golang.org/x/tools v0.0.0-20191107010934-f79515f33823/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod 
h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/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-20200207183749-b753a1ba74fa/go.mod 
h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
@@ -1071,7 +924,6 @@ google.golang.org/api v0.7.0/go.mod 
h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E
 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/appengine v1.1.0/go.mod 
h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.2.0/go.mod 
h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.4.0/go.mod 
h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1090,7 +942,6 @@ google.golang.org/genproto 
v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98
 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-20191216164720-4f79533eabd1/go.mod 
h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod 
h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod 
h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod 
h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
@@ -1107,13 +958,13 @@ google.golang.org/grpc v1.21.0/go.mod 
h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ij
 google.golang.org/grpc v1.21.1/go.mod 
h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 google.golang.org/grpc v1.22.0/go.mod 
h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
 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.29.1/go.mod 
h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
 google.golang.org/grpc v1.32.0/go.mod 
h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
+google.golang.org/grpc v1.33.1/go.mod 
h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
 google.golang.org/grpc v1.36.0/go.mod 
h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
 google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0=
 google.golang.org/grpc v1.38.0/go.mod 
h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
@@ -1130,9 +981,7 @@ google.golang.org/protobuf v1.25.0/go.mod 
h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba
 google.golang.org/protobuf v1.26.0-rc.1/go.mod 
h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 google.golang.org/protobuf v1.26.0 
h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
 google.golang.org/protobuf v1.26.0/go.mod 
h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod 
h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod 
h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
-gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod 
h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw=
 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=
@@ -1142,7 +991,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod 
h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS
 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/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod 
h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
 gopkg.in/go-playground/assert.v1 v1.2.1 
h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM=
 gopkg.in/go-playground/assert.v1 v1.2.1/go.mod 
h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
@@ -1152,10 +1000,7 @@ gopkg.in/ini.v1 v1.51.0 
h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno=
 gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/natefinch/lumberjack.v2 v2.0.0 
h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
 gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod 
h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
-gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc=
 gopkg.in/resty.v1 v1.12.0/go.mod 
h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
-gopkg.in/square/go-jose.v2 v2.3.1/go.mod 
h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
-gopkg.in/square/go-jose.v2 v2.4.1/go.mod 
h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
 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=
@@ -1196,7 +1041,6 @@ k8s.io/kube-openapi 
v0.0.0-20190816220812-743ec37842bf/go.mod h1:1TqjTSzOxsLGIKf
 k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod 
h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
 k8s.io/utils v0.0.0-20190801114015-581e00157fb1 
h1:+ySTxfHnfzZb9ys375PXNlLhkJPLKgHajBU0N62BDvE=
 k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod 
h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod 
h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
 rsc.io/binaryregexp v0.2.0/go.mod 
h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod 
h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
 sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
diff --git a/logger/go-client/cmd/client.go b/logger/go-client/cmd/client.go
index 7d2bb06..b1815bf 100755
--- a/logger/go-client/cmd/client.go
+++ b/logger/go-client/cmd/client.go
@@ -26,9 +26,9 @@ import (
 import (
        _ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
        _ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+       "dubbo.apache.org/dubbo-go/v3/common/logger"
        _ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
        "dubbo.apache.org/dubbo-go/v3/config"
-       "dubbo.apache.org/dubbo-go/v3/common/logger"
        _ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
        _ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo"
        _ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
@@ -53,7 +53,7 @@ func main() {
        config.Load()
        time.Sleep(3 * time.Second)
 
-       for i := 0;i < 1000000; i ++ {
+       for i := 0; i < 1000000; i++ {
                test()
        }
 
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 89a50bc..c672b48 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -55,7 +55,9 @@ array+=("general/dubbo3/codec-extension/go-server")
 # general-grpc
 array+=("general/grpc/go-server")
 
-array+=("generic/go-server")
+# generic invocation
+array+=("generic/default/go-server")
+#array+=("generic/protobufjson/go-server")
 
 # group
 array+=("group/go-server-group-a")

Reply via email to