go.etcd.io/etcd@v3.3.27+incompatible/functional/rpcpb/rpc.pb.go (about)

     1  // Code generated by protoc-gen-gogo. DO NOT EDIT.
     2  // source: rpcpb/rpc.proto
     3  
     4  /*
     5  	Package rpcpb is a generated protocol buffer package.
     6  
     7  	It is generated from these files:
     8  		rpcpb/rpc.proto
     9  
    10  	It has these top-level messages:
    11  		Request
    12  		SnapshotInfo
    13  		Response
    14  		Member
    15  		Tester
    16  		Etcd
    17  */
    18  package rpcpb
    19  
    20  import proto "github.com/golang/protobuf/proto"
    21  import fmt "fmt"
    22  import math "math"
    23  import _ "github.com/gogo/protobuf/gogoproto"
    24  
    25  import context "golang.org/x/net/context"
    26  import grpc "google.golang.org/grpc"
    27  
    28  import io "io"
    29  
    30  // Reference imports to suppress errors if they are not otherwise used.
    31  var _ = proto.Marshal
    32  var _ = fmt.Errorf
    33  var _ = math.Inf
    34  
    35  // This is a compile-time assertion to ensure that this generated file
    36  // is compatible with the proto package it is being compiled against.
    37  // A compilation error at this line likely means your copy of the
    38  // proto package needs to be updated.
    39  const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
    40  
    41  type Operation int32
    42  
    43  const (
    44  	// NOT_STARTED is the agent status before etcd first start.
    45  	Operation_NOT_STARTED Operation = 0
    46  	// INITIAL_START_ETCD is only called to start etcd, the very first time.
    47  	Operation_INITIAL_START_ETCD Operation = 10
    48  	// RESTART_ETCD is sent to restart killed etcd.
    49  	Operation_RESTART_ETCD Operation = 11
    50  	// SIGTERM_ETCD pauses etcd process while keeping data directories
    51  	// and previous etcd configurations.
    52  	Operation_SIGTERM_ETCD Operation = 20
    53  	// SIGQUIT_ETCD_AND_REMOVE_DATA kills etcd process and removes all data
    54  	// directories to simulate destroying the whole machine.
    55  	Operation_SIGQUIT_ETCD_AND_REMOVE_DATA Operation = 21
    56  	// SAVE_SNAPSHOT is sent to trigger local member to download its snapshot
    57  	// onto its local disk with the specified path from tester.
    58  	Operation_SAVE_SNAPSHOT Operation = 30
    59  	// RESTORE_RESTART_FROM_SNAPSHOT is sent to trigger local member to
    60  	// restore a cluster from existing snapshot from disk, and restart
    61  	// an etcd instance from recovered data.
    62  	Operation_RESTORE_RESTART_FROM_SNAPSHOT Operation = 31
    63  	// RESTART_FROM_SNAPSHOT is sent to trigger local member to restart
    64  	// and join an existing cluster that has been recovered from a snapshot.
    65  	// Local member joins this cluster with fresh data.
    66  	Operation_RESTART_FROM_SNAPSHOT Operation = 32
    67  	// SIGQUIT_ETCD_AND_ARCHIVE_DATA is sent when consistency check failed,
    68  	// thus need to archive etcd data directories.
    69  	Operation_SIGQUIT_ETCD_AND_ARCHIVE_DATA Operation = 40
    70  	// SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT destroys etcd process,
    71  	// etcd data, and agent server.
    72  	Operation_SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT Operation = 41
    73  	// BLACKHOLE_PEER_PORT_TX_RX drops all outgoing/incoming packets from/to
    74  	// the peer port on target member's peer port.
    75  	Operation_BLACKHOLE_PEER_PORT_TX_RX Operation = 100
    76  	// UNBLACKHOLE_PEER_PORT_TX_RX removes outgoing/incoming packet dropping.
    77  	Operation_UNBLACKHOLE_PEER_PORT_TX_RX Operation = 101
    78  	// DELAY_PEER_PORT_TX_RX delays all outgoing/incoming packets from/to
    79  	// the peer port on target member's peer port.
    80  	Operation_DELAY_PEER_PORT_TX_RX Operation = 200
    81  	// UNDELAY_PEER_PORT_TX_RX removes all outgoing/incoming delays.
    82  	Operation_UNDELAY_PEER_PORT_TX_RX Operation = 201
    83  )
    84  
    85  var Operation_name = map[int32]string{
    86  	0:   "NOT_STARTED",
    87  	10:  "INITIAL_START_ETCD",
    88  	11:  "RESTART_ETCD",
    89  	20:  "SIGTERM_ETCD",
    90  	21:  "SIGQUIT_ETCD_AND_REMOVE_DATA",
    91  	30:  "SAVE_SNAPSHOT",
    92  	31:  "RESTORE_RESTART_FROM_SNAPSHOT",
    93  	32:  "RESTART_FROM_SNAPSHOT",
    94  	40:  "SIGQUIT_ETCD_AND_ARCHIVE_DATA",
    95  	41:  "SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT",
    96  	100: "BLACKHOLE_PEER_PORT_TX_RX",
    97  	101: "UNBLACKHOLE_PEER_PORT_TX_RX",
    98  	200: "DELAY_PEER_PORT_TX_RX",
    99  	201: "UNDELAY_PEER_PORT_TX_RX",
   100  }
   101  var Operation_value = map[string]int32{
   102  	"NOT_STARTED":                                 0,
   103  	"INITIAL_START_ETCD":                          10,
   104  	"RESTART_ETCD":                                11,
   105  	"SIGTERM_ETCD":                                20,
   106  	"SIGQUIT_ETCD_AND_REMOVE_DATA":                21,
   107  	"SAVE_SNAPSHOT":                               30,
   108  	"RESTORE_RESTART_FROM_SNAPSHOT":               31,
   109  	"RESTART_FROM_SNAPSHOT":                       32,
   110  	"SIGQUIT_ETCD_AND_ARCHIVE_DATA":               40,
   111  	"SIGQUIT_ETCD_AND_REMOVE_DATA_AND_STOP_AGENT": 41,
   112  	"BLACKHOLE_PEER_PORT_TX_RX":                   100,
   113  	"UNBLACKHOLE_PEER_PORT_TX_RX":                 101,
   114  	"DELAY_PEER_PORT_TX_RX":                       200,
   115  	"UNDELAY_PEER_PORT_TX_RX":                     201,
   116  }
   117  
   118  func (x Operation) String() string {
   119  	return proto.EnumName(Operation_name, int32(x))
   120  }
   121  func (Operation) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{0} }
   122  
   123  // Case defines various system faults or test case in distributed systems,
   124  // in order to verify correct behavior of etcd servers and clients.
   125  type Case int32
   126  
   127  const (
   128  	// SIGTERM_ONE_FOLLOWER stops a randomly chosen follower (non-leader)
   129  	// but does not delete its data directories on disk for next restart.
   130  	// It waits "delay-ms" before recovering this failure.
   131  	// The expected behavior is that the follower comes back online
   132  	// and rejoins the cluster, and then each member continues to process
   133  	// client requests ('Put' request that requires Raft consensus).
   134  	Case_SIGTERM_ONE_FOLLOWER Case = 0
   135  	// SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT stops a randomly chosen
   136  	// follower but does not delete its data directories on disk for next
   137  	// restart. And waits until most up-to-date node (leader) applies the
   138  	// snapshot count of entries since the stop operation.
   139  	// The expected behavior is that the follower comes back online and
   140  	// rejoins the cluster, and then active leader sends snapshot
   141  	// to the follower to force it to follow the leader's log.
   142  	// As always, after recovery, each member must be able to process
   143  	// client requests.
   144  	Case_SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 1
   145  	// SIGTERM_LEADER stops the active leader node but does not delete its
   146  	// data directories on disk for next restart. Then it waits "delay-ms"
   147  	// before recovering this failure, in order to trigger election timeouts.
   148  	// The expected behavior is that a new leader gets elected, and the
   149  	// old leader comes back online and rejoins the cluster as a follower.
   150  	// As always, after recovery, each member must be able to process
   151  	// client requests.
   152  	Case_SIGTERM_LEADER Case = 2
   153  	// SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT stops the active leader node
   154  	// but does not delete its data directories on disk for next restart.
   155  	// And waits until most up-to-date node ("new" leader) applies the
   156  	// snapshot count of entries since the stop operation.
   157  	// The expected behavior is that cluster elects a new leader, and the
   158  	// old leader comes back online and rejoins the cluster as a follower.
   159  	// And it receives the snapshot from the new leader to overwrite its
   160  	// store. As always, after recovery, each member must be able to
   161  	// process client requests.
   162  	Case_SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 3
   163  	// SIGTERM_QUORUM stops majority number of nodes to make the whole cluster
   164  	// inoperable but does not delete data directories on stopped nodes
   165  	// for next restart. And it waits "delay-ms" before recovering failure.
   166  	// The expected behavior is that nodes come back online, thus cluster
   167  	// comes back operative as well. As always, after recovery, each member
   168  	// must be able to process client requests.
   169  	Case_SIGTERM_QUORUM Case = 4
   170  	// SIGTERM_ALL stops the whole cluster but does not delete data directories
   171  	// on disk for next restart. And it waits "delay-ms" before  recovering
   172  	// this failure.
   173  	// The expected behavior is that nodes come back online, thus cluster
   174  	// comes back operative as well. As always, after recovery, each member
   175  	// must be able to process client requests.
   176  	Case_SIGTERM_ALL Case = 5
   177  	// SIGQUIT_AND_REMOVE_ONE_FOLLOWER stops a randomly chosen follower
   178  	// (non-leader), deletes its data directories on disk, and removes
   179  	// this member from cluster (membership reconfiguration). On recovery,
   180  	// tester adds a new member, and this member joins the existing cluster
   181  	// with fresh data. It waits "delay-ms" before recovering this
   182  	// failure. This simulates destroying one follower machine, where operator
   183  	// needs to add a new member from a fresh machine.
   184  	// The expected behavior is that a new member joins the existing cluster,
   185  	// and then each member continues to process client requests.
   186  	Case_SIGQUIT_AND_REMOVE_ONE_FOLLOWER Case = 10
   187  	// SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT stops a randomly
   188  	// chosen follower, deletes its data directories on disk, and removes
   189  	// this member from cluster (membership reconfiguration). On recovery,
   190  	// tester adds a new member, and this member joins the existing cluster
   191  	// restart. On member remove, cluster waits until most up-to-date node
   192  	// (leader) applies the snapshot count of entries since the stop operation.
   193  	// This simulates destroying a leader machine, where operator needs to add
   194  	// a new member from a fresh machine.
   195  	// The expected behavior is that a new member joins the existing cluster,
   196  	// and receives a snapshot from the active leader. As always, after
   197  	// recovery, each member must be able to process client requests.
   198  	Case_SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 11
   199  	// SIGQUIT_AND_REMOVE_LEADER stops the active leader node, deletes its
   200  	// data directories on disk, and removes this member from cluster.
   201  	// On recovery, tester adds a new member, and this member joins the
   202  	// existing cluster with fresh data. It waits "delay-ms" before
   203  	// recovering this failure. This simulates destroying a leader machine,
   204  	// where operator needs to add a new member from a fresh machine.
   205  	// The expected behavior is that a new member joins the existing cluster,
   206  	// and then each member continues to process client requests.
   207  	Case_SIGQUIT_AND_REMOVE_LEADER Case = 12
   208  	// SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT stops the active leader,
   209  	// deletes its data directories on disk, and removes this member from
   210  	// cluster (membership reconfiguration). On recovery, tester adds a new
   211  	// member, and this member joins the existing cluster restart. On member
   212  	// remove, cluster waits until most up-to-date node (new leader) applies
   213  	// the snapshot count of entries since the stop operation. This simulates
   214  	// destroying a leader machine, where operator needs to add a new member
   215  	// from a fresh machine.
   216  	// The expected behavior is that on member remove, cluster elects a new
   217  	// leader, and a new member joins the existing cluster and receives a
   218  	// snapshot from the newly elected leader. As always, after recovery, each
   219  	// member must be able to process client requests.
   220  	Case_SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 13
   221  	// SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH first
   222  	// stops majority number of nodes, deletes data directories on those quorum
   223  	// nodes, to make the whole cluster inoperable. Now that quorum and their
   224  	// data are totally destroyed, cluster cannot even remove unavailable nodes
   225  	// (e.g. 2 out of 3 are lost, so no leader can be elected).
   226  	// Let's assume 3-node cluster of node A, B, and C. One day, node A and B
   227  	// are destroyed and all their data are gone. The only viable solution is
   228  	// to recover from C's latest snapshot.
   229  	//
   230  	// To simulate:
   231  	//  1. Assume node C is the current leader with most up-to-date data.
   232  	//  2. Download snapshot from node C, before destroying node A and B.
   233  	//  3. Destroy node A and B, and make the whole cluster inoperable.
   234  	//  4. Now node C cannot operate either.
   235  	//  5. SIGTERM node C and remove its data directories.
   236  	//  6. Restore a new seed member from node C's latest snapshot file.
   237  	//  7. Add another member to establish 2-node cluster.
   238  	//  8. Add another member to establish 3-node cluster.
   239  	//  9. Add more if any.
   240  	//
   241  	// The expected behavior is that etcd successfully recovers from such
   242  	// disastrous situation as only 1-node survives out of 3-node cluster,
   243  	// new members joins the existing cluster, and previous data from snapshot
   244  	// are still preserved after recovery process. As always, after recovery,
   245  	// each member must be able to process client requests.
   246  	Case_SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH Case = 14
   247  	// BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER drops all outgoing/incoming
   248  	// packets from/to the peer port on a randomly chosen follower
   249  	// (non-leader), and waits for "delay-ms" until recovery.
   250  	// The expected behavior is that once dropping operation is undone,
   251  	// each member must be able to process client requests.
   252  	Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER Case = 100
   253  	// BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT drops
   254  	// all outgoing/incoming packets from/to the peer port on a randomly
   255  	// chosen follower (non-leader), and waits for most up-to-date node
   256  	// (leader) applies the snapshot count of entries since the blackhole
   257  	// operation.
   258  	// The expected behavior is that once packet drop operation is undone,
   259  	// the slow follower tries to catch up, possibly receiving the snapshot
   260  	// from the active leader. As always, after recovery, each member must
   261  	// be able to process client requests.
   262  	Case_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 101
   263  	// BLACKHOLE_PEER_PORT_TX_RX_LEADER drops all outgoing/incoming packets
   264  	// from/to the peer port on the active leader (isolated), and waits for
   265  	// "delay-ms" until recovery, in order to trigger election timeout.
   266  	// The expected behavior is that after election timeout, a new leader gets
   267  	// elected, and once dropping operation is undone, the old leader comes
   268  	// back and rejoins the cluster as a follower. As always, after recovery,
   269  	// each member must be able to process client requests.
   270  	Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER Case = 102
   271  	// BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT drops all
   272  	// outgoing/incoming packets from/to the peer port on the active leader,
   273  	// and waits for most up-to-date node (leader) applies the snapshot
   274  	// count of entries since the blackhole operation.
   275  	// The expected behavior is that cluster elects a new leader, and once
   276  	// dropping operation is undone, the old leader comes back and rejoins
   277  	// the cluster as a follower. The slow follower tries to catch up, likely
   278  	// receiving the snapshot from the new active leader. As always, after
   279  	// recovery, each member must be able to process client requests.
   280  	Case_BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 103
   281  	// BLACKHOLE_PEER_PORT_TX_RX_QUORUM drops all outgoing/incoming packets
   282  	// from/to the peer ports on majority nodes of cluster, thus losing its
   283  	// leader and cluster being inoperable. And it waits for "delay-ms"
   284  	// until recovery.
   285  	// The expected behavior is that once packet drop operation is undone,
   286  	// nodes come back online, thus cluster comes back operative. As always,
   287  	// after recovery, each member must be able to process client requests.
   288  	Case_BLACKHOLE_PEER_PORT_TX_RX_QUORUM Case = 104
   289  	// BLACKHOLE_PEER_PORT_TX_RX_ALL drops all outgoing/incoming packets
   290  	// from/to the peer ports on all nodes, thus making cluster totally
   291  	// inoperable. It waits for "delay-ms" until recovery.
   292  	// The expected behavior is that once packet drop operation is undone,
   293  	// nodes come back online, thus cluster comes back operative. As always,
   294  	// after recovery, each member must be able to process client requests.
   295  	Case_BLACKHOLE_PEER_PORT_TX_RX_ALL Case = 105
   296  	// DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER delays outgoing/incoming packets
   297  	// from/to the peer port on a randomly chosen follower (non-leader).
   298  	// It waits for "delay-ms" until recovery.
   299  	// The expected behavior is that once packet delay operation is undone,
   300  	// the follower comes back and tries to catch up with latest changes from
   301  	// cluster. And as always, after recovery, each member must be able to
   302  	// process client requests.
   303  	Case_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER Case = 200
   304  	// RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER delays outgoing/incoming
   305  	// packets from/to the peer port on a randomly chosen follower
   306  	// (non-leader) with a randomized time duration (thus isolated). It
   307  	// waits for "delay-ms" until recovery.
   308  	// The expected behavior is that once packet delay operation is undone,
   309  	// each member must be able to process client requests.
   310  	Case_RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER Case = 201
   311  	// DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT delays
   312  	// outgoing/incoming packets from/to the peer port on a randomly chosen
   313  	// follower (non-leader), and waits for most up-to-date node (leader)
   314  	// applies the snapshot count of entries since the delay operation.
   315  	// The expected behavior is that the delayed follower gets isolated
   316  	// and behind the current active leader, and once delay operation is undone,
   317  	// the slow follower comes back and catches up possibly receiving snapshot
   318  	// from the active leader. As always, after recovery, each member must be
   319  	// able to process client requests.
   320  	Case_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 202
   321  	// RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT delays
   322  	// outgoing/incoming packets from/to the peer port on a randomly chosen
   323  	// follower (non-leader) with a randomized time duration, and waits for
   324  	// most up-to-date node (leader) applies the snapshot count of entries
   325  	// since the delay operation.
   326  	// The expected behavior is that the delayed follower gets isolated
   327  	// and behind the current active leader, and once delay operation is undone,
   328  	// the slow follower comes back and catches up, possibly receiving a
   329  	// snapshot from the active leader. As always, after recovery, each member
   330  	// must be able to process client requests.
   331  	Case_RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT Case = 203
   332  	// DELAY_PEER_PORT_TX_RX_LEADER delays outgoing/incoming packets from/to
   333  	// the peer port on the active leader. And waits for "delay-ms" until
   334  	// recovery.
   335  	// The expected behavior is that cluster may elect a new leader, and
   336  	// once packet delay operation is undone, the (old) leader comes back
   337  	// and tries to catch up with latest changes from cluster. As always,
   338  	// after recovery, each member must be able to process client requests.
   339  	Case_DELAY_PEER_PORT_TX_RX_LEADER Case = 204
   340  	// RANDOM_DELAY_PEER_PORT_TX_RX_LEADER delays outgoing/incoming packets
   341  	// from/to the peer port on the active leader with a randomized time
   342  	// duration. And waits for "delay-ms" until recovery.
   343  	// The expected behavior is that cluster may elect a new leader, and
   344  	// once packet delay operation is undone, the (old) leader comes back
   345  	// and tries to catch up with latest changes from cluster. As always,
   346  	// after recovery, each member must be able to process client requests.
   347  	Case_RANDOM_DELAY_PEER_PORT_TX_RX_LEADER Case = 205
   348  	// DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT delays
   349  	// outgoing/incoming packets from/to the peer port on the active leader,
   350  	// and waits for most up-to-date node (current or new leader) applies the
   351  	// snapshot count of entries since the delay operation.
   352  	// The expected behavior is that cluster may elect a new leader, and
   353  	// the old leader gets isolated and behind the current active leader,
   354  	// and once delay operation is undone, the slow follower comes back
   355  	// and catches up, likely receiving a snapshot from the active leader.
   356  	// As always, after recovery, each member must be able to process client
   357  	// requests.
   358  	Case_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 206
   359  	// RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT delays
   360  	// outgoing/incoming packets from/to the peer port on the active leader,
   361  	// with a randomized time duration. And it waits for most up-to-date node
   362  	// (current or new leader) applies the snapshot count of entries since the
   363  	// delay operation.
   364  	// The expected behavior is that cluster may elect a new leader, and
   365  	// the old leader gets isolated and behind the current active leader,
   366  	// and once delay operation is undone, the slow follower comes back
   367  	// and catches up, likely receiving a snapshot from the active leader.
   368  	// As always, after recovery, each member must be able to process client
   369  	// requests.
   370  	Case_RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT Case = 207
   371  	// DELAY_PEER_PORT_TX_RX_QUORUM delays outgoing/incoming packets from/to
   372  	// the peer ports on majority nodes of cluster. And it waits for
   373  	// "delay-ms" until recovery, likely to trigger election timeouts.
   374  	// The expected behavior is that cluster may elect a new leader, while
   375  	// quorum of nodes struggle with slow networks, and once delay operation
   376  	// is undone, nodes come back and cluster comes back operative. As always,
   377  	// after recovery, each member must be able to process client requests.
   378  	Case_DELAY_PEER_PORT_TX_RX_QUORUM Case = 208
   379  	// RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM delays outgoing/incoming packets
   380  	// from/to the peer ports on majority nodes of cluster, with randomized
   381  	// time durations. And it waits for "delay-ms" until recovery, likely
   382  	// to trigger election timeouts.
   383  	// The expected behavior is that cluster may elect a new leader, while
   384  	// quorum of nodes struggle with slow networks, and once delay operation
   385  	// is undone, nodes come back and cluster comes back operative. As always,
   386  	// after recovery, each member must be able to process client requests.
   387  	Case_RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM Case = 209
   388  	// DELAY_PEER_PORT_TX_RX_ALL delays outgoing/incoming packets from/to the
   389  	// peer ports on all nodes. And it waits for "delay-ms" until recovery,
   390  	// likely to trigger election timeouts.
   391  	// The expected behavior is that cluster may become totally inoperable,
   392  	// struggling with slow networks across the whole cluster. Once delay
   393  	// operation is undone, nodes come back and cluster comes back operative.
   394  	// As always, after recovery, each member must be able to process client
   395  	// requests.
   396  	Case_DELAY_PEER_PORT_TX_RX_ALL Case = 210
   397  	// RANDOM_DELAY_PEER_PORT_TX_RX_ALL delays outgoing/incoming packets
   398  	// from/to the peer ports on all nodes, with randomized time durations.
   399  	// And it waits for "delay-ms" until recovery, likely to trigger
   400  	// election timeouts.
   401  	// The expected behavior is that cluster may become totally inoperable,
   402  	// struggling with slow networks across the whole cluster. Once delay
   403  	// operation is undone, nodes come back and cluster comes back operative.
   404  	// As always, after recovery, each member must be able to process client
   405  	// requests.
   406  	Case_RANDOM_DELAY_PEER_PORT_TX_RX_ALL Case = 211
   407  	// NO_FAIL_WITH_STRESS stops injecting failures while testing the
   408  	// consistency and correctness under pressure loads, for the duration of
   409  	// "delay-ms". Goal is to ensure cluster be still making progress
   410  	// on recovery, and verify system does not deadlock following a sequence
   411  	// of failure injections.
   412  	// The expected behavior is that cluster remains fully operative in healthy
   413  	// condition. As always, after recovery, each member must be able to process
   414  	// client requests.
   415  	Case_NO_FAIL_WITH_STRESS Case = 300
   416  	// NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS neither injects failures nor
   417  	// sends stressig client requests to the cluster, for the duration of
   418  	// "delay-ms". Goal is to ensure cluster be still making progress
   419  	// on recovery, and verify system does not deadlock following a sequence
   420  	// of failure injections.
   421  	// The expected behavior is that cluster remains fully operative in healthy
   422  	// condition, and clients requests during liveness period succeed without
   423  	// errors.
   424  	// Note: this is how Google Chubby does failure injection testing
   425  	// https://static.googleusercontent.com/media/research.google.com/en//archive/paxos_made_live.pdf.
   426  	Case_NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS Case = 301
   427  	// FAILPOINTS injects failpoints to etcd server runtime, triggering panics
   428  	// in critical code paths.
   429  	Case_FAILPOINTS Case = 400
   430  	// EXTERNAL runs external failure injection scripts.
   431  	Case_EXTERNAL Case = 500
   432  )
   433  
   434  var Case_name = map[int32]string{
   435  	0:   "SIGTERM_ONE_FOLLOWER",
   436  	1:   "SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
   437  	2:   "SIGTERM_LEADER",
   438  	3:   "SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT",
   439  	4:   "SIGTERM_QUORUM",
   440  	5:   "SIGTERM_ALL",
   441  	10:  "SIGQUIT_AND_REMOVE_ONE_FOLLOWER",
   442  	11:  "SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
   443  	12:  "SIGQUIT_AND_REMOVE_LEADER",
   444  	13:  "SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT",
   445  	14:  "SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH",
   446  	100: "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER",
   447  	101: "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
   448  	102: "BLACKHOLE_PEER_PORT_TX_RX_LEADER",
   449  	103: "BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT",
   450  	104: "BLACKHOLE_PEER_PORT_TX_RX_QUORUM",
   451  	105: "BLACKHOLE_PEER_PORT_TX_RX_ALL",
   452  	200: "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER",
   453  	201: "RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER",
   454  	202: "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
   455  	203: "RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT",
   456  	204: "DELAY_PEER_PORT_TX_RX_LEADER",
   457  	205: "RANDOM_DELAY_PEER_PORT_TX_RX_LEADER",
   458  	206: "DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT",
   459  	207: "RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT",
   460  	208: "DELAY_PEER_PORT_TX_RX_QUORUM",
   461  	209: "RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM",
   462  	210: "DELAY_PEER_PORT_TX_RX_ALL",
   463  	211: "RANDOM_DELAY_PEER_PORT_TX_RX_ALL",
   464  	300: "NO_FAIL_WITH_STRESS",
   465  	301: "NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS",
   466  	400: "FAILPOINTS",
   467  	500: "EXTERNAL",
   468  }
   469  var Case_value = map[string]int32{
   470  	"SIGTERM_ONE_FOLLOWER":                                               0,
   471  	"SIGTERM_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":                        1,
   472  	"SIGTERM_LEADER":                                                     2,
   473  	"SIGTERM_LEADER_UNTIL_TRIGGER_SNAPSHOT":                              3,
   474  	"SIGTERM_QUORUM":                                                     4,
   475  	"SIGTERM_ALL":                                                        5,
   476  	"SIGQUIT_AND_REMOVE_ONE_FOLLOWER":                                    10,
   477  	"SIGQUIT_AND_REMOVE_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":             11,
   478  	"SIGQUIT_AND_REMOVE_LEADER":                                          12,
   479  	"SIGQUIT_AND_REMOVE_LEADER_UNTIL_TRIGGER_SNAPSHOT":                   13,
   480  	"SIGQUIT_AND_REMOVE_QUORUM_AND_RESTORE_LEADER_SNAPSHOT_FROM_SCRATCH": 14,
   481  	"BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER":                             100,
   482  	"BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":      101,
   483  	"BLACKHOLE_PEER_PORT_TX_RX_LEADER":                                   102,
   484  	"BLACKHOLE_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT":            103,
   485  	"BLACKHOLE_PEER_PORT_TX_RX_QUORUM":                                   104,
   486  	"BLACKHOLE_PEER_PORT_TX_RX_ALL":                                      105,
   487  	"DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER":                                 200,
   488  	"RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER":                          201,
   489  	"DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":          202,
   490  	"RANDOM_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER_UNTIL_TRIGGER_SNAPSHOT":   203,
   491  	"DELAY_PEER_PORT_TX_RX_LEADER":                                       204,
   492  	"RANDOM_DELAY_PEER_PORT_TX_RX_LEADER":                                205,
   493  	"DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT":                206,
   494  	"RANDOM_DELAY_PEER_PORT_TX_RX_LEADER_UNTIL_TRIGGER_SNAPSHOT":         207,
   495  	"DELAY_PEER_PORT_TX_RX_QUORUM":                                       208,
   496  	"RANDOM_DELAY_PEER_PORT_TX_RX_QUORUM":                                209,
   497  	"DELAY_PEER_PORT_TX_RX_ALL":                                          210,
   498  	"RANDOM_DELAY_PEER_PORT_TX_RX_ALL":                                   211,
   499  	"NO_FAIL_WITH_STRESS":                                                300,
   500  	"NO_FAIL_WITH_NO_STRESS_FOR_LIVENESS":                                301,
   501  	"FAILPOINTS":                                                         400,
   502  	"EXTERNAL":                                                           500,
   503  }
   504  
   505  func (x Case) String() string {
   506  	return proto.EnumName(Case_name, int32(x))
   507  }
   508  func (Case) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{1} }
   509  
   510  type Stresser int32
   511  
   512  const (
   513  	Stresser_KV                Stresser = 0
   514  	Stresser_LEASE             Stresser = 1
   515  	Stresser_ELECTION_RUNNER   Stresser = 2
   516  	Stresser_WATCH_RUNNER      Stresser = 3
   517  	Stresser_LOCK_RACER_RUNNER Stresser = 4
   518  	Stresser_LEASE_RUNNER      Stresser = 5
   519  )
   520  
   521  var Stresser_name = map[int32]string{
   522  	0: "KV",
   523  	1: "LEASE",
   524  	2: "ELECTION_RUNNER",
   525  	3: "WATCH_RUNNER",
   526  	4: "LOCK_RACER_RUNNER",
   527  	5: "LEASE_RUNNER",
   528  }
   529  var Stresser_value = map[string]int32{
   530  	"KV":                0,
   531  	"LEASE":             1,
   532  	"ELECTION_RUNNER":   2,
   533  	"WATCH_RUNNER":      3,
   534  	"LOCK_RACER_RUNNER": 4,
   535  	"LEASE_RUNNER":      5,
   536  }
   537  
   538  func (x Stresser) String() string {
   539  	return proto.EnumName(Stresser_name, int32(x))
   540  }
   541  func (Stresser) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{2} }
   542  
   543  type Checker int32
   544  
   545  const (
   546  	Checker_KV_HASH      Checker = 0
   547  	Checker_LEASE_EXPIRE Checker = 1
   548  	Checker_RUNNER       Checker = 2
   549  	Checker_NO_CHECK     Checker = 3
   550  )
   551  
   552  var Checker_name = map[int32]string{
   553  	0: "KV_HASH",
   554  	1: "LEASE_EXPIRE",
   555  	2: "RUNNER",
   556  	3: "NO_CHECK",
   557  }
   558  var Checker_value = map[string]int32{
   559  	"KV_HASH":      0,
   560  	"LEASE_EXPIRE": 1,
   561  	"RUNNER":       2,
   562  	"NO_CHECK":     3,
   563  }
   564  
   565  func (x Checker) String() string {
   566  	return proto.EnumName(Checker_name, int32(x))
   567  }
   568  func (Checker) EnumDescriptor() ([]byte, []int) { return fileDescriptorRpc, []int{3} }
   569  
   570  type Request struct {
   571  	Operation Operation `protobuf:"varint,1,opt,name=Operation,proto3,enum=rpcpb.Operation" json:"Operation,omitempty"`
   572  	// Member contains the same Member object from tester configuration.
   573  	Member *Member `protobuf:"bytes,2,opt,name=Member" json:"Member,omitempty"`
   574  	// Tester contains tester configuration.
   575  	Tester *Tester `protobuf:"bytes,3,opt,name=Tester" json:"Tester,omitempty"`
   576  }
   577  
   578  func (m *Request) Reset()                    { *m = Request{} }
   579  func (m *Request) String() string            { return proto.CompactTextString(m) }
   580  func (*Request) ProtoMessage()               {}
   581  func (*Request) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{0} }
   582  
   583  // SnapshotInfo contains SAVE_SNAPSHOT request results.
   584  type SnapshotInfo struct {
   585  	MemberName        string   `protobuf:"bytes,1,opt,name=MemberName,proto3" json:"MemberName,omitempty"`
   586  	MemberClientURLs  []string `protobuf:"bytes,2,rep,name=MemberClientURLs" json:"MemberClientURLs,omitempty"`
   587  	SnapshotPath      string   `protobuf:"bytes,3,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty"`
   588  	SnapshotFileSize  string   `protobuf:"bytes,4,opt,name=SnapshotFileSize,proto3" json:"SnapshotFileSize,omitempty"`
   589  	SnapshotTotalSize string   `protobuf:"bytes,5,opt,name=SnapshotTotalSize,proto3" json:"SnapshotTotalSize,omitempty"`
   590  	SnapshotTotalKey  int64    `protobuf:"varint,6,opt,name=SnapshotTotalKey,proto3" json:"SnapshotTotalKey,omitempty"`
   591  	SnapshotHash      int64    `protobuf:"varint,7,opt,name=SnapshotHash,proto3" json:"SnapshotHash,omitempty"`
   592  	SnapshotRevision  int64    `protobuf:"varint,8,opt,name=SnapshotRevision,proto3" json:"SnapshotRevision,omitempty"`
   593  	Took              string   `protobuf:"bytes,9,opt,name=Took,proto3" json:"Took,omitempty"`
   594  }
   595  
   596  func (m *SnapshotInfo) Reset()                    { *m = SnapshotInfo{} }
   597  func (m *SnapshotInfo) String() string            { return proto.CompactTextString(m) }
   598  func (*SnapshotInfo) ProtoMessage()               {}
   599  func (*SnapshotInfo) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{1} }
   600  
   601  type Response struct {
   602  	Success bool   `protobuf:"varint,1,opt,name=Success,proto3" json:"Success,omitempty"`
   603  	Status  string `protobuf:"bytes,2,opt,name=Status,proto3" json:"Status,omitempty"`
   604  	// Member contains the same Member object from tester request.
   605  	Member *Member `protobuf:"bytes,3,opt,name=Member" json:"Member,omitempty"`
   606  	// SnapshotInfo contains SAVE_SNAPSHOT request results.
   607  	SnapshotInfo *SnapshotInfo `protobuf:"bytes,4,opt,name=SnapshotInfo" json:"SnapshotInfo,omitempty"`
   608  }
   609  
   610  func (m *Response) Reset()                    { *m = Response{} }
   611  func (m *Response) String() string            { return proto.CompactTextString(m) }
   612  func (*Response) ProtoMessage()               {}
   613  func (*Response) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{2} }
   614  
   615  type Member struct {
   616  	// EtcdExecPath is the executable etcd binary path in agent server.
   617  	EtcdExecPath string `protobuf:"bytes,1,opt,name=EtcdExecPath,proto3" json:"EtcdExecPath,omitempty" yaml:"etcd-exec-path"`
   618  	// AgentAddr is the agent HTTP server address.
   619  	AgentAddr string `protobuf:"bytes,11,opt,name=AgentAddr,proto3" json:"AgentAddr,omitempty" yaml:"agent-addr"`
   620  	// FailpointHTTPAddr is the agent's failpoints HTTP server address.
   621  	FailpointHTTPAddr string `protobuf:"bytes,12,opt,name=FailpointHTTPAddr,proto3" json:"FailpointHTTPAddr,omitempty" yaml:"failpoint-http-addr"`
   622  	// BaseDir is the base directory where all logs and etcd data are stored.
   623  	BaseDir string `protobuf:"bytes,101,opt,name=BaseDir,proto3" json:"BaseDir,omitempty" yaml:"base-dir"`
   624  	// EtcdLogPath is the log file to store current etcd server logs.
   625  	EtcdLogPath string `protobuf:"bytes,102,opt,name=EtcdLogPath,proto3" json:"EtcdLogPath,omitempty" yaml:"etcd-log-path"`
   626  	// EtcdClientProxy is true when client traffic needs to be proxied.
   627  	// If true, listen client URL port must be different than advertise client URL port.
   628  	EtcdClientProxy bool `protobuf:"varint,201,opt,name=EtcdClientProxy,proto3" json:"EtcdClientProxy,omitempty" yaml:"etcd-client-proxy"`
   629  	// EtcdPeerProxy is true when peer traffic needs to be proxied.
   630  	// If true, listen peer URL port must be different than advertise peer URL port.
   631  	EtcdPeerProxy bool `protobuf:"varint,202,opt,name=EtcdPeerProxy,proto3" json:"EtcdPeerProxy,omitempty" yaml:"etcd-peer-proxy"`
   632  	// EtcdClientEndpoint is the etcd client endpoint.
   633  	EtcdClientEndpoint string `protobuf:"bytes,301,opt,name=EtcdClientEndpoint,proto3" json:"EtcdClientEndpoint,omitempty" yaml:"etcd-client-endpoint"`
   634  	// Etcd defines etcd binary configuration flags.
   635  	Etcd *Etcd `protobuf:"bytes,302,opt,name=Etcd" json:"Etcd,omitempty" yaml:"etcd"`
   636  	// EtcdOnSnapshotRestore defines one-time use configuration during etcd
   637  	// snapshot recovery process.
   638  	EtcdOnSnapshotRestore *Etcd `protobuf:"bytes,303,opt,name=EtcdOnSnapshotRestore" json:"EtcdOnSnapshotRestore,omitempty"`
   639  	// ClientCertData contains cert file contents from this member's etcd server.
   640  	ClientCertData string `protobuf:"bytes,401,opt,name=ClientCertData,proto3" json:"ClientCertData,omitempty" yaml:"client-cert-data"`
   641  	ClientCertPath string `protobuf:"bytes,402,opt,name=ClientCertPath,proto3" json:"ClientCertPath,omitempty" yaml:"client-cert-path"`
   642  	// ClientKeyData contains key file contents from this member's etcd server.
   643  	ClientKeyData string `protobuf:"bytes,403,opt,name=ClientKeyData,proto3" json:"ClientKeyData,omitempty" yaml:"client-key-data"`
   644  	ClientKeyPath string `protobuf:"bytes,404,opt,name=ClientKeyPath,proto3" json:"ClientKeyPath,omitempty" yaml:"client-key-path"`
   645  	// ClientTrustedCAData contains trusted CA file contents from this member's etcd server.
   646  	ClientTrustedCAData string `protobuf:"bytes,405,opt,name=ClientTrustedCAData,proto3" json:"ClientTrustedCAData,omitempty" yaml:"client-trusted-ca-data"`
   647  	ClientTrustedCAPath string `protobuf:"bytes,406,opt,name=ClientTrustedCAPath,proto3" json:"ClientTrustedCAPath,omitempty" yaml:"client-trusted-ca-path"`
   648  	// PeerCertData contains cert file contents from this member's etcd server.
   649  	PeerCertData string `protobuf:"bytes,501,opt,name=PeerCertData,proto3" json:"PeerCertData,omitempty" yaml:"peer-cert-data"`
   650  	PeerCertPath string `protobuf:"bytes,502,opt,name=PeerCertPath,proto3" json:"PeerCertPath,omitempty" yaml:"peer-cert-path"`
   651  	// PeerKeyData contains key file contents from this member's etcd server.
   652  	PeerKeyData string `protobuf:"bytes,503,opt,name=PeerKeyData,proto3" json:"PeerKeyData,omitempty" yaml:"peer-key-data"`
   653  	PeerKeyPath string `protobuf:"bytes,504,opt,name=PeerKeyPath,proto3" json:"PeerKeyPath,omitempty" yaml:"peer-key-path"`
   654  	// PeerTrustedCAData contains trusted CA file contents from this member's etcd server.
   655  	PeerTrustedCAData string `protobuf:"bytes,505,opt,name=PeerTrustedCAData,proto3" json:"PeerTrustedCAData,omitempty" yaml:"peer-trusted-ca-data"`
   656  	PeerTrustedCAPath string `protobuf:"bytes,506,opt,name=PeerTrustedCAPath,proto3" json:"PeerTrustedCAPath,omitempty" yaml:"peer-trusted-ca-path"`
   657  	// SnapshotPath is the snapshot file path to store or restore from.
   658  	SnapshotPath string `protobuf:"bytes,601,opt,name=SnapshotPath,proto3" json:"SnapshotPath,omitempty" yaml:"snapshot-path"`
   659  	// SnapshotInfo contains last SAVE_SNAPSHOT request results.
   660  	SnapshotInfo *SnapshotInfo `protobuf:"bytes,602,opt,name=SnapshotInfo" json:"SnapshotInfo,omitempty"`
   661  }
   662  
   663  func (m *Member) Reset()                    { *m = Member{} }
   664  func (m *Member) String() string            { return proto.CompactTextString(m) }
   665  func (*Member) ProtoMessage()               {}
   666  func (*Member) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{3} }
   667  
   668  type Tester struct {
   669  	DataDir string `protobuf:"bytes,1,opt,name=DataDir,proto3" json:"DataDir,omitempty" yaml:"data-dir"`
   670  	Network string `protobuf:"bytes,2,opt,name=Network,proto3" json:"Network,omitempty" yaml:"network"`
   671  	Addr    string `protobuf:"bytes,3,opt,name=Addr,proto3" json:"Addr,omitempty" yaml:"addr"`
   672  	// DelayLatencyMsRv is the delay latency in milliseconds,
   673  	// to inject to simulated slow network.
   674  	DelayLatencyMs uint32 `protobuf:"varint,11,opt,name=DelayLatencyMs,proto3" json:"DelayLatencyMs,omitempty" yaml:"delay-latency-ms"`
   675  	// DelayLatencyMsRv is the delay latency random variable in milliseconds.
   676  	DelayLatencyMsRv uint32 `protobuf:"varint,12,opt,name=DelayLatencyMsRv,proto3" json:"DelayLatencyMsRv,omitempty" yaml:"delay-latency-ms-rv"`
   677  	// UpdatedDelayLatencyMs is the update delay latency in milliseconds,
   678  	// to inject to simulated slow network. It's the final latency to apply,
   679  	// in case the latency numbers are randomly generated from given delay latency field.
   680  	UpdatedDelayLatencyMs uint32 `protobuf:"varint,13,opt,name=UpdatedDelayLatencyMs,proto3" json:"UpdatedDelayLatencyMs,omitempty" yaml:"updated-delay-latency-ms"`
   681  	// RoundLimit is the limit of rounds to run failure set (-1 to run without limits).
   682  	RoundLimit int32 `protobuf:"varint,21,opt,name=RoundLimit,proto3" json:"RoundLimit,omitempty" yaml:"round-limit"`
   683  	// ExitOnCaseFail is true, then exit tester on first failure.
   684  	ExitOnCaseFail bool `protobuf:"varint,22,opt,name=ExitOnCaseFail,proto3" json:"ExitOnCaseFail,omitempty" yaml:"exit-on-failure"`
   685  	// EnablePprof is true to enable profiler.
   686  	EnablePprof bool `protobuf:"varint,23,opt,name=EnablePprof,proto3" json:"EnablePprof,omitempty" yaml:"enable-pprof"`
   687  	// CaseDelayMs is the delay duration after failure is injected.
   688  	// Useful when triggering snapshot or no-op failure cases.
   689  	CaseDelayMs uint32 `protobuf:"varint,31,opt,name=CaseDelayMs,proto3" json:"CaseDelayMs,omitempty" yaml:"case-delay-ms"`
   690  	// CaseShuffle is true to randomize failure injecting order.
   691  	CaseShuffle bool `protobuf:"varint,32,opt,name=CaseShuffle,proto3" json:"CaseShuffle,omitempty" yaml:"case-shuffle"`
   692  	// Cases is the selected test cases to schedule.
   693  	// If empty, run all failure cases.
   694  	Cases []string `protobuf:"bytes,33,rep,name=Cases" json:"Cases,omitempty" yaml:"cases"`
   695  	// FailpointCommands is the list of "gofail" commands
   696  	// (e.g. panic("etcd-tester"),1*sleep(1000).
   697  	FailpointCommands []string `protobuf:"bytes,34,rep,name=FailpointCommands" json:"FailpointCommands,omitempty" yaml:"failpoint-commands"`
   698  	// RunnerExecPath is a path of etcd-runner binary.
   699  	RunnerExecPath string `protobuf:"bytes,41,opt,name=RunnerExecPath,proto3" json:"RunnerExecPath,omitempty" yaml:"runner-exec-path"`
   700  	// ExternalExecPath is a path of script for enabling/disabling an external fault injector.
   701  	ExternalExecPath string `protobuf:"bytes,42,opt,name=ExternalExecPath,proto3" json:"ExternalExecPath,omitempty" yaml:"external-exec-path"`
   702  	// Stressers is the list of stresser types:
   703  	// KV, LEASE, ELECTION_RUNNER, WATCH_RUNNER, LOCK_RACER_RUNNER, LEASE_RUNNER.
   704  	Stressers []string `protobuf:"bytes,101,rep,name=Stressers" json:"Stressers,omitempty" yaml:"stressers"`
   705  	// Checkers is the list of consistency checker types:
   706  	// KV_HASH, LEASE_EXPIRE, NO_CHECK, RUNNER.
   707  	// Leave empty to skip consistency checks.
   708  	Checkers []string `protobuf:"bytes,102,rep,name=Checkers" json:"Checkers,omitempty" yaml:"checkers"`
   709  	// StressKeySize is the size of each small key written into etcd.
   710  	StressKeySize int32 `protobuf:"varint,201,opt,name=StressKeySize,proto3" json:"StressKeySize,omitempty" yaml:"stress-key-size"`
   711  	// StressKeySizeLarge is the size of each large key written into etcd.
   712  	StressKeySizeLarge int32 `protobuf:"varint,202,opt,name=StressKeySizeLarge,proto3" json:"StressKeySizeLarge,omitempty" yaml:"stress-key-size-large"`
   713  	// StressKeySuffixRange is the count of key range written into etcd.
   714  	// Stress keys are created with "fmt.Sprintf("foo%016x", rand.Intn(keySuffixRange)".
   715  	StressKeySuffixRange int32 `protobuf:"varint,203,opt,name=StressKeySuffixRange,proto3" json:"StressKeySuffixRange,omitempty" yaml:"stress-key-suffix-range"`
   716  	// StressKeySuffixRangeTxn is the count of key range written into etcd txn (max 100).
   717  	// Stress keys are created with "fmt.Sprintf("/k%03d", i)".
   718  	StressKeySuffixRangeTxn int32 `protobuf:"varint,204,opt,name=StressKeySuffixRangeTxn,proto3" json:"StressKeySuffixRangeTxn,omitempty" yaml:"stress-key-suffix-range-txn"`
   719  	// StressKeyTxnOps is the number of operations per a transaction (max 64).
   720  	StressKeyTxnOps int32 `protobuf:"varint,205,opt,name=StressKeyTxnOps,proto3" json:"StressKeyTxnOps,omitempty" yaml:"stress-key-txn-ops"`
   721  	// StressClients is the number of concurrent stressing clients
   722  	// with "one" shared TCP connection.
   723  	StressClients int32 `protobuf:"varint,301,opt,name=StressClients,proto3" json:"StressClients,omitempty" yaml:"stress-clients"`
   724  	// StressQPS is the maximum number of stresser requests per second.
   725  	StressQPS int32 `protobuf:"varint,302,opt,name=StressQPS,proto3" json:"StressQPS,omitempty" yaml:"stress-qps"`
   726  }
   727  
   728  func (m *Tester) Reset()                    { *m = Tester{} }
   729  func (m *Tester) String() string            { return proto.CompactTextString(m) }
   730  func (*Tester) ProtoMessage()               {}
   731  func (*Tester) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{4} }
   732  
   733  type Etcd struct {
   734  	Name    string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty" yaml:"name"`
   735  	DataDir string `protobuf:"bytes,2,opt,name=DataDir,proto3" json:"DataDir,omitempty" yaml:"data-dir"`
   736  	WALDir  string `protobuf:"bytes,3,opt,name=WALDir,proto3" json:"WALDir,omitempty" yaml:"wal-dir"`
   737  	// HeartbeatIntervalMs is the time (in milliseconds) of a heartbeat interval.
   738  	// Default value is 100, which is 100ms.
   739  	HeartbeatIntervalMs int64 `protobuf:"varint,11,opt,name=HeartbeatIntervalMs,proto3" json:"HeartbeatIntervalMs,omitempty" yaml:"heartbeat-interval"`
   740  	// ElectionTimeoutMs is the time (in milliseconds) for an election to timeout.
   741  	// Default value is 1000, which is 1s.
   742  	ElectionTimeoutMs   int64    `protobuf:"varint,12,opt,name=ElectionTimeoutMs,proto3" json:"ElectionTimeoutMs,omitempty" yaml:"election-timeout"`
   743  	ListenClientURLs    []string `protobuf:"bytes,21,rep,name=ListenClientURLs" json:"ListenClientURLs,omitempty" yaml:"listen-client-urls"`
   744  	AdvertiseClientURLs []string `protobuf:"bytes,22,rep,name=AdvertiseClientURLs" json:"AdvertiseClientURLs,omitempty" yaml:"advertise-client-urls"`
   745  	ClientAutoTLS       bool     `protobuf:"varint,23,opt,name=ClientAutoTLS,proto3" json:"ClientAutoTLS,omitempty" yaml:"auto-tls"`
   746  	ClientCertAuth      bool     `protobuf:"varint,24,opt,name=ClientCertAuth,proto3" json:"ClientCertAuth,omitempty" yaml:"client-cert-auth"`
   747  	ClientCertFile      string   `protobuf:"bytes,25,opt,name=ClientCertFile,proto3" json:"ClientCertFile,omitempty" yaml:"cert-file"`
   748  	ClientKeyFile       string   `protobuf:"bytes,26,opt,name=ClientKeyFile,proto3" json:"ClientKeyFile,omitempty" yaml:"key-file"`
   749  	ClientTrustedCAFile string   `protobuf:"bytes,27,opt,name=ClientTrustedCAFile,proto3" json:"ClientTrustedCAFile,omitempty" yaml:"trusted-ca-file"`
   750  	ListenPeerURLs      []string `protobuf:"bytes,31,rep,name=ListenPeerURLs" json:"ListenPeerURLs,omitempty" yaml:"listen-peer-urls"`
   751  	AdvertisePeerURLs   []string `protobuf:"bytes,32,rep,name=AdvertisePeerURLs" json:"AdvertisePeerURLs,omitempty" yaml:"initial-advertise-peer-urls"`
   752  	PeerAutoTLS         bool     `protobuf:"varint,33,opt,name=PeerAutoTLS,proto3" json:"PeerAutoTLS,omitempty" yaml:"peer-auto-tls"`
   753  	PeerClientCertAuth  bool     `protobuf:"varint,34,opt,name=PeerClientCertAuth,proto3" json:"PeerClientCertAuth,omitempty" yaml:"peer-client-cert-auth"`
   754  	PeerCertFile        string   `protobuf:"bytes,35,opt,name=PeerCertFile,proto3" json:"PeerCertFile,omitempty" yaml:"peer-cert-file"`
   755  	PeerKeyFile         string   `protobuf:"bytes,36,opt,name=PeerKeyFile,proto3" json:"PeerKeyFile,omitempty" yaml:"peer-key-file"`
   756  	PeerTrustedCAFile   string   `protobuf:"bytes,37,opt,name=PeerTrustedCAFile,proto3" json:"PeerTrustedCAFile,omitempty" yaml:"peer-trusted-ca-file"`
   757  	InitialCluster      string   `protobuf:"bytes,41,opt,name=InitialCluster,proto3" json:"InitialCluster,omitempty" yaml:"initial-cluster"`
   758  	InitialClusterState string   `protobuf:"bytes,42,opt,name=InitialClusterState,proto3" json:"InitialClusterState,omitempty" yaml:"initial-cluster-state"`
   759  	InitialClusterToken string   `protobuf:"bytes,43,opt,name=InitialClusterToken,proto3" json:"InitialClusterToken,omitempty" yaml:"initial-cluster-token"`
   760  	SnapshotCount       int64    `protobuf:"varint,51,opt,name=SnapshotCount,proto3" json:"SnapshotCount,omitempty" yaml:"snapshot-count"`
   761  	QuotaBackendBytes   int64    `protobuf:"varint,52,opt,name=QuotaBackendBytes,proto3" json:"QuotaBackendBytes,omitempty" yaml:"quota-backend-bytes"`
   762  	PreVote             bool     `protobuf:"varint,63,opt,name=PreVote,proto3" json:"PreVote,omitempty" yaml:"pre-vote"`
   763  	InitialCorruptCheck bool     `protobuf:"varint,64,opt,name=InitialCorruptCheck,proto3" json:"InitialCorruptCheck,omitempty" yaml:"initial-corrupt-check"`
   764  }
   765  
   766  func (m *Etcd) Reset()                    { *m = Etcd{} }
   767  func (m *Etcd) String() string            { return proto.CompactTextString(m) }
   768  func (*Etcd) ProtoMessage()               {}
   769  func (*Etcd) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{5} }
   770  
   771  func init() {
   772  	proto.RegisterType((*Request)(nil), "rpcpb.Request")
   773  	proto.RegisterType((*SnapshotInfo)(nil), "rpcpb.SnapshotInfo")
   774  	proto.RegisterType((*Response)(nil), "rpcpb.Response")
   775  	proto.RegisterType((*Member)(nil), "rpcpb.Member")
   776  	proto.RegisterType((*Tester)(nil), "rpcpb.Tester")
   777  	proto.RegisterType((*Etcd)(nil), "rpcpb.Etcd")
   778  	proto.RegisterEnum("rpcpb.Operation", Operation_name, Operation_value)
   779  	proto.RegisterEnum("rpcpb.Case", Case_name, Case_value)
   780  	proto.RegisterEnum("rpcpb.Stresser", Stresser_name, Stresser_value)
   781  	proto.RegisterEnum("rpcpb.Checker", Checker_name, Checker_value)
   782  }
   783  
   784  // Reference imports to suppress errors if they are not otherwise used.
   785  var _ context.Context
   786  var _ grpc.ClientConn
   787  
   788  // This is a compile-time assertion to ensure that this generated file
   789  // is compatible with the grpc package it is being compiled against.
   790  const _ = grpc.SupportPackageIsVersion4
   791  
   792  // Client API for Transport service
   793  
   794  type TransportClient interface {
   795  	Transport(ctx context.Context, opts ...grpc.CallOption) (Transport_TransportClient, error)
   796  }
   797  
   798  type transportClient struct {
   799  	cc *grpc.ClientConn
   800  }
   801  
   802  func NewTransportClient(cc *grpc.ClientConn) TransportClient {
   803  	return &transportClient{cc}
   804  }
   805  
   806  func (c *transportClient) Transport(ctx context.Context, opts ...grpc.CallOption) (Transport_TransportClient, error) {
   807  	stream, err := grpc.NewClientStream(ctx, &_Transport_serviceDesc.Streams[0], c.cc, "/rpcpb.Transport/Transport", opts...)
   808  	if err != nil {
   809  		return nil, err
   810  	}
   811  	x := &transportTransportClient{stream}
   812  	return x, nil
   813  }
   814  
   815  type Transport_TransportClient interface {
   816  	Send(*Request) error
   817  	Recv() (*Response, error)
   818  	grpc.ClientStream
   819  }
   820  
   821  type transportTransportClient struct {
   822  	grpc.ClientStream
   823  }
   824  
   825  func (x *transportTransportClient) Send(m *Request) error {
   826  	return x.ClientStream.SendMsg(m)
   827  }
   828  
   829  func (x *transportTransportClient) Recv() (*Response, error) {
   830  	m := new(Response)
   831  	if err := x.ClientStream.RecvMsg(m); err != nil {
   832  		return nil, err
   833  	}
   834  	return m, nil
   835  }
   836  
   837  // Server API for Transport service
   838  
   839  type TransportServer interface {
   840  	Transport(Transport_TransportServer) error
   841  }
   842  
   843  func RegisterTransportServer(s *grpc.Server, srv TransportServer) {
   844  	s.RegisterService(&_Transport_serviceDesc, srv)
   845  }
   846  
   847  func _Transport_Transport_Handler(srv interface{}, stream grpc.ServerStream) error {
   848  	return srv.(TransportServer).Transport(&transportTransportServer{stream})
   849  }
   850  
   851  type Transport_TransportServer interface {
   852  	Send(*Response) error
   853  	Recv() (*Request, error)
   854  	grpc.ServerStream
   855  }
   856  
   857  type transportTransportServer struct {
   858  	grpc.ServerStream
   859  }
   860  
   861  func (x *transportTransportServer) Send(m *Response) error {
   862  	return x.ServerStream.SendMsg(m)
   863  }
   864  
   865  func (x *transportTransportServer) Recv() (*Request, error) {
   866  	m := new(Request)
   867  	if err := x.ServerStream.RecvMsg(m); err != nil {
   868  		return nil, err
   869  	}
   870  	return m, nil
   871  }
   872  
   873  var _Transport_serviceDesc = grpc.ServiceDesc{
   874  	ServiceName: "rpcpb.Transport",
   875  	HandlerType: (*TransportServer)(nil),
   876  	Methods:     []grpc.MethodDesc{},
   877  	Streams: []grpc.StreamDesc{
   878  		{
   879  			StreamName:    "Transport",
   880  			Handler:       _Transport_Transport_Handler,
   881  			ServerStreams: true,
   882  			ClientStreams: true,
   883  		},
   884  	},
   885  	Metadata: "rpcpb/rpc.proto",
   886  }
   887  
   888  func (m *Request) Marshal() (dAtA []byte, err error) {
   889  	size := m.Size()
   890  	dAtA = make([]byte, size)
   891  	n, err := m.MarshalTo(dAtA)
   892  	if err != nil {
   893  		return nil, err
   894  	}
   895  	return dAtA[:n], nil
   896  }
   897  
   898  func (m *Request) MarshalTo(dAtA []byte) (int, error) {
   899  	var i int
   900  	_ = i
   901  	var l int
   902  	_ = l
   903  	if m.Operation != 0 {
   904  		dAtA[i] = 0x8
   905  		i++
   906  		i = encodeVarintRpc(dAtA, i, uint64(m.Operation))
   907  	}
   908  	if m.Member != nil {
   909  		dAtA[i] = 0x12
   910  		i++
   911  		i = encodeVarintRpc(dAtA, i, uint64(m.Member.Size()))
   912  		n1, err := m.Member.MarshalTo(dAtA[i:])
   913  		if err != nil {
   914  			return 0, err
   915  		}
   916  		i += n1
   917  	}
   918  	if m.Tester != nil {
   919  		dAtA[i] = 0x1a
   920  		i++
   921  		i = encodeVarintRpc(dAtA, i, uint64(m.Tester.Size()))
   922  		n2, err := m.Tester.MarshalTo(dAtA[i:])
   923  		if err != nil {
   924  			return 0, err
   925  		}
   926  		i += n2
   927  	}
   928  	return i, nil
   929  }
   930  
   931  func (m *SnapshotInfo) Marshal() (dAtA []byte, err error) {
   932  	size := m.Size()
   933  	dAtA = make([]byte, size)
   934  	n, err := m.MarshalTo(dAtA)
   935  	if err != nil {
   936  		return nil, err
   937  	}
   938  	return dAtA[:n], nil
   939  }
   940  
   941  func (m *SnapshotInfo) MarshalTo(dAtA []byte) (int, error) {
   942  	var i int
   943  	_ = i
   944  	var l int
   945  	_ = l
   946  	if len(m.MemberName) > 0 {
   947  		dAtA[i] = 0xa
   948  		i++
   949  		i = encodeVarintRpc(dAtA, i, uint64(len(m.MemberName)))
   950  		i += copy(dAtA[i:], m.MemberName)
   951  	}
   952  	if len(m.MemberClientURLs) > 0 {
   953  		for _, s := range m.MemberClientURLs {
   954  			dAtA[i] = 0x12
   955  			i++
   956  			l = len(s)
   957  			for l >= 1<<7 {
   958  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
   959  				l >>= 7
   960  				i++
   961  			}
   962  			dAtA[i] = uint8(l)
   963  			i++
   964  			i += copy(dAtA[i:], s)
   965  		}
   966  	}
   967  	if len(m.SnapshotPath) > 0 {
   968  		dAtA[i] = 0x1a
   969  		i++
   970  		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath)))
   971  		i += copy(dAtA[i:], m.SnapshotPath)
   972  	}
   973  	if len(m.SnapshotFileSize) > 0 {
   974  		dAtA[i] = 0x22
   975  		i++
   976  		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotFileSize)))
   977  		i += copy(dAtA[i:], m.SnapshotFileSize)
   978  	}
   979  	if len(m.SnapshotTotalSize) > 0 {
   980  		dAtA[i] = 0x2a
   981  		i++
   982  		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotTotalSize)))
   983  		i += copy(dAtA[i:], m.SnapshotTotalSize)
   984  	}
   985  	if m.SnapshotTotalKey != 0 {
   986  		dAtA[i] = 0x30
   987  		i++
   988  		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotTotalKey))
   989  	}
   990  	if m.SnapshotHash != 0 {
   991  		dAtA[i] = 0x38
   992  		i++
   993  		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotHash))
   994  	}
   995  	if m.SnapshotRevision != 0 {
   996  		dAtA[i] = 0x40
   997  		i++
   998  		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotRevision))
   999  	}
  1000  	if len(m.Took) > 0 {
  1001  		dAtA[i] = 0x4a
  1002  		i++
  1003  		i = encodeVarintRpc(dAtA, i, uint64(len(m.Took)))
  1004  		i += copy(dAtA[i:], m.Took)
  1005  	}
  1006  	return i, nil
  1007  }
  1008  
  1009  func (m *Response) Marshal() (dAtA []byte, err error) {
  1010  	size := m.Size()
  1011  	dAtA = make([]byte, size)
  1012  	n, err := m.MarshalTo(dAtA)
  1013  	if err != nil {
  1014  		return nil, err
  1015  	}
  1016  	return dAtA[:n], nil
  1017  }
  1018  
  1019  func (m *Response) MarshalTo(dAtA []byte) (int, error) {
  1020  	var i int
  1021  	_ = i
  1022  	var l int
  1023  	_ = l
  1024  	if m.Success {
  1025  		dAtA[i] = 0x8
  1026  		i++
  1027  		if m.Success {
  1028  			dAtA[i] = 1
  1029  		} else {
  1030  			dAtA[i] = 0
  1031  		}
  1032  		i++
  1033  	}
  1034  	if len(m.Status) > 0 {
  1035  		dAtA[i] = 0x12
  1036  		i++
  1037  		i = encodeVarintRpc(dAtA, i, uint64(len(m.Status)))
  1038  		i += copy(dAtA[i:], m.Status)
  1039  	}
  1040  	if m.Member != nil {
  1041  		dAtA[i] = 0x1a
  1042  		i++
  1043  		i = encodeVarintRpc(dAtA, i, uint64(m.Member.Size()))
  1044  		n3, err := m.Member.MarshalTo(dAtA[i:])
  1045  		if err != nil {
  1046  			return 0, err
  1047  		}
  1048  		i += n3
  1049  	}
  1050  	if m.SnapshotInfo != nil {
  1051  		dAtA[i] = 0x22
  1052  		i++
  1053  		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotInfo.Size()))
  1054  		n4, err := m.SnapshotInfo.MarshalTo(dAtA[i:])
  1055  		if err != nil {
  1056  			return 0, err
  1057  		}
  1058  		i += n4
  1059  	}
  1060  	return i, nil
  1061  }
  1062  
  1063  func (m *Member) Marshal() (dAtA []byte, err error) {
  1064  	size := m.Size()
  1065  	dAtA = make([]byte, size)
  1066  	n, err := m.MarshalTo(dAtA)
  1067  	if err != nil {
  1068  		return nil, err
  1069  	}
  1070  	return dAtA[:n], nil
  1071  }
  1072  
  1073  func (m *Member) MarshalTo(dAtA []byte) (int, error) {
  1074  	var i int
  1075  	_ = i
  1076  	var l int
  1077  	_ = l
  1078  	if len(m.EtcdExecPath) > 0 {
  1079  		dAtA[i] = 0xa
  1080  		i++
  1081  		i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdExecPath)))
  1082  		i += copy(dAtA[i:], m.EtcdExecPath)
  1083  	}
  1084  	if len(m.AgentAddr) > 0 {
  1085  		dAtA[i] = 0x5a
  1086  		i++
  1087  		i = encodeVarintRpc(dAtA, i, uint64(len(m.AgentAddr)))
  1088  		i += copy(dAtA[i:], m.AgentAddr)
  1089  	}
  1090  	if len(m.FailpointHTTPAddr) > 0 {
  1091  		dAtA[i] = 0x62
  1092  		i++
  1093  		i = encodeVarintRpc(dAtA, i, uint64(len(m.FailpointHTTPAddr)))
  1094  		i += copy(dAtA[i:], m.FailpointHTTPAddr)
  1095  	}
  1096  	if len(m.BaseDir) > 0 {
  1097  		dAtA[i] = 0xaa
  1098  		i++
  1099  		dAtA[i] = 0x6
  1100  		i++
  1101  		i = encodeVarintRpc(dAtA, i, uint64(len(m.BaseDir)))
  1102  		i += copy(dAtA[i:], m.BaseDir)
  1103  	}
  1104  	if len(m.EtcdLogPath) > 0 {
  1105  		dAtA[i] = 0xb2
  1106  		i++
  1107  		dAtA[i] = 0x6
  1108  		i++
  1109  		i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdLogPath)))
  1110  		i += copy(dAtA[i:], m.EtcdLogPath)
  1111  	}
  1112  	if m.EtcdClientProxy {
  1113  		dAtA[i] = 0xc8
  1114  		i++
  1115  		dAtA[i] = 0xc
  1116  		i++
  1117  		if m.EtcdClientProxy {
  1118  			dAtA[i] = 1
  1119  		} else {
  1120  			dAtA[i] = 0
  1121  		}
  1122  		i++
  1123  	}
  1124  	if m.EtcdPeerProxy {
  1125  		dAtA[i] = 0xd0
  1126  		i++
  1127  		dAtA[i] = 0xc
  1128  		i++
  1129  		if m.EtcdPeerProxy {
  1130  			dAtA[i] = 1
  1131  		} else {
  1132  			dAtA[i] = 0
  1133  		}
  1134  		i++
  1135  	}
  1136  	if len(m.EtcdClientEndpoint) > 0 {
  1137  		dAtA[i] = 0xea
  1138  		i++
  1139  		dAtA[i] = 0x12
  1140  		i++
  1141  		i = encodeVarintRpc(dAtA, i, uint64(len(m.EtcdClientEndpoint)))
  1142  		i += copy(dAtA[i:], m.EtcdClientEndpoint)
  1143  	}
  1144  	if m.Etcd != nil {
  1145  		dAtA[i] = 0xf2
  1146  		i++
  1147  		dAtA[i] = 0x12
  1148  		i++
  1149  		i = encodeVarintRpc(dAtA, i, uint64(m.Etcd.Size()))
  1150  		n5, err := m.Etcd.MarshalTo(dAtA[i:])
  1151  		if err != nil {
  1152  			return 0, err
  1153  		}
  1154  		i += n5
  1155  	}
  1156  	if m.EtcdOnSnapshotRestore != nil {
  1157  		dAtA[i] = 0xfa
  1158  		i++
  1159  		dAtA[i] = 0x12
  1160  		i++
  1161  		i = encodeVarintRpc(dAtA, i, uint64(m.EtcdOnSnapshotRestore.Size()))
  1162  		n6, err := m.EtcdOnSnapshotRestore.MarshalTo(dAtA[i:])
  1163  		if err != nil {
  1164  			return 0, err
  1165  		}
  1166  		i += n6
  1167  	}
  1168  	if len(m.ClientCertData) > 0 {
  1169  		dAtA[i] = 0x8a
  1170  		i++
  1171  		dAtA[i] = 0x19
  1172  		i++
  1173  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertData)))
  1174  		i += copy(dAtA[i:], m.ClientCertData)
  1175  	}
  1176  	if len(m.ClientCertPath) > 0 {
  1177  		dAtA[i] = 0x92
  1178  		i++
  1179  		dAtA[i] = 0x19
  1180  		i++
  1181  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertPath)))
  1182  		i += copy(dAtA[i:], m.ClientCertPath)
  1183  	}
  1184  	if len(m.ClientKeyData) > 0 {
  1185  		dAtA[i] = 0x9a
  1186  		i++
  1187  		dAtA[i] = 0x19
  1188  		i++
  1189  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyData)))
  1190  		i += copy(dAtA[i:], m.ClientKeyData)
  1191  	}
  1192  	if len(m.ClientKeyPath) > 0 {
  1193  		dAtA[i] = 0xa2
  1194  		i++
  1195  		dAtA[i] = 0x19
  1196  		i++
  1197  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyPath)))
  1198  		i += copy(dAtA[i:], m.ClientKeyPath)
  1199  	}
  1200  	if len(m.ClientTrustedCAData) > 0 {
  1201  		dAtA[i] = 0xaa
  1202  		i++
  1203  		dAtA[i] = 0x19
  1204  		i++
  1205  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAData)))
  1206  		i += copy(dAtA[i:], m.ClientTrustedCAData)
  1207  	}
  1208  	if len(m.ClientTrustedCAPath) > 0 {
  1209  		dAtA[i] = 0xb2
  1210  		i++
  1211  		dAtA[i] = 0x19
  1212  		i++
  1213  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAPath)))
  1214  		i += copy(dAtA[i:], m.ClientTrustedCAPath)
  1215  	}
  1216  	if len(m.PeerCertData) > 0 {
  1217  		dAtA[i] = 0xaa
  1218  		i++
  1219  		dAtA[i] = 0x1f
  1220  		i++
  1221  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertData)))
  1222  		i += copy(dAtA[i:], m.PeerCertData)
  1223  	}
  1224  	if len(m.PeerCertPath) > 0 {
  1225  		dAtA[i] = 0xb2
  1226  		i++
  1227  		dAtA[i] = 0x1f
  1228  		i++
  1229  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertPath)))
  1230  		i += copy(dAtA[i:], m.PeerCertPath)
  1231  	}
  1232  	if len(m.PeerKeyData) > 0 {
  1233  		dAtA[i] = 0xba
  1234  		i++
  1235  		dAtA[i] = 0x1f
  1236  		i++
  1237  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyData)))
  1238  		i += copy(dAtA[i:], m.PeerKeyData)
  1239  	}
  1240  	if len(m.PeerKeyPath) > 0 {
  1241  		dAtA[i] = 0xc2
  1242  		i++
  1243  		dAtA[i] = 0x1f
  1244  		i++
  1245  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyPath)))
  1246  		i += copy(dAtA[i:], m.PeerKeyPath)
  1247  	}
  1248  	if len(m.PeerTrustedCAData) > 0 {
  1249  		dAtA[i] = 0xca
  1250  		i++
  1251  		dAtA[i] = 0x1f
  1252  		i++
  1253  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAData)))
  1254  		i += copy(dAtA[i:], m.PeerTrustedCAData)
  1255  	}
  1256  	if len(m.PeerTrustedCAPath) > 0 {
  1257  		dAtA[i] = 0xd2
  1258  		i++
  1259  		dAtA[i] = 0x1f
  1260  		i++
  1261  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAPath)))
  1262  		i += copy(dAtA[i:], m.PeerTrustedCAPath)
  1263  	}
  1264  	if len(m.SnapshotPath) > 0 {
  1265  		dAtA[i] = 0xca
  1266  		i++
  1267  		dAtA[i] = 0x25
  1268  		i++
  1269  		i = encodeVarintRpc(dAtA, i, uint64(len(m.SnapshotPath)))
  1270  		i += copy(dAtA[i:], m.SnapshotPath)
  1271  	}
  1272  	if m.SnapshotInfo != nil {
  1273  		dAtA[i] = 0xd2
  1274  		i++
  1275  		dAtA[i] = 0x25
  1276  		i++
  1277  		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotInfo.Size()))
  1278  		n7, err := m.SnapshotInfo.MarshalTo(dAtA[i:])
  1279  		if err != nil {
  1280  			return 0, err
  1281  		}
  1282  		i += n7
  1283  	}
  1284  	return i, nil
  1285  }
  1286  
  1287  func (m *Tester) Marshal() (dAtA []byte, err error) {
  1288  	size := m.Size()
  1289  	dAtA = make([]byte, size)
  1290  	n, err := m.MarshalTo(dAtA)
  1291  	if err != nil {
  1292  		return nil, err
  1293  	}
  1294  	return dAtA[:n], nil
  1295  }
  1296  
  1297  func (m *Tester) MarshalTo(dAtA []byte) (int, error) {
  1298  	var i int
  1299  	_ = i
  1300  	var l int
  1301  	_ = l
  1302  	if len(m.DataDir) > 0 {
  1303  		dAtA[i] = 0xa
  1304  		i++
  1305  		i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir)))
  1306  		i += copy(dAtA[i:], m.DataDir)
  1307  	}
  1308  	if len(m.Network) > 0 {
  1309  		dAtA[i] = 0x12
  1310  		i++
  1311  		i = encodeVarintRpc(dAtA, i, uint64(len(m.Network)))
  1312  		i += copy(dAtA[i:], m.Network)
  1313  	}
  1314  	if len(m.Addr) > 0 {
  1315  		dAtA[i] = 0x1a
  1316  		i++
  1317  		i = encodeVarintRpc(dAtA, i, uint64(len(m.Addr)))
  1318  		i += copy(dAtA[i:], m.Addr)
  1319  	}
  1320  	if m.DelayLatencyMs != 0 {
  1321  		dAtA[i] = 0x58
  1322  		i++
  1323  		i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMs))
  1324  	}
  1325  	if m.DelayLatencyMsRv != 0 {
  1326  		dAtA[i] = 0x60
  1327  		i++
  1328  		i = encodeVarintRpc(dAtA, i, uint64(m.DelayLatencyMsRv))
  1329  	}
  1330  	if m.UpdatedDelayLatencyMs != 0 {
  1331  		dAtA[i] = 0x68
  1332  		i++
  1333  		i = encodeVarintRpc(dAtA, i, uint64(m.UpdatedDelayLatencyMs))
  1334  	}
  1335  	if m.RoundLimit != 0 {
  1336  		dAtA[i] = 0xa8
  1337  		i++
  1338  		dAtA[i] = 0x1
  1339  		i++
  1340  		i = encodeVarintRpc(dAtA, i, uint64(m.RoundLimit))
  1341  	}
  1342  	if m.ExitOnCaseFail {
  1343  		dAtA[i] = 0xb0
  1344  		i++
  1345  		dAtA[i] = 0x1
  1346  		i++
  1347  		if m.ExitOnCaseFail {
  1348  			dAtA[i] = 1
  1349  		} else {
  1350  			dAtA[i] = 0
  1351  		}
  1352  		i++
  1353  	}
  1354  	if m.EnablePprof {
  1355  		dAtA[i] = 0xb8
  1356  		i++
  1357  		dAtA[i] = 0x1
  1358  		i++
  1359  		if m.EnablePprof {
  1360  			dAtA[i] = 1
  1361  		} else {
  1362  			dAtA[i] = 0
  1363  		}
  1364  		i++
  1365  	}
  1366  	if m.CaseDelayMs != 0 {
  1367  		dAtA[i] = 0xf8
  1368  		i++
  1369  		dAtA[i] = 0x1
  1370  		i++
  1371  		i = encodeVarintRpc(dAtA, i, uint64(m.CaseDelayMs))
  1372  	}
  1373  	if m.CaseShuffle {
  1374  		dAtA[i] = 0x80
  1375  		i++
  1376  		dAtA[i] = 0x2
  1377  		i++
  1378  		if m.CaseShuffle {
  1379  			dAtA[i] = 1
  1380  		} else {
  1381  			dAtA[i] = 0
  1382  		}
  1383  		i++
  1384  	}
  1385  	if len(m.Cases) > 0 {
  1386  		for _, s := range m.Cases {
  1387  			dAtA[i] = 0x8a
  1388  			i++
  1389  			dAtA[i] = 0x2
  1390  			i++
  1391  			l = len(s)
  1392  			for l >= 1<<7 {
  1393  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1394  				l >>= 7
  1395  				i++
  1396  			}
  1397  			dAtA[i] = uint8(l)
  1398  			i++
  1399  			i += copy(dAtA[i:], s)
  1400  		}
  1401  	}
  1402  	if len(m.FailpointCommands) > 0 {
  1403  		for _, s := range m.FailpointCommands {
  1404  			dAtA[i] = 0x92
  1405  			i++
  1406  			dAtA[i] = 0x2
  1407  			i++
  1408  			l = len(s)
  1409  			for l >= 1<<7 {
  1410  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1411  				l >>= 7
  1412  				i++
  1413  			}
  1414  			dAtA[i] = uint8(l)
  1415  			i++
  1416  			i += copy(dAtA[i:], s)
  1417  		}
  1418  	}
  1419  	if len(m.RunnerExecPath) > 0 {
  1420  		dAtA[i] = 0xca
  1421  		i++
  1422  		dAtA[i] = 0x2
  1423  		i++
  1424  		i = encodeVarintRpc(dAtA, i, uint64(len(m.RunnerExecPath)))
  1425  		i += copy(dAtA[i:], m.RunnerExecPath)
  1426  	}
  1427  	if len(m.ExternalExecPath) > 0 {
  1428  		dAtA[i] = 0xd2
  1429  		i++
  1430  		dAtA[i] = 0x2
  1431  		i++
  1432  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ExternalExecPath)))
  1433  		i += copy(dAtA[i:], m.ExternalExecPath)
  1434  	}
  1435  	if len(m.Stressers) > 0 {
  1436  		for _, s := range m.Stressers {
  1437  			dAtA[i] = 0xaa
  1438  			i++
  1439  			dAtA[i] = 0x6
  1440  			i++
  1441  			l = len(s)
  1442  			for l >= 1<<7 {
  1443  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1444  				l >>= 7
  1445  				i++
  1446  			}
  1447  			dAtA[i] = uint8(l)
  1448  			i++
  1449  			i += copy(dAtA[i:], s)
  1450  		}
  1451  	}
  1452  	if len(m.Checkers) > 0 {
  1453  		for _, s := range m.Checkers {
  1454  			dAtA[i] = 0xb2
  1455  			i++
  1456  			dAtA[i] = 0x6
  1457  			i++
  1458  			l = len(s)
  1459  			for l >= 1<<7 {
  1460  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1461  				l >>= 7
  1462  				i++
  1463  			}
  1464  			dAtA[i] = uint8(l)
  1465  			i++
  1466  			i += copy(dAtA[i:], s)
  1467  		}
  1468  	}
  1469  	if m.StressKeySize != 0 {
  1470  		dAtA[i] = 0xc8
  1471  		i++
  1472  		dAtA[i] = 0xc
  1473  		i++
  1474  		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySize))
  1475  	}
  1476  	if m.StressKeySizeLarge != 0 {
  1477  		dAtA[i] = 0xd0
  1478  		i++
  1479  		dAtA[i] = 0xc
  1480  		i++
  1481  		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySizeLarge))
  1482  	}
  1483  	if m.StressKeySuffixRange != 0 {
  1484  		dAtA[i] = 0xd8
  1485  		i++
  1486  		dAtA[i] = 0xc
  1487  		i++
  1488  		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRange))
  1489  	}
  1490  	if m.StressKeySuffixRangeTxn != 0 {
  1491  		dAtA[i] = 0xe0
  1492  		i++
  1493  		dAtA[i] = 0xc
  1494  		i++
  1495  		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeySuffixRangeTxn))
  1496  	}
  1497  	if m.StressKeyTxnOps != 0 {
  1498  		dAtA[i] = 0xe8
  1499  		i++
  1500  		dAtA[i] = 0xc
  1501  		i++
  1502  		i = encodeVarintRpc(dAtA, i, uint64(m.StressKeyTxnOps))
  1503  	}
  1504  	if m.StressClients != 0 {
  1505  		dAtA[i] = 0xe8
  1506  		i++
  1507  		dAtA[i] = 0x12
  1508  		i++
  1509  		i = encodeVarintRpc(dAtA, i, uint64(m.StressClients))
  1510  	}
  1511  	if m.StressQPS != 0 {
  1512  		dAtA[i] = 0xf0
  1513  		i++
  1514  		dAtA[i] = 0x12
  1515  		i++
  1516  		i = encodeVarintRpc(dAtA, i, uint64(m.StressQPS))
  1517  	}
  1518  	return i, nil
  1519  }
  1520  
  1521  func (m *Etcd) Marshal() (dAtA []byte, err error) {
  1522  	size := m.Size()
  1523  	dAtA = make([]byte, size)
  1524  	n, err := m.MarshalTo(dAtA)
  1525  	if err != nil {
  1526  		return nil, err
  1527  	}
  1528  	return dAtA[:n], nil
  1529  }
  1530  
  1531  func (m *Etcd) MarshalTo(dAtA []byte) (int, error) {
  1532  	var i int
  1533  	_ = i
  1534  	var l int
  1535  	_ = l
  1536  	if len(m.Name) > 0 {
  1537  		dAtA[i] = 0xa
  1538  		i++
  1539  		i = encodeVarintRpc(dAtA, i, uint64(len(m.Name)))
  1540  		i += copy(dAtA[i:], m.Name)
  1541  	}
  1542  	if len(m.DataDir) > 0 {
  1543  		dAtA[i] = 0x12
  1544  		i++
  1545  		i = encodeVarintRpc(dAtA, i, uint64(len(m.DataDir)))
  1546  		i += copy(dAtA[i:], m.DataDir)
  1547  	}
  1548  	if len(m.WALDir) > 0 {
  1549  		dAtA[i] = 0x1a
  1550  		i++
  1551  		i = encodeVarintRpc(dAtA, i, uint64(len(m.WALDir)))
  1552  		i += copy(dAtA[i:], m.WALDir)
  1553  	}
  1554  	if m.HeartbeatIntervalMs != 0 {
  1555  		dAtA[i] = 0x58
  1556  		i++
  1557  		i = encodeVarintRpc(dAtA, i, uint64(m.HeartbeatIntervalMs))
  1558  	}
  1559  	if m.ElectionTimeoutMs != 0 {
  1560  		dAtA[i] = 0x60
  1561  		i++
  1562  		i = encodeVarintRpc(dAtA, i, uint64(m.ElectionTimeoutMs))
  1563  	}
  1564  	if len(m.ListenClientURLs) > 0 {
  1565  		for _, s := range m.ListenClientURLs {
  1566  			dAtA[i] = 0xaa
  1567  			i++
  1568  			dAtA[i] = 0x1
  1569  			i++
  1570  			l = len(s)
  1571  			for l >= 1<<7 {
  1572  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1573  				l >>= 7
  1574  				i++
  1575  			}
  1576  			dAtA[i] = uint8(l)
  1577  			i++
  1578  			i += copy(dAtA[i:], s)
  1579  		}
  1580  	}
  1581  	if len(m.AdvertiseClientURLs) > 0 {
  1582  		for _, s := range m.AdvertiseClientURLs {
  1583  			dAtA[i] = 0xb2
  1584  			i++
  1585  			dAtA[i] = 0x1
  1586  			i++
  1587  			l = len(s)
  1588  			for l >= 1<<7 {
  1589  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1590  				l >>= 7
  1591  				i++
  1592  			}
  1593  			dAtA[i] = uint8(l)
  1594  			i++
  1595  			i += copy(dAtA[i:], s)
  1596  		}
  1597  	}
  1598  	if m.ClientAutoTLS {
  1599  		dAtA[i] = 0xb8
  1600  		i++
  1601  		dAtA[i] = 0x1
  1602  		i++
  1603  		if m.ClientAutoTLS {
  1604  			dAtA[i] = 1
  1605  		} else {
  1606  			dAtA[i] = 0
  1607  		}
  1608  		i++
  1609  	}
  1610  	if m.ClientCertAuth {
  1611  		dAtA[i] = 0xc0
  1612  		i++
  1613  		dAtA[i] = 0x1
  1614  		i++
  1615  		if m.ClientCertAuth {
  1616  			dAtA[i] = 1
  1617  		} else {
  1618  			dAtA[i] = 0
  1619  		}
  1620  		i++
  1621  	}
  1622  	if len(m.ClientCertFile) > 0 {
  1623  		dAtA[i] = 0xca
  1624  		i++
  1625  		dAtA[i] = 0x1
  1626  		i++
  1627  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientCertFile)))
  1628  		i += copy(dAtA[i:], m.ClientCertFile)
  1629  	}
  1630  	if len(m.ClientKeyFile) > 0 {
  1631  		dAtA[i] = 0xd2
  1632  		i++
  1633  		dAtA[i] = 0x1
  1634  		i++
  1635  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientKeyFile)))
  1636  		i += copy(dAtA[i:], m.ClientKeyFile)
  1637  	}
  1638  	if len(m.ClientTrustedCAFile) > 0 {
  1639  		dAtA[i] = 0xda
  1640  		i++
  1641  		dAtA[i] = 0x1
  1642  		i++
  1643  		i = encodeVarintRpc(dAtA, i, uint64(len(m.ClientTrustedCAFile)))
  1644  		i += copy(dAtA[i:], m.ClientTrustedCAFile)
  1645  	}
  1646  	if len(m.ListenPeerURLs) > 0 {
  1647  		for _, s := range m.ListenPeerURLs {
  1648  			dAtA[i] = 0xfa
  1649  			i++
  1650  			dAtA[i] = 0x1
  1651  			i++
  1652  			l = len(s)
  1653  			for l >= 1<<7 {
  1654  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1655  				l >>= 7
  1656  				i++
  1657  			}
  1658  			dAtA[i] = uint8(l)
  1659  			i++
  1660  			i += copy(dAtA[i:], s)
  1661  		}
  1662  	}
  1663  	if len(m.AdvertisePeerURLs) > 0 {
  1664  		for _, s := range m.AdvertisePeerURLs {
  1665  			dAtA[i] = 0x82
  1666  			i++
  1667  			dAtA[i] = 0x2
  1668  			i++
  1669  			l = len(s)
  1670  			for l >= 1<<7 {
  1671  				dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
  1672  				l >>= 7
  1673  				i++
  1674  			}
  1675  			dAtA[i] = uint8(l)
  1676  			i++
  1677  			i += copy(dAtA[i:], s)
  1678  		}
  1679  	}
  1680  	if m.PeerAutoTLS {
  1681  		dAtA[i] = 0x88
  1682  		i++
  1683  		dAtA[i] = 0x2
  1684  		i++
  1685  		if m.PeerAutoTLS {
  1686  			dAtA[i] = 1
  1687  		} else {
  1688  			dAtA[i] = 0
  1689  		}
  1690  		i++
  1691  	}
  1692  	if m.PeerClientCertAuth {
  1693  		dAtA[i] = 0x90
  1694  		i++
  1695  		dAtA[i] = 0x2
  1696  		i++
  1697  		if m.PeerClientCertAuth {
  1698  			dAtA[i] = 1
  1699  		} else {
  1700  			dAtA[i] = 0
  1701  		}
  1702  		i++
  1703  	}
  1704  	if len(m.PeerCertFile) > 0 {
  1705  		dAtA[i] = 0x9a
  1706  		i++
  1707  		dAtA[i] = 0x2
  1708  		i++
  1709  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerCertFile)))
  1710  		i += copy(dAtA[i:], m.PeerCertFile)
  1711  	}
  1712  	if len(m.PeerKeyFile) > 0 {
  1713  		dAtA[i] = 0xa2
  1714  		i++
  1715  		dAtA[i] = 0x2
  1716  		i++
  1717  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerKeyFile)))
  1718  		i += copy(dAtA[i:], m.PeerKeyFile)
  1719  	}
  1720  	if len(m.PeerTrustedCAFile) > 0 {
  1721  		dAtA[i] = 0xaa
  1722  		i++
  1723  		dAtA[i] = 0x2
  1724  		i++
  1725  		i = encodeVarintRpc(dAtA, i, uint64(len(m.PeerTrustedCAFile)))
  1726  		i += copy(dAtA[i:], m.PeerTrustedCAFile)
  1727  	}
  1728  	if len(m.InitialCluster) > 0 {
  1729  		dAtA[i] = 0xca
  1730  		i++
  1731  		dAtA[i] = 0x2
  1732  		i++
  1733  		i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialCluster)))
  1734  		i += copy(dAtA[i:], m.InitialCluster)
  1735  	}
  1736  	if len(m.InitialClusterState) > 0 {
  1737  		dAtA[i] = 0xd2
  1738  		i++
  1739  		dAtA[i] = 0x2
  1740  		i++
  1741  		i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterState)))
  1742  		i += copy(dAtA[i:], m.InitialClusterState)
  1743  	}
  1744  	if len(m.InitialClusterToken) > 0 {
  1745  		dAtA[i] = 0xda
  1746  		i++
  1747  		dAtA[i] = 0x2
  1748  		i++
  1749  		i = encodeVarintRpc(dAtA, i, uint64(len(m.InitialClusterToken)))
  1750  		i += copy(dAtA[i:], m.InitialClusterToken)
  1751  	}
  1752  	if m.SnapshotCount != 0 {
  1753  		dAtA[i] = 0x98
  1754  		i++
  1755  		dAtA[i] = 0x3
  1756  		i++
  1757  		i = encodeVarintRpc(dAtA, i, uint64(m.SnapshotCount))
  1758  	}
  1759  	if m.QuotaBackendBytes != 0 {
  1760  		dAtA[i] = 0xa0
  1761  		i++
  1762  		dAtA[i] = 0x3
  1763  		i++
  1764  		i = encodeVarintRpc(dAtA, i, uint64(m.QuotaBackendBytes))
  1765  	}
  1766  	if m.PreVote {
  1767  		dAtA[i] = 0xf8
  1768  		i++
  1769  		dAtA[i] = 0x3
  1770  		i++
  1771  		if m.PreVote {
  1772  			dAtA[i] = 1
  1773  		} else {
  1774  			dAtA[i] = 0
  1775  		}
  1776  		i++
  1777  	}
  1778  	if m.InitialCorruptCheck {
  1779  		dAtA[i] = 0x80
  1780  		i++
  1781  		dAtA[i] = 0x4
  1782  		i++
  1783  		if m.InitialCorruptCheck {
  1784  			dAtA[i] = 1
  1785  		} else {
  1786  			dAtA[i] = 0
  1787  		}
  1788  		i++
  1789  	}
  1790  	return i, nil
  1791  }
  1792  
  1793  func encodeVarintRpc(dAtA []byte, offset int, v uint64) int {
  1794  	for v >= 1<<7 {
  1795  		dAtA[offset] = uint8(v&0x7f | 0x80)
  1796  		v >>= 7
  1797  		offset++
  1798  	}
  1799  	dAtA[offset] = uint8(v)
  1800  	return offset + 1
  1801  }
  1802  func (m *Request) Size() (n int) {
  1803  	var l int
  1804  	_ = l
  1805  	if m.Operation != 0 {
  1806  		n += 1 + sovRpc(uint64(m.Operation))
  1807  	}
  1808  	if m.Member != nil {
  1809  		l = m.Member.Size()
  1810  		n += 1 + l + sovRpc(uint64(l))
  1811  	}
  1812  	if m.Tester != nil {
  1813  		l = m.Tester.Size()
  1814  		n += 1 + l + sovRpc(uint64(l))
  1815  	}
  1816  	return n
  1817  }
  1818  
  1819  func (m *SnapshotInfo) Size() (n int) {
  1820  	var l int
  1821  	_ = l
  1822  	l = len(m.MemberName)
  1823  	if l > 0 {
  1824  		n += 1 + l + sovRpc(uint64(l))
  1825  	}
  1826  	if len(m.MemberClientURLs) > 0 {
  1827  		for _, s := range m.MemberClientURLs {
  1828  			l = len(s)
  1829  			n += 1 + l + sovRpc(uint64(l))
  1830  		}
  1831  	}
  1832  	l = len(m.SnapshotPath)
  1833  	if l > 0 {
  1834  		n += 1 + l + sovRpc(uint64(l))
  1835  	}
  1836  	l = len(m.SnapshotFileSize)
  1837  	if l > 0 {
  1838  		n += 1 + l + sovRpc(uint64(l))
  1839  	}
  1840  	l = len(m.SnapshotTotalSize)
  1841  	if l > 0 {
  1842  		n += 1 + l + sovRpc(uint64(l))
  1843  	}
  1844  	if m.SnapshotTotalKey != 0 {
  1845  		n += 1 + sovRpc(uint64(m.SnapshotTotalKey))
  1846  	}
  1847  	if m.SnapshotHash != 0 {
  1848  		n += 1 + sovRpc(uint64(m.SnapshotHash))
  1849  	}
  1850  	if m.SnapshotRevision != 0 {
  1851  		n += 1 + sovRpc(uint64(m.SnapshotRevision))
  1852  	}
  1853  	l = len(m.Took)
  1854  	if l > 0 {
  1855  		n += 1 + l + sovRpc(uint64(l))
  1856  	}
  1857  	return n
  1858  }
  1859  
  1860  func (m *Response) Size() (n int) {
  1861  	var l int
  1862  	_ = l
  1863  	if m.Success {
  1864  		n += 2
  1865  	}
  1866  	l = len(m.Status)
  1867  	if l > 0 {
  1868  		n += 1 + l + sovRpc(uint64(l))
  1869  	}
  1870  	if m.Member != nil {
  1871  		l = m.Member.Size()
  1872  		n += 1 + l + sovRpc(uint64(l))
  1873  	}
  1874  	if m.SnapshotInfo != nil {
  1875  		l = m.SnapshotInfo.Size()
  1876  		n += 1 + l + sovRpc(uint64(l))
  1877  	}
  1878  	return n
  1879  }
  1880  
  1881  func (m *Member) Size() (n int) {
  1882  	var l int
  1883  	_ = l
  1884  	l = len(m.EtcdExecPath)
  1885  	if l > 0 {
  1886  		n += 1 + l + sovRpc(uint64(l))
  1887  	}
  1888  	l = len(m.AgentAddr)
  1889  	if l > 0 {
  1890  		n += 1 + l + sovRpc(uint64(l))
  1891  	}
  1892  	l = len(m.FailpointHTTPAddr)
  1893  	if l > 0 {
  1894  		n += 1 + l + sovRpc(uint64(l))
  1895  	}
  1896  	l = len(m.BaseDir)
  1897  	if l > 0 {
  1898  		n += 2 + l + sovRpc(uint64(l))
  1899  	}
  1900  	l = len(m.EtcdLogPath)
  1901  	if l > 0 {
  1902  		n += 2 + l + sovRpc(uint64(l))
  1903  	}
  1904  	if m.EtcdClientProxy {
  1905  		n += 3
  1906  	}
  1907  	if m.EtcdPeerProxy {
  1908  		n += 3
  1909  	}
  1910  	l = len(m.EtcdClientEndpoint)
  1911  	if l > 0 {
  1912  		n += 2 + l + sovRpc(uint64(l))
  1913  	}
  1914  	if m.Etcd != nil {
  1915  		l = m.Etcd.Size()
  1916  		n += 2 + l + sovRpc(uint64(l))
  1917  	}
  1918  	if m.EtcdOnSnapshotRestore != nil {
  1919  		l = m.EtcdOnSnapshotRestore.Size()
  1920  		n += 2 + l + sovRpc(uint64(l))
  1921  	}
  1922  	l = len(m.ClientCertData)
  1923  	if l > 0 {
  1924  		n += 2 + l + sovRpc(uint64(l))
  1925  	}
  1926  	l = len(m.ClientCertPath)
  1927  	if l > 0 {
  1928  		n += 2 + l + sovRpc(uint64(l))
  1929  	}
  1930  	l = len(m.ClientKeyData)
  1931  	if l > 0 {
  1932  		n += 2 + l + sovRpc(uint64(l))
  1933  	}
  1934  	l = len(m.ClientKeyPath)
  1935  	if l > 0 {
  1936  		n += 2 + l + sovRpc(uint64(l))
  1937  	}
  1938  	l = len(m.ClientTrustedCAData)
  1939  	if l > 0 {
  1940  		n += 2 + l + sovRpc(uint64(l))
  1941  	}
  1942  	l = len(m.ClientTrustedCAPath)
  1943  	if l > 0 {
  1944  		n += 2 + l + sovRpc(uint64(l))
  1945  	}
  1946  	l = len(m.PeerCertData)
  1947  	if l > 0 {
  1948  		n += 2 + l + sovRpc(uint64(l))
  1949  	}
  1950  	l = len(m.PeerCertPath)
  1951  	if l > 0 {
  1952  		n += 2 + l + sovRpc(uint64(l))
  1953  	}
  1954  	l = len(m.PeerKeyData)
  1955  	if l > 0 {
  1956  		n += 2 + l + sovRpc(uint64(l))
  1957  	}
  1958  	l = len(m.PeerKeyPath)
  1959  	if l > 0 {
  1960  		n += 2 + l + sovRpc(uint64(l))
  1961  	}
  1962  	l = len(m.PeerTrustedCAData)
  1963  	if l > 0 {
  1964  		n += 2 + l + sovRpc(uint64(l))
  1965  	}
  1966  	l = len(m.PeerTrustedCAPath)
  1967  	if l > 0 {
  1968  		n += 2 + l + sovRpc(uint64(l))
  1969  	}
  1970  	l = len(m.SnapshotPath)
  1971  	if l > 0 {
  1972  		n += 2 + l + sovRpc(uint64(l))
  1973  	}
  1974  	if m.SnapshotInfo != nil {
  1975  		l = m.SnapshotInfo.Size()
  1976  		n += 2 + l + sovRpc(uint64(l))
  1977  	}
  1978  	return n
  1979  }
  1980  
  1981  func (m *Tester) Size() (n int) {
  1982  	var l int
  1983  	_ = l
  1984  	l = len(m.DataDir)
  1985  	if l > 0 {
  1986  		n += 1 + l + sovRpc(uint64(l))
  1987  	}
  1988  	l = len(m.Network)
  1989  	if l > 0 {
  1990  		n += 1 + l + sovRpc(uint64(l))
  1991  	}
  1992  	l = len(m.Addr)
  1993  	if l > 0 {
  1994  		n += 1 + l + sovRpc(uint64(l))
  1995  	}
  1996  	if m.DelayLatencyMs != 0 {
  1997  		n += 1 + sovRpc(uint64(m.DelayLatencyMs))
  1998  	}
  1999  	if m.DelayLatencyMsRv != 0 {
  2000  		n += 1 + sovRpc(uint64(m.DelayLatencyMsRv))
  2001  	}
  2002  	if m.UpdatedDelayLatencyMs != 0 {
  2003  		n += 1 + sovRpc(uint64(m.UpdatedDelayLatencyMs))
  2004  	}
  2005  	if m.RoundLimit != 0 {
  2006  		n += 2 + sovRpc(uint64(m.RoundLimit))
  2007  	}
  2008  	if m.ExitOnCaseFail {
  2009  		n += 3
  2010  	}
  2011  	if m.EnablePprof {
  2012  		n += 3
  2013  	}
  2014  	if m.CaseDelayMs != 0 {
  2015  		n += 2 + sovRpc(uint64(m.CaseDelayMs))
  2016  	}
  2017  	if m.CaseShuffle {
  2018  		n += 3
  2019  	}
  2020  	if len(m.Cases) > 0 {
  2021  		for _, s := range m.Cases {
  2022  			l = len(s)
  2023  			n += 2 + l + sovRpc(uint64(l))
  2024  		}
  2025  	}
  2026  	if len(m.FailpointCommands) > 0 {
  2027  		for _, s := range m.FailpointCommands {
  2028  			l = len(s)
  2029  			n += 2 + l + sovRpc(uint64(l))
  2030  		}
  2031  	}
  2032  	l = len(m.RunnerExecPath)
  2033  	if l > 0 {
  2034  		n += 2 + l + sovRpc(uint64(l))
  2035  	}
  2036  	l = len(m.ExternalExecPath)
  2037  	if l > 0 {
  2038  		n += 2 + l + sovRpc(uint64(l))
  2039  	}
  2040  	if len(m.Stressers) > 0 {
  2041  		for _, s := range m.Stressers {
  2042  			l = len(s)
  2043  			n += 2 + l + sovRpc(uint64(l))
  2044  		}
  2045  	}
  2046  	if len(m.Checkers) > 0 {
  2047  		for _, s := range m.Checkers {
  2048  			l = len(s)
  2049  			n += 2 + l + sovRpc(uint64(l))
  2050  		}
  2051  	}
  2052  	if m.StressKeySize != 0 {
  2053  		n += 2 + sovRpc(uint64(m.StressKeySize))
  2054  	}
  2055  	if m.StressKeySizeLarge != 0 {
  2056  		n += 2 + sovRpc(uint64(m.StressKeySizeLarge))
  2057  	}
  2058  	if m.StressKeySuffixRange != 0 {
  2059  		n += 2 + sovRpc(uint64(m.StressKeySuffixRange))
  2060  	}
  2061  	if m.StressKeySuffixRangeTxn != 0 {
  2062  		n += 2 + sovRpc(uint64(m.StressKeySuffixRangeTxn))
  2063  	}
  2064  	if m.StressKeyTxnOps != 0 {
  2065  		n += 2 + sovRpc(uint64(m.StressKeyTxnOps))
  2066  	}
  2067  	if m.StressClients != 0 {
  2068  		n += 2 + sovRpc(uint64(m.StressClients))
  2069  	}
  2070  	if m.StressQPS != 0 {
  2071  		n += 2 + sovRpc(uint64(m.StressQPS))
  2072  	}
  2073  	return n
  2074  }
  2075  
  2076  func (m *Etcd) Size() (n int) {
  2077  	var l int
  2078  	_ = l
  2079  	l = len(m.Name)
  2080  	if l > 0 {
  2081  		n += 1 + l + sovRpc(uint64(l))
  2082  	}
  2083  	l = len(m.DataDir)
  2084  	if l > 0 {
  2085  		n += 1 + l + sovRpc(uint64(l))
  2086  	}
  2087  	l = len(m.WALDir)
  2088  	if l > 0 {
  2089  		n += 1 + l + sovRpc(uint64(l))
  2090  	}
  2091  	if m.HeartbeatIntervalMs != 0 {
  2092  		n += 1 + sovRpc(uint64(m.HeartbeatIntervalMs))
  2093  	}
  2094  	if m.ElectionTimeoutMs != 0 {
  2095  		n += 1 + sovRpc(uint64(m.ElectionTimeoutMs))
  2096  	}
  2097  	if len(m.ListenClientURLs) > 0 {
  2098  		for _, s := range m.ListenClientURLs {
  2099  			l = len(s)
  2100  			n += 2 + l + sovRpc(uint64(l))
  2101  		}
  2102  	}
  2103  	if len(m.AdvertiseClientURLs) > 0 {
  2104  		for _, s := range m.AdvertiseClientURLs {
  2105  			l = len(s)
  2106  			n += 2 + l + sovRpc(uint64(l))
  2107  		}
  2108  	}
  2109  	if m.ClientAutoTLS {
  2110  		n += 3
  2111  	}
  2112  	if m.ClientCertAuth {
  2113  		n += 3
  2114  	}
  2115  	l = len(m.ClientCertFile)
  2116  	if l > 0 {
  2117  		n += 2 + l + sovRpc(uint64(l))
  2118  	}
  2119  	l = len(m.ClientKeyFile)
  2120  	if l > 0 {
  2121  		n += 2 + l + sovRpc(uint64(l))
  2122  	}
  2123  	l = len(m.ClientTrustedCAFile)
  2124  	if l > 0 {
  2125  		n += 2 + l + sovRpc(uint64(l))
  2126  	}
  2127  	if len(m.ListenPeerURLs) > 0 {
  2128  		for _, s := range m.ListenPeerURLs {
  2129  			l = len(s)
  2130  			n += 2 + l + sovRpc(uint64(l))
  2131  		}
  2132  	}
  2133  	if len(m.AdvertisePeerURLs) > 0 {
  2134  		for _, s := range m.AdvertisePeerURLs {
  2135  			l = len(s)
  2136  			n += 2 + l + sovRpc(uint64(l))
  2137  		}
  2138  	}
  2139  	if m.PeerAutoTLS {
  2140  		n += 3
  2141  	}
  2142  	if m.PeerClientCertAuth {
  2143  		n += 3
  2144  	}
  2145  	l = len(m.PeerCertFile)
  2146  	if l > 0 {
  2147  		n += 2 + l + sovRpc(uint64(l))
  2148  	}
  2149  	l = len(m.PeerKeyFile)
  2150  	if l > 0 {
  2151  		n += 2 + l + sovRpc(uint64(l))
  2152  	}
  2153  	l = len(m.PeerTrustedCAFile)
  2154  	if l > 0 {
  2155  		n += 2 + l + sovRpc(uint64(l))
  2156  	}
  2157  	l = len(m.InitialCluster)
  2158  	if l > 0 {
  2159  		n += 2 + l + sovRpc(uint64(l))
  2160  	}
  2161  	l = len(m.InitialClusterState)
  2162  	if l > 0 {
  2163  		n += 2 + l + sovRpc(uint64(l))
  2164  	}
  2165  	l = len(m.InitialClusterToken)
  2166  	if l > 0 {
  2167  		n += 2 + l + sovRpc(uint64(l))
  2168  	}
  2169  	if m.SnapshotCount != 0 {
  2170  		n += 2 + sovRpc(uint64(m.SnapshotCount))
  2171  	}
  2172  	if m.QuotaBackendBytes != 0 {
  2173  		n += 2 + sovRpc(uint64(m.QuotaBackendBytes))
  2174  	}
  2175  	if m.PreVote {
  2176  		n += 3
  2177  	}
  2178  	if m.InitialCorruptCheck {
  2179  		n += 3
  2180  	}
  2181  	return n
  2182  }
  2183  
  2184  func sovRpc(x uint64) (n int) {
  2185  	for {
  2186  		n++
  2187  		x >>= 7
  2188  		if x == 0 {
  2189  			break
  2190  		}
  2191  	}
  2192  	return n
  2193  }
  2194  func sozRpc(x uint64) (n int) {
  2195  	return sovRpc(uint64((x << 1) ^ uint64((int64(x) >> 63))))
  2196  }
  2197  func (m *Request) Unmarshal(dAtA []byte) error {
  2198  	l := len(dAtA)
  2199  	iNdEx := 0
  2200  	for iNdEx < l {
  2201  		preIndex := iNdEx
  2202  		var wire uint64
  2203  		for shift := uint(0); ; shift += 7 {
  2204  			if shift >= 64 {
  2205  				return ErrIntOverflowRpc
  2206  			}
  2207  			if iNdEx >= l {
  2208  				return io.ErrUnexpectedEOF
  2209  			}
  2210  			b := dAtA[iNdEx]
  2211  			iNdEx++
  2212  			wire |= (uint64(b) & 0x7F) << shift
  2213  			if b < 0x80 {
  2214  				break
  2215  			}
  2216  		}
  2217  		fieldNum := int32(wire >> 3)
  2218  		wireType := int(wire & 0x7)
  2219  		if wireType == 4 {
  2220  			return fmt.Errorf("proto: Request: wiretype end group for non-group")
  2221  		}
  2222  		if fieldNum <= 0 {
  2223  			return fmt.Errorf("proto: Request: illegal tag %d (wire type %d)", fieldNum, wire)
  2224  		}
  2225  		switch fieldNum {
  2226  		case 1:
  2227  			if wireType != 0 {
  2228  				return fmt.Errorf("proto: wrong wireType = %d for field Operation", wireType)
  2229  			}
  2230  			m.Operation = 0
  2231  			for shift := uint(0); ; shift += 7 {
  2232  				if shift >= 64 {
  2233  					return ErrIntOverflowRpc
  2234  				}
  2235  				if iNdEx >= l {
  2236  					return io.ErrUnexpectedEOF
  2237  				}
  2238  				b := dAtA[iNdEx]
  2239  				iNdEx++
  2240  				m.Operation |= (Operation(b) & 0x7F) << shift
  2241  				if b < 0x80 {
  2242  					break
  2243  				}
  2244  			}
  2245  		case 2:
  2246  			if wireType != 2 {
  2247  				return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType)
  2248  			}
  2249  			var msglen int
  2250  			for shift := uint(0); ; shift += 7 {
  2251  				if shift >= 64 {
  2252  					return ErrIntOverflowRpc
  2253  				}
  2254  				if iNdEx >= l {
  2255  					return io.ErrUnexpectedEOF
  2256  				}
  2257  				b := dAtA[iNdEx]
  2258  				iNdEx++
  2259  				msglen |= (int(b) & 0x7F) << shift
  2260  				if b < 0x80 {
  2261  					break
  2262  				}
  2263  			}
  2264  			if msglen < 0 {
  2265  				return ErrInvalidLengthRpc
  2266  			}
  2267  			postIndex := iNdEx + msglen
  2268  			if postIndex > l {
  2269  				return io.ErrUnexpectedEOF
  2270  			}
  2271  			if m.Member == nil {
  2272  				m.Member = &Member{}
  2273  			}
  2274  			if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2275  				return err
  2276  			}
  2277  			iNdEx = postIndex
  2278  		case 3:
  2279  			if wireType != 2 {
  2280  				return fmt.Errorf("proto: wrong wireType = %d for field Tester", wireType)
  2281  			}
  2282  			var msglen int
  2283  			for shift := uint(0); ; shift += 7 {
  2284  				if shift >= 64 {
  2285  					return ErrIntOverflowRpc
  2286  				}
  2287  				if iNdEx >= l {
  2288  					return io.ErrUnexpectedEOF
  2289  				}
  2290  				b := dAtA[iNdEx]
  2291  				iNdEx++
  2292  				msglen |= (int(b) & 0x7F) << shift
  2293  				if b < 0x80 {
  2294  					break
  2295  				}
  2296  			}
  2297  			if msglen < 0 {
  2298  				return ErrInvalidLengthRpc
  2299  			}
  2300  			postIndex := iNdEx + msglen
  2301  			if postIndex > l {
  2302  				return io.ErrUnexpectedEOF
  2303  			}
  2304  			if m.Tester == nil {
  2305  				m.Tester = &Tester{}
  2306  			}
  2307  			if err := m.Tester.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2308  				return err
  2309  			}
  2310  			iNdEx = postIndex
  2311  		default:
  2312  			iNdEx = preIndex
  2313  			skippy, err := skipRpc(dAtA[iNdEx:])
  2314  			if err != nil {
  2315  				return err
  2316  			}
  2317  			if skippy < 0 {
  2318  				return ErrInvalidLengthRpc
  2319  			}
  2320  			if (iNdEx + skippy) > l {
  2321  				return io.ErrUnexpectedEOF
  2322  			}
  2323  			iNdEx += skippy
  2324  		}
  2325  	}
  2326  
  2327  	if iNdEx > l {
  2328  		return io.ErrUnexpectedEOF
  2329  	}
  2330  	return nil
  2331  }
  2332  func (m *SnapshotInfo) Unmarshal(dAtA []byte) error {
  2333  	l := len(dAtA)
  2334  	iNdEx := 0
  2335  	for iNdEx < l {
  2336  		preIndex := iNdEx
  2337  		var wire uint64
  2338  		for shift := uint(0); ; shift += 7 {
  2339  			if shift >= 64 {
  2340  				return ErrIntOverflowRpc
  2341  			}
  2342  			if iNdEx >= l {
  2343  				return io.ErrUnexpectedEOF
  2344  			}
  2345  			b := dAtA[iNdEx]
  2346  			iNdEx++
  2347  			wire |= (uint64(b) & 0x7F) << shift
  2348  			if b < 0x80 {
  2349  				break
  2350  			}
  2351  		}
  2352  		fieldNum := int32(wire >> 3)
  2353  		wireType := int(wire & 0x7)
  2354  		if wireType == 4 {
  2355  			return fmt.Errorf("proto: SnapshotInfo: wiretype end group for non-group")
  2356  		}
  2357  		if fieldNum <= 0 {
  2358  			return fmt.Errorf("proto: SnapshotInfo: illegal tag %d (wire type %d)", fieldNum, wire)
  2359  		}
  2360  		switch fieldNum {
  2361  		case 1:
  2362  			if wireType != 2 {
  2363  				return fmt.Errorf("proto: wrong wireType = %d for field MemberName", wireType)
  2364  			}
  2365  			var stringLen uint64
  2366  			for shift := uint(0); ; shift += 7 {
  2367  				if shift >= 64 {
  2368  					return ErrIntOverflowRpc
  2369  				}
  2370  				if iNdEx >= l {
  2371  					return io.ErrUnexpectedEOF
  2372  				}
  2373  				b := dAtA[iNdEx]
  2374  				iNdEx++
  2375  				stringLen |= (uint64(b) & 0x7F) << shift
  2376  				if b < 0x80 {
  2377  					break
  2378  				}
  2379  			}
  2380  			intStringLen := int(stringLen)
  2381  			if intStringLen < 0 {
  2382  				return ErrInvalidLengthRpc
  2383  			}
  2384  			postIndex := iNdEx + intStringLen
  2385  			if postIndex > l {
  2386  				return io.ErrUnexpectedEOF
  2387  			}
  2388  			m.MemberName = string(dAtA[iNdEx:postIndex])
  2389  			iNdEx = postIndex
  2390  		case 2:
  2391  			if wireType != 2 {
  2392  				return fmt.Errorf("proto: wrong wireType = %d for field MemberClientURLs", wireType)
  2393  			}
  2394  			var stringLen uint64
  2395  			for shift := uint(0); ; shift += 7 {
  2396  				if shift >= 64 {
  2397  					return ErrIntOverflowRpc
  2398  				}
  2399  				if iNdEx >= l {
  2400  					return io.ErrUnexpectedEOF
  2401  				}
  2402  				b := dAtA[iNdEx]
  2403  				iNdEx++
  2404  				stringLen |= (uint64(b) & 0x7F) << shift
  2405  				if b < 0x80 {
  2406  					break
  2407  				}
  2408  			}
  2409  			intStringLen := int(stringLen)
  2410  			if intStringLen < 0 {
  2411  				return ErrInvalidLengthRpc
  2412  			}
  2413  			postIndex := iNdEx + intStringLen
  2414  			if postIndex > l {
  2415  				return io.ErrUnexpectedEOF
  2416  			}
  2417  			m.MemberClientURLs = append(m.MemberClientURLs, string(dAtA[iNdEx:postIndex]))
  2418  			iNdEx = postIndex
  2419  		case 3:
  2420  			if wireType != 2 {
  2421  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotPath", wireType)
  2422  			}
  2423  			var stringLen uint64
  2424  			for shift := uint(0); ; shift += 7 {
  2425  				if shift >= 64 {
  2426  					return ErrIntOverflowRpc
  2427  				}
  2428  				if iNdEx >= l {
  2429  					return io.ErrUnexpectedEOF
  2430  				}
  2431  				b := dAtA[iNdEx]
  2432  				iNdEx++
  2433  				stringLen |= (uint64(b) & 0x7F) << shift
  2434  				if b < 0x80 {
  2435  					break
  2436  				}
  2437  			}
  2438  			intStringLen := int(stringLen)
  2439  			if intStringLen < 0 {
  2440  				return ErrInvalidLengthRpc
  2441  			}
  2442  			postIndex := iNdEx + intStringLen
  2443  			if postIndex > l {
  2444  				return io.ErrUnexpectedEOF
  2445  			}
  2446  			m.SnapshotPath = string(dAtA[iNdEx:postIndex])
  2447  			iNdEx = postIndex
  2448  		case 4:
  2449  			if wireType != 2 {
  2450  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotFileSize", wireType)
  2451  			}
  2452  			var stringLen uint64
  2453  			for shift := uint(0); ; shift += 7 {
  2454  				if shift >= 64 {
  2455  					return ErrIntOverflowRpc
  2456  				}
  2457  				if iNdEx >= l {
  2458  					return io.ErrUnexpectedEOF
  2459  				}
  2460  				b := dAtA[iNdEx]
  2461  				iNdEx++
  2462  				stringLen |= (uint64(b) & 0x7F) << shift
  2463  				if b < 0x80 {
  2464  					break
  2465  				}
  2466  			}
  2467  			intStringLen := int(stringLen)
  2468  			if intStringLen < 0 {
  2469  				return ErrInvalidLengthRpc
  2470  			}
  2471  			postIndex := iNdEx + intStringLen
  2472  			if postIndex > l {
  2473  				return io.ErrUnexpectedEOF
  2474  			}
  2475  			m.SnapshotFileSize = string(dAtA[iNdEx:postIndex])
  2476  			iNdEx = postIndex
  2477  		case 5:
  2478  			if wireType != 2 {
  2479  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotTotalSize", wireType)
  2480  			}
  2481  			var stringLen uint64
  2482  			for shift := uint(0); ; shift += 7 {
  2483  				if shift >= 64 {
  2484  					return ErrIntOverflowRpc
  2485  				}
  2486  				if iNdEx >= l {
  2487  					return io.ErrUnexpectedEOF
  2488  				}
  2489  				b := dAtA[iNdEx]
  2490  				iNdEx++
  2491  				stringLen |= (uint64(b) & 0x7F) << shift
  2492  				if b < 0x80 {
  2493  					break
  2494  				}
  2495  			}
  2496  			intStringLen := int(stringLen)
  2497  			if intStringLen < 0 {
  2498  				return ErrInvalidLengthRpc
  2499  			}
  2500  			postIndex := iNdEx + intStringLen
  2501  			if postIndex > l {
  2502  				return io.ErrUnexpectedEOF
  2503  			}
  2504  			m.SnapshotTotalSize = string(dAtA[iNdEx:postIndex])
  2505  			iNdEx = postIndex
  2506  		case 6:
  2507  			if wireType != 0 {
  2508  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotTotalKey", wireType)
  2509  			}
  2510  			m.SnapshotTotalKey = 0
  2511  			for shift := uint(0); ; shift += 7 {
  2512  				if shift >= 64 {
  2513  					return ErrIntOverflowRpc
  2514  				}
  2515  				if iNdEx >= l {
  2516  					return io.ErrUnexpectedEOF
  2517  				}
  2518  				b := dAtA[iNdEx]
  2519  				iNdEx++
  2520  				m.SnapshotTotalKey |= (int64(b) & 0x7F) << shift
  2521  				if b < 0x80 {
  2522  					break
  2523  				}
  2524  			}
  2525  		case 7:
  2526  			if wireType != 0 {
  2527  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotHash", wireType)
  2528  			}
  2529  			m.SnapshotHash = 0
  2530  			for shift := uint(0); ; shift += 7 {
  2531  				if shift >= 64 {
  2532  					return ErrIntOverflowRpc
  2533  				}
  2534  				if iNdEx >= l {
  2535  					return io.ErrUnexpectedEOF
  2536  				}
  2537  				b := dAtA[iNdEx]
  2538  				iNdEx++
  2539  				m.SnapshotHash |= (int64(b) & 0x7F) << shift
  2540  				if b < 0x80 {
  2541  					break
  2542  				}
  2543  			}
  2544  		case 8:
  2545  			if wireType != 0 {
  2546  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotRevision", wireType)
  2547  			}
  2548  			m.SnapshotRevision = 0
  2549  			for shift := uint(0); ; shift += 7 {
  2550  				if shift >= 64 {
  2551  					return ErrIntOverflowRpc
  2552  				}
  2553  				if iNdEx >= l {
  2554  					return io.ErrUnexpectedEOF
  2555  				}
  2556  				b := dAtA[iNdEx]
  2557  				iNdEx++
  2558  				m.SnapshotRevision |= (int64(b) & 0x7F) << shift
  2559  				if b < 0x80 {
  2560  					break
  2561  				}
  2562  			}
  2563  		case 9:
  2564  			if wireType != 2 {
  2565  				return fmt.Errorf("proto: wrong wireType = %d for field Took", wireType)
  2566  			}
  2567  			var stringLen uint64
  2568  			for shift := uint(0); ; shift += 7 {
  2569  				if shift >= 64 {
  2570  					return ErrIntOverflowRpc
  2571  				}
  2572  				if iNdEx >= l {
  2573  					return io.ErrUnexpectedEOF
  2574  				}
  2575  				b := dAtA[iNdEx]
  2576  				iNdEx++
  2577  				stringLen |= (uint64(b) & 0x7F) << shift
  2578  				if b < 0x80 {
  2579  					break
  2580  				}
  2581  			}
  2582  			intStringLen := int(stringLen)
  2583  			if intStringLen < 0 {
  2584  				return ErrInvalidLengthRpc
  2585  			}
  2586  			postIndex := iNdEx + intStringLen
  2587  			if postIndex > l {
  2588  				return io.ErrUnexpectedEOF
  2589  			}
  2590  			m.Took = string(dAtA[iNdEx:postIndex])
  2591  			iNdEx = postIndex
  2592  		default:
  2593  			iNdEx = preIndex
  2594  			skippy, err := skipRpc(dAtA[iNdEx:])
  2595  			if err != nil {
  2596  				return err
  2597  			}
  2598  			if skippy < 0 {
  2599  				return ErrInvalidLengthRpc
  2600  			}
  2601  			if (iNdEx + skippy) > l {
  2602  				return io.ErrUnexpectedEOF
  2603  			}
  2604  			iNdEx += skippy
  2605  		}
  2606  	}
  2607  
  2608  	if iNdEx > l {
  2609  		return io.ErrUnexpectedEOF
  2610  	}
  2611  	return nil
  2612  }
  2613  func (m *Response) Unmarshal(dAtA []byte) error {
  2614  	l := len(dAtA)
  2615  	iNdEx := 0
  2616  	for iNdEx < l {
  2617  		preIndex := iNdEx
  2618  		var wire uint64
  2619  		for shift := uint(0); ; shift += 7 {
  2620  			if shift >= 64 {
  2621  				return ErrIntOverflowRpc
  2622  			}
  2623  			if iNdEx >= l {
  2624  				return io.ErrUnexpectedEOF
  2625  			}
  2626  			b := dAtA[iNdEx]
  2627  			iNdEx++
  2628  			wire |= (uint64(b) & 0x7F) << shift
  2629  			if b < 0x80 {
  2630  				break
  2631  			}
  2632  		}
  2633  		fieldNum := int32(wire >> 3)
  2634  		wireType := int(wire & 0x7)
  2635  		if wireType == 4 {
  2636  			return fmt.Errorf("proto: Response: wiretype end group for non-group")
  2637  		}
  2638  		if fieldNum <= 0 {
  2639  			return fmt.Errorf("proto: Response: illegal tag %d (wire type %d)", fieldNum, wire)
  2640  		}
  2641  		switch fieldNum {
  2642  		case 1:
  2643  			if wireType != 0 {
  2644  				return fmt.Errorf("proto: wrong wireType = %d for field Success", wireType)
  2645  			}
  2646  			var v int
  2647  			for shift := uint(0); ; shift += 7 {
  2648  				if shift >= 64 {
  2649  					return ErrIntOverflowRpc
  2650  				}
  2651  				if iNdEx >= l {
  2652  					return io.ErrUnexpectedEOF
  2653  				}
  2654  				b := dAtA[iNdEx]
  2655  				iNdEx++
  2656  				v |= (int(b) & 0x7F) << shift
  2657  				if b < 0x80 {
  2658  					break
  2659  				}
  2660  			}
  2661  			m.Success = bool(v != 0)
  2662  		case 2:
  2663  			if wireType != 2 {
  2664  				return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
  2665  			}
  2666  			var stringLen uint64
  2667  			for shift := uint(0); ; shift += 7 {
  2668  				if shift >= 64 {
  2669  					return ErrIntOverflowRpc
  2670  				}
  2671  				if iNdEx >= l {
  2672  					return io.ErrUnexpectedEOF
  2673  				}
  2674  				b := dAtA[iNdEx]
  2675  				iNdEx++
  2676  				stringLen |= (uint64(b) & 0x7F) << shift
  2677  				if b < 0x80 {
  2678  					break
  2679  				}
  2680  			}
  2681  			intStringLen := int(stringLen)
  2682  			if intStringLen < 0 {
  2683  				return ErrInvalidLengthRpc
  2684  			}
  2685  			postIndex := iNdEx + intStringLen
  2686  			if postIndex > l {
  2687  				return io.ErrUnexpectedEOF
  2688  			}
  2689  			m.Status = string(dAtA[iNdEx:postIndex])
  2690  			iNdEx = postIndex
  2691  		case 3:
  2692  			if wireType != 2 {
  2693  				return fmt.Errorf("proto: wrong wireType = %d for field Member", wireType)
  2694  			}
  2695  			var msglen int
  2696  			for shift := uint(0); ; shift += 7 {
  2697  				if shift >= 64 {
  2698  					return ErrIntOverflowRpc
  2699  				}
  2700  				if iNdEx >= l {
  2701  					return io.ErrUnexpectedEOF
  2702  				}
  2703  				b := dAtA[iNdEx]
  2704  				iNdEx++
  2705  				msglen |= (int(b) & 0x7F) << shift
  2706  				if b < 0x80 {
  2707  					break
  2708  				}
  2709  			}
  2710  			if msglen < 0 {
  2711  				return ErrInvalidLengthRpc
  2712  			}
  2713  			postIndex := iNdEx + msglen
  2714  			if postIndex > l {
  2715  				return io.ErrUnexpectedEOF
  2716  			}
  2717  			if m.Member == nil {
  2718  				m.Member = &Member{}
  2719  			}
  2720  			if err := m.Member.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2721  				return err
  2722  			}
  2723  			iNdEx = postIndex
  2724  		case 4:
  2725  			if wireType != 2 {
  2726  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotInfo", wireType)
  2727  			}
  2728  			var msglen int
  2729  			for shift := uint(0); ; shift += 7 {
  2730  				if shift >= 64 {
  2731  					return ErrIntOverflowRpc
  2732  				}
  2733  				if iNdEx >= l {
  2734  					return io.ErrUnexpectedEOF
  2735  				}
  2736  				b := dAtA[iNdEx]
  2737  				iNdEx++
  2738  				msglen |= (int(b) & 0x7F) << shift
  2739  				if b < 0x80 {
  2740  					break
  2741  				}
  2742  			}
  2743  			if msglen < 0 {
  2744  				return ErrInvalidLengthRpc
  2745  			}
  2746  			postIndex := iNdEx + msglen
  2747  			if postIndex > l {
  2748  				return io.ErrUnexpectedEOF
  2749  			}
  2750  			if m.SnapshotInfo == nil {
  2751  				m.SnapshotInfo = &SnapshotInfo{}
  2752  			}
  2753  			if err := m.SnapshotInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  2754  				return err
  2755  			}
  2756  			iNdEx = postIndex
  2757  		default:
  2758  			iNdEx = preIndex
  2759  			skippy, err := skipRpc(dAtA[iNdEx:])
  2760  			if err != nil {
  2761  				return err
  2762  			}
  2763  			if skippy < 0 {
  2764  				return ErrInvalidLengthRpc
  2765  			}
  2766  			if (iNdEx + skippy) > l {
  2767  				return io.ErrUnexpectedEOF
  2768  			}
  2769  			iNdEx += skippy
  2770  		}
  2771  	}
  2772  
  2773  	if iNdEx > l {
  2774  		return io.ErrUnexpectedEOF
  2775  	}
  2776  	return nil
  2777  }
  2778  func (m *Member) Unmarshal(dAtA []byte) error {
  2779  	l := len(dAtA)
  2780  	iNdEx := 0
  2781  	for iNdEx < l {
  2782  		preIndex := iNdEx
  2783  		var wire uint64
  2784  		for shift := uint(0); ; shift += 7 {
  2785  			if shift >= 64 {
  2786  				return ErrIntOverflowRpc
  2787  			}
  2788  			if iNdEx >= l {
  2789  				return io.ErrUnexpectedEOF
  2790  			}
  2791  			b := dAtA[iNdEx]
  2792  			iNdEx++
  2793  			wire |= (uint64(b) & 0x7F) << shift
  2794  			if b < 0x80 {
  2795  				break
  2796  			}
  2797  		}
  2798  		fieldNum := int32(wire >> 3)
  2799  		wireType := int(wire & 0x7)
  2800  		if wireType == 4 {
  2801  			return fmt.Errorf("proto: Member: wiretype end group for non-group")
  2802  		}
  2803  		if fieldNum <= 0 {
  2804  			return fmt.Errorf("proto: Member: illegal tag %d (wire type %d)", fieldNum, wire)
  2805  		}
  2806  		switch fieldNum {
  2807  		case 1:
  2808  			if wireType != 2 {
  2809  				return fmt.Errorf("proto: wrong wireType = %d for field EtcdExecPath", wireType)
  2810  			}
  2811  			var stringLen uint64
  2812  			for shift := uint(0); ; shift += 7 {
  2813  				if shift >= 64 {
  2814  					return ErrIntOverflowRpc
  2815  				}
  2816  				if iNdEx >= l {
  2817  					return io.ErrUnexpectedEOF
  2818  				}
  2819  				b := dAtA[iNdEx]
  2820  				iNdEx++
  2821  				stringLen |= (uint64(b) & 0x7F) << shift
  2822  				if b < 0x80 {
  2823  					break
  2824  				}
  2825  			}
  2826  			intStringLen := int(stringLen)
  2827  			if intStringLen < 0 {
  2828  				return ErrInvalidLengthRpc
  2829  			}
  2830  			postIndex := iNdEx + intStringLen
  2831  			if postIndex > l {
  2832  				return io.ErrUnexpectedEOF
  2833  			}
  2834  			m.EtcdExecPath = string(dAtA[iNdEx:postIndex])
  2835  			iNdEx = postIndex
  2836  		case 11:
  2837  			if wireType != 2 {
  2838  				return fmt.Errorf("proto: wrong wireType = %d for field AgentAddr", wireType)
  2839  			}
  2840  			var stringLen uint64
  2841  			for shift := uint(0); ; shift += 7 {
  2842  				if shift >= 64 {
  2843  					return ErrIntOverflowRpc
  2844  				}
  2845  				if iNdEx >= l {
  2846  					return io.ErrUnexpectedEOF
  2847  				}
  2848  				b := dAtA[iNdEx]
  2849  				iNdEx++
  2850  				stringLen |= (uint64(b) & 0x7F) << shift
  2851  				if b < 0x80 {
  2852  					break
  2853  				}
  2854  			}
  2855  			intStringLen := int(stringLen)
  2856  			if intStringLen < 0 {
  2857  				return ErrInvalidLengthRpc
  2858  			}
  2859  			postIndex := iNdEx + intStringLen
  2860  			if postIndex > l {
  2861  				return io.ErrUnexpectedEOF
  2862  			}
  2863  			m.AgentAddr = string(dAtA[iNdEx:postIndex])
  2864  			iNdEx = postIndex
  2865  		case 12:
  2866  			if wireType != 2 {
  2867  				return fmt.Errorf("proto: wrong wireType = %d for field FailpointHTTPAddr", wireType)
  2868  			}
  2869  			var stringLen uint64
  2870  			for shift := uint(0); ; shift += 7 {
  2871  				if shift >= 64 {
  2872  					return ErrIntOverflowRpc
  2873  				}
  2874  				if iNdEx >= l {
  2875  					return io.ErrUnexpectedEOF
  2876  				}
  2877  				b := dAtA[iNdEx]
  2878  				iNdEx++
  2879  				stringLen |= (uint64(b) & 0x7F) << shift
  2880  				if b < 0x80 {
  2881  					break
  2882  				}
  2883  			}
  2884  			intStringLen := int(stringLen)
  2885  			if intStringLen < 0 {
  2886  				return ErrInvalidLengthRpc
  2887  			}
  2888  			postIndex := iNdEx + intStringLen
  2889  			if postIndex > l {
  2890  				return io.ErrUnexpectedEOF
  2891  			}
  2892  			m.FailpointHTTPAddr = string(dAtA[iNdEx:postIndex])
  2893  			iNdEx = postIndex
  2894  		case 101:
  2895  			if wireType != 2 {
  2896  				return fmt.Errorf("proto: wrong wireType = %d for field BaseDir", wireType)
  2897  			}
  2898  			var stringLen uint64
  2899  			for shift := uint(0); ; shift += 7 {
  2900  				if shift >= 64 {
  2901  					return ErrIntOverflowRpc
  2902  				}
  2903  				if iNdEx >= l {
  2904  					return io.ErrUnexpectedEOF
  2905  				}
  2906  				b := dAtA[iNdEx]
  2907  				iNdEx++
  2908  				stringLen |= (uint64(b) & 0x7F) << shift
  2909  				if b < 0x80 {
  2910  					break
  2911  				}
  2912  			}
  2913  			intStringLen := int(stringLen)
  2914  			if intStringLen < 0 {
  2915  				return ErrInvalidLengthRpc
  2916  			}
  2917  			postIndex := iNdEx + intStringLen
  2918  			if postIndex > l {
  2919  				return io.ErrUnexpectedEOF
  2920  			}
  2921  			m.BaseDir = string(dAtA[iNdEx:postIndex])
  2922  			iNdEx = postIndex
  2923  		case 102:
  2924  			if wireType != 2 {
  2925  				return fmt.Errorf("proto: wrong wireType = %d for field EtcdLogPath", wireType)
  2926  			}
  2927  			var stringLen uint64
  2928  			for shift := uint(0); ; shift += 7 {
  2929  				if shift >= 64 {
  2930  					return ErrIntOverflowRpc
  2931  				}
  2932  				if iNdEx >= l {
  2933  					return io.ErrUnexpectedEOF
  2934  				}
  2935  				b := dAtA[iNdEx]
  2936  				iNdEx++
  2937  				stringLen |= (uint64(b) & 0x7F) << shift
  2938  				if b < 0x80 {
  2939  					break
  2940  				}
  2941  			}
  2942  			intStringLen := int(stringLen)
  2943  			if intStringLen < 0 {
  2944  				return ErrInvalidLengthRpc
  2945  			}
  2946  			postIndex := iNdEx + intStringLen
  2947  			if postIndex > l {
  2948  				return io.ErrUnexpectedEOF
  2949  			}
  2950  			m.EtcdLogPath = string(dAtA[iNdEx:postIndex])
  2951  			iNdEx = postIndex
  2952  		case 201:
  2953  			if wireType != 0 {
  2954  				return fmt.Errorf("proto: wrong wireType = %d for field EtcdClientProxy", wireType)
  2955  			}
  2956  			var v int
  2957  			for shift := uint(0); ; shift += 7 {
  2958  				if shift >= 64 {
  2959  					return ErrIntOverflowRpc
  2960  				}
  2961  				if iNdEx >= l {
  2962  					return io.ErrUnexpectedEOF
  2963  				}
  2964  				b := dAtA[iNdEx]
  2965  				iNdEx++
  2966  				v |= (int(b) & 0x7F) << shift
  2967  				if b < 0x80 {
  2968  					break
  2969  				}
  2970  			}
  2971  			m.EtcdClientProxy = bool(v != 0)
  2972  		case 202:
  2973  			if wireType != 0 {
  2974  				return fmt.Errorf("proto: wrong wireType = %d for field EtcdPeerProxy", wireType)
  2975  			}
  2976  			var v int
  2977  			for shift := uint(0); ; shift += 7 {
  2978  				if shift >= 64 {
  2979  					return ErrIntOverflowRpc
  2980  				}
  2981  				if iNdEx >= l {
  2982  					return io.ErrUnexpectedEOF
  2983  				}
  2984  				b := dAtA[iNdEx]
  2985  				iNdEx++
  2986  				v |= (int(b) & 0x7F) << shift
  2987  				if b < 0x80 {
  2988  					break
  2989  				}
  2990  			}
  2991  			m.EtcdPeerProxy = bool(v != 0)
  2992  		case 301:
  2993  			if wireType != 2 {
  2994  				return fmt.Errorf("proto: wrong wireType = %d for field EtcdClientEndpoint", wireType)
  2995  			}
  2996  			var stringLen uint64
  2997  			for shift := uint(0); ; shift += 7 {
  2998  				if shift >= 64 {
  2999  					return ErrIntOverflowRpc
  3000  				}
  3001  				if iNdEx >= l {
  3002  					return io.ErrUnexpectedEOF
  3003  				}
  3004  				b := dAtA[iNdEx]
  3005  				iNdEx++
  3006  				stringLen |= (uint64(b) & 0x7F) << shift
  3007  				if b < 0x80 {
  3008  					break
  3009  				}
  3010  			}
  3011  			intStringLen := int(stringLen)
  3012  			if intStringLen < 0 {
  3013  				return ErrInvalidLengthRpc
  3014  			}
  3015  			postIndex := iNdEx + intStringLen
  3016  			if postIndex > l {
  3017  				return io.ErrUnexpectedEOF
  3018  			}
  3019  			m.EtcdClientEndpoint = string(dAtA[iNdEx:postIndex])
  3020  			iNdEx = postIndex
  3021  		case 302:
  3022  			if wireType != 2 {
  3023  				return fmt.Errorf("proto: wrong wireType = %d for field Etcd", wireType)
  3024  			}
  3025  			var msglen int
  3026  			for shift := uint(0); ; shift += 7 {
  3027  				if shift >= 64 {
  3028  					return ErrIntOverflowRpc
  3029  				}
  3030  				if iNdEx >= l {
  3031  					return io.ErrUnexpectedEOF
  3032  				}
  3033  				b := dAtA[iNdEx]
  3034  				iNdEx++
  3035  				msglen |= (int(b) & 0x7F) << shift
  3036  				if b < 0x80 {
  3037  					break
  3038  				}
  3039  			}
  3040  			if msglen < 0 {
  3041  				return ErrInvalidLengthRpc
  3042  			}
  3043  			postIndex := iNdEx + msglen
  3044  			if postIndex > l {
  3045  				return io.ErrUnexpectedEOF
  3046  			}
  3047  			if m.Etcd == nil {
  3048  				m.Etcd = &Etcd{}
  3049  			}
  3050  			if err := m.Etcd.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3051  				return err
  3052  			}
  3053  			iNdEx = postIndex
  3054  		case 303:
  3055  			if wireType != 2 {
  3056  				return fmt.Errorf("proto: wrong wireType = %d for field EtcdOnSnapshotRestore", wireType)
  3057  			}
  3058  			var msglen int
  3059  			for shift := uint(0); ; shift += 7 {
  3060  				if shift >= 64 {
  3061  					return ErrIntOverflowRpc
  3062  				}
  3063  				if iNdEx >= l {
  3064  					return io.ErrUnexpectedEOF
  3065  				}
  3066  				b := dAtA[iNdEx]
  3067  				iNdEx++
  3068  				msglen |= (int(b) & 0x7F) << shift
  3069  				if b < 0x80 {
  3070  					break
  3071  				}
  3072  			}
  3073  			if msglen < 0 {
  3074  				return ErrInvalidLengthRpc
  3075  			}
  3076  			postIndex := iNdEx + msglen
  3077  			if postIndex > l {
  3078  				return io.ErrUnexpectedEOF
  3079  			}
  3080  			if m.EtcdOnSnapshotRestore == nil {
  3081  				m.EtcdOnSnapshotRestore = &Etcd{}
  3082  			}
  3083  			if err := m.EtcdOnSnapshotRestore.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3084  				return err
  3085  			}
  3086  			iNdEx = postIndex
  3087  		case 401:
  3088  			if wireType != 2 {
  3089  				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertData", wireType)
  3090  			}
  3091  			var stringLen uint64
  3092  			for shift := uint(0); ; shift += 7 {
  3093  				if shift >= 64 {
  3094  					return ErrIntOverflowRpc
  3095  				}
  3096  				if iNdEx >= l {
  3097  					return io.ErrUnexpectedEOF
  3098  				}
  3099  				b := dAtA[iNdEx]
  3100  				iNdEx++
  3101  				stringLen |= (uint64(b) & 0x7F) << shift
  3102  				if b < 0x80 {
  3103  					break
  3104  				}
  3105  			}
  3106  			intStringLen := int(stringLen)
  3107  			if intStringLen < 0 {
  3108  				return ErrInvalidLengthRpc
  3109  			}
  3110  			postIndex := iNdEx + intStringLen
  3111  			if postIndex > l {
  3112  				return io.ErrUnexpectedEOF
  3113  			}
  3114  			m.ClientCertData = string(dAtA[iNdEx:postIndex])
  3115  			iNdEx = postIndex
  3116  		case 402:
  3117  			if wireType != 2 {
  3118  				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertPath", wireType)
  3119  			}
  3120  			var stringLen uint64
  3121  			for shift := uint(0); ; shift += 7 {
  3122  				if shift >= 64 {
  3123  					return ErrIntOverflowRpc
  3124  				}
  3125  				if iNdEx >= l {
  3126  					return io.ErrUnexpectedEOF
  3127  				}
  3128  				b := dAtA[iNdEx]
  3129  				iNdEx++
  3130  				stringLen |= (uint64(b) & 0x7F) << shift
  3131  				if b < 0x80 {
  3132  					break
  3133  				}
  3134  			}
  3135  			intStringLen := int(stringLen)
  3136  			if intStringLen < 0 {
  3137  				return ErrInvalidLengthRpc
  3138  			}
  3139  			postIndex := iNdEx + intStringLen
  3140  			if postIndex > l {
  3141  				return io.ErrUnexpectedEOF
  3142  			}
  3143  			m.ClientCertPath = string(dAtA[iNdEx:postIndex])
  3144  			iNdEx = postIndex
  3145  		case 403:
  3146  			if wireType != 2 {
  3147  				return fmt.Errorf("proto: wrong wireType = %d for field ClientKeyData", wireType)
  3148  			}
  3149  			var stringLen uint64
  3150  			for shift := uint(0); ; shift += 7 {
  3151  				if shift >= 64 {
  3152  					return ErrIntOverflowRpc
  3153  				}
  3154  				if iNdEx >= l {
  3155  					return io.ErrUnexpectedEOF
  3156  				}
  3157  				b := dAtA[iNdEx]
  3158  				iNdEx++
  3159  				stringLen |= (uint64(b) & 0x7F) << shift
  3160  				if b < 0x80 {
  3161  					break
  3162  				}
  3163  			}
  3164  			intStringLen := int(stringLen)
  3165  			if intStringLen < 0 {
  3166  				return ErrInvalidLengthRpc
  3167  			}
  3168  			postIndex := iNdEx + intStringLen
  3169  			if postIndex > l {
  3170  				return io.ErrUnexpectedEOF
  3171  			}
  3172  			m.ClientKeyData = string(dAtA[iNdEx:postIndex])
  3173  			iNdEx = postIndex
  3174  		case 404:
  3175  			if wireType != 2 {
  3176  				return fmt.Errorf("proto: wrong wireType = %d for field ClientKeyPath", wireType)
  3177  			}
  3178  			var stringLen uint64
  3179  			for shift := uint(0); ; shift += 7 {
  3180  				if shift >= 64 {
  3181  					return ErrIntOverflowRpc
  3182  				}
  3183  				if iNdEx >= l {
  3184  					return io.ErrUnexpectedEOF
  3185  				}
  3186  				b := dAtA[iNdEx]
  3187  				iNdEx++
  3188  				stringLen |= (uint64(b) & 0x7F) << shift
  3189  				if b < 0x80 {
  3190  					break
  3191  				}
  3192  			}
  3193  			intStringLen := int(stringLen)
  3194  			if intStringLen < 0 {
  3195  				return ErrInvalidLengthRpc
  3196  			}
  3197  			postIndex := iNdEx + intStringLen
  3198  			if postIndex > l {
  3199  				return io.ErrUnexpectedEOF
  3200  			}
  3201  			m.ClientKeyPath = string(dAtA[iNdEx:postIndex])
  3202  			iNdEx = postIndex
  3203  		case 405:
  3204  			if wireType != 2 {
  3205  				return fmt.Errorf("proto: wrong wireType = %d for field ClientTrustedCAData", wireType)
  3206  			}
  3207  			var stringLen uint64
  3208  			for shift := uint(0); ; shift += 7 {
  3209  				if shift >= 64 {
  3210  					return ErrIntOverflowRpc
  3211  				}
  3212  				if iNdEx >= l {
  3213  					return io.ErrUnexpectedEOF
  3214  				}
  3215  				b := dAtA[iNdEx]
  3216  				iNdEx++
  3217  				stringLen |= (uint64(b) & 0x7F) << shift
  3218  				if b < 0x80 {
  3219  					break
  3220  				}
  3221  			}
  3222  			intStringLen := int(stringLen)
  3223  			if intStringLen < 0 {
  3224  				return ErrInvalidLengthRpc
  3225  			}
  3226  			postIndex := iNdEx + intStringLen
  3227  			if postIndex > l {
  3228  				return io.ErrUnexpectedEOF
  3229  			}
  3230  			m.ClientTrustedCAData = string(dAtA[iNdEx:postIndex])
  3231  			iNdEx = postIndex
  3232  		case 406:
  3233  			if wireType != 2 {
  3234  				return fmt.Errorf("proto: wrong wireType = %d for field ClientTrustedCAPath", wireType)
  3235  			}
  3236  			var stringLen uint64
  3237  			for shift := uint(0); ; shift += 7 {
  3238  				if shift >= 64 {
  3239  					return ErrIntOverflowRpc
  3240  				}
  3241  				if iNdEx >= l {
  3242  					return io.ErrUnexpectedEOF
  3243  				}
  3244  				b := dAtA[iNdEx]
  3245  				iNdEx++
  3246  				stringLen |= (uint64(b) & 0x7F) << shift
  3247  				if b < 0x80 {
  3248  					break
  3249  				}
  3250  			}
  3251  			intStringLen := int(stringLen)
  3252  			if intStringLen < 0 {
  3253  				return ErrInvalidLengthRpc
  3254  			}
  3255  			postIndex := iNdEx + intStringLen
  3256  			if postIndex > l {
  3257  				return io.ErrUnexpectedEOF
  3258  			}
  3259  			m.ClientTrustedCAPath = string(dAtA[iNdEx:postIndex])
  3260  			iNdEx = postIndex
  3261  		case 501:
  3262  			if wireType != 2 {
  3263  				return fmt.Errorf("proto: wrong wireType = %d for field PeerCertData", wireType)
  3264  			}
  3265  			var stringLen uint64
  3266  			for shift := uint(0); ; shift += 7 {
  3267  				if shift >= 64 {
  3268  					return ErrIntOverflowRpc
  3269  				}
  3270  				if iNdEx >= l {
  3271  					return io.ErrUnexpectedEOF
  3272  				}
  3273  				b := dAtA[iNdEx]
  3274  				iNdEx++
  3275  				stringLen |= (uint64(b) & 0x7F) << shift
  3276  				if b < 0x80 {
  3277  					break
  3278  				}
  3279  			}
  3280  			intStringLen := int(stringLen)
  3281  			if intStringLen < 0 {
  3282  				return ErrInvalidLengthRpc
  3283  			}
  3284  			postIndex := iNdEx + intStringLen
  3285  			if postIndex > l {
  3286  				return io.ErrUnexpectedEOF
  3287  			}
  3288  			m.PeerCertData = string(dAtA[iNdEx:postIndex])
  3289  			iNdEx = postIndex
  3290  		case 502:
  3291  			if wireType != 2 {
  3292  				return fmt.Errorf("proto: wrong wireType = %d for field PeerCertPath", wireType)
  3293  			}
  3294  			var stringLen uint64
  3295  			for shift := uint(0); ; shift += 7 {
  3296  				if shift >= 64 {
  3297  					return ErrIntOverflowRpc
  3298  				}
  3299  				if iNdEx >= l {
  3300  					return io.ErrUnexpectedEOF
  3301  				}
  3302  				b := dAtA[iNdEx]
  3303  				iNdEx++
  3304  				stringLen |= (uint64(b) & 0x7F) << shift
  3305  				if b < 0x80 {
  3306  					break
  3307  				}
  3308  			}
  3309  			intStringLen := int(stringLen)
  3310  			if intStringLen < 0 {
  3311  				return ErrInvalidLengthRpc
  3312  			}
  3313  			postIndex := iNdEx + intStringLen
  3314  			if postIndex > l {
  3315  				return io.ErrUnexpectedEOF
  3316  			}
  3317  			m.PeerCertPath = string(dAtA[iNdEx:postIndex])
  3318  			iNdEx = postIndex
  3319  		case 503:
  3320  			if wireType != 2 {
  3321  				return fmt.Errorf("proto: wrong wireType = %d for field PeerKeyData", wireType)
  3322  			}
  3323  			var stringLen uint64
  3324  			for shift := uint(0); ; shift += 7 {
  3325  				if shift >= 64 {
  3326  					return ErrIntOverflowRpc
  3327  				}
  3328  				if iNdEx >= l {
  3329  					return io.ErrUnexpectedEOF
  3330  				}
  3331  				b := dAtA[iNdEx]
  3332  				iNdEx++
  3333  				stringLen |= (uint64(b) & 0x7F) << shift
  3334  				if b < 0x80 {
  3335  					break
  3336  				}
  3337  			}
  3338  			intStringLen := int(stringLen)
  3339  			if intStringLen < 0 {
  3340  				return ErrInvalidLengthRpc
  3341  			}
  3342  			postIndex := iNdEx + intStringLen
  3343  			if postIndex > l {
  3344  				return io.ErrUnexpectedEOF
  3345  			}
  3346  			m.PeerKeyData = string(dAtA[iNdEx:postIndex])
  3347  			iNdEx = postIndex
  3348  		case 504:
  3349  			if wireType != 2 {
  3350  				return fmt.Errorf("proto: wrong wireType = %d for field PeerKeyPath", wireType)
  3351  			}
  3352  			var stringLen uint64
  3353  			for shift := uint(0); ; shift += 7 {
  3354  				if shift >= 64 {
  3355  					return ErrIntOverflowRpc
  3356  				}
  3357  				if iNdEx >= l {
  3358  					return io.ErrUnexpectedEOF
  3359  				}
  3360  				b := dAtA[iNdEx]
  3361  				iNdEx++
  3362  				stringLen |= (uint64(b) & 0x7F) << shift
  3363  				if b < 0x80 {
  3364  					break
  3365  				}
  3366  			}
  3367  			intStringLen := int(stringLen)
  3368  			if intStringLen < 0 {
  3369  				return ErrInvalidLengthRpc
  3370  			}
  3371  			postIndex := iNdEx + intStringLen
  3372  			if postIndex > l {
  3373  				return io.ErrUnexpectedEOF
  3374  			}
  3375  			m.PeerKeyPath = string(dAtA[iNdEx:postIndex])
  3376  			iNdEx = postIndex
  3377  		case 505:
  3378  			if wireType != 2 {
  3379  				return fmt.Errorf("proto: wrong wireType = %d for field PeerTrustedCAData", wireType)
  3380  			}
  3381  			var stringLen uint64
  3382  			for shift := uint(0); ; shift += 7 {
  3383  				if shift >= 64 {
  3384  					return ErrIntOverflowRpc
  3385  				}
  3386  				if iNdEx >= l {
  3387  					return io.ErrUnexpectedEOF
  3388  				}
  3389  				b := dAtA[iNdEx]
  3390  				iNdEx++
  3391  				stringLen |= (uint64(b) & 0x7F) << shift
  3392  				if b < 0x80 {
  3393  					break
  3394  				}
  3395  			}
  3396  			intStringLen := int(stringLen)
  3397  			if intStringLen < 0 {
  3398  				return ErrInvalidLengthRpc
  3399  			}
  3400  			postIndex := iNdEx + intStringLen
  3401  			if postIndex > l {
  3402  				return io.ErrUnexpectedEOF
  3403  			}
  3404  			m.PeerTrustedCAData = string(dAtA[iNdEx:postIndex])
  3405  			iNdEx = postIndex
  3406  		case 506:
  3407  			if wireType != 2 {
  3408  				return fmt.Errorf("proto: wrong wireType = %d for field PeerTrustedCAPath", wireType)
  3409  			}
  3410  			var stringLen uint64
  3411  			for shift := uint(0); ; shift += 7 {
  3412  				if shift >= 64 {
  3413  					return ErrIntOverflowRpc
  3414  				}
  3415  				if iNdEx >= l {
  3416  					return io.ErrUnexpectedEOF
  3417  				}
  3418  				b := dAtA[iNdEx]
  3419  				iNdEx++
  3420  				stringLen |= (uint64(b) & 0x7F) << shift
  3421  				if b < 0x80 {
  3422  					break
  3423  				}
  3424  			}
  3425  			intStringLen := int(stringLen)
  3426  			if intStringLen < 0 {
  3427  				return ErrInvalidLengthRpc
  3428  			}
  3429  			postIndex := iNdEx + intStringLen
  3430  			if postIndex > l {
  3431  				return io.ErrUnexpectedEOF
  3432  			}
  3433  			m.PeerTrustedCAPath = string(dAtA[iNdEx:postIndex])
  3434  			iNdEx = postIndex
  3435  		case 601:
  3436  			if wireType != 2 {
  3437  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotPath", wireType)
  3438  			}
  3439  			var stringLen uint64
  3440  			for shift := uint(0); ; shift += 7 {
  3441  				if shift >= 64 {
  3442  					return ErrIntOverflowRpc
  3443  				}
  3444  				if iNdEx >= l {
  3445  					return io.ErrUnexpectedEOF
  3446  				}
  3447  				b := dAtA[iNdEx]
  3448  				iNdEx++
  3449  				stringLen |= (uint64(b) & 0x7F) << shift
  3450  				if b < 0x80 {
  3451  					break
  3452  				}
  3453  			}
  3454  			intStringLen := int(stringLen)
  3455  			if intStringLen < 0 {
  3456  				return ErrInvalidLengthRpc
  3457  			}
  3458  			postIndex := iNdEx + intStringLen
  3459  			if postIndex > l {
  3460  				return io.ErrUnexpectedEOF
  3461  			}
  3462  			m.SnapshotPath = string(dAtA[iNdEx:postIndex])
  3463  			iNdEx = postIndex
  3464  		case 602:
  3465  			if wireType != 2 {
  3466  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotInfo", wireType)
  3467  			}
  3468  			var msglen int
  3469  			for shift := uint(0); ; shift += 7 {
  3470  				if shift >= 64 {
  3471  					return ErrIntOverflowRpc
  3472  				}
  3473  				if iNdEx >= l {
  3474  					return io.ErrUnexpectedEOF
  3475  				}
  3476  				b := dAtA[iNdEx]
  3477  				iNdEx++
  3478  				msglen |= (int(b) & 0x7F) << shift
  3479  				if b < 0x80 {
  3480  					break
  3481  				}
  3482  			}
  3483  			if msglen < 0 {
  3484  				return ErrInvalidLengthRpc
  3485  			}
  3486  			postIndex := iNdEx + msglen
  3487  			if postIndex > l {
  3488  				return io.ErrUnexpectedEOF
  3489  			}
  3490  			if m.SnapshotInfo == nil {
  3491  				m.SnapshotInfo = &SnapshotInfo{}
  3492  			}
  3493  			if err := m.SnapshotInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  3494  				return err
  3495  			}
  3496  			iNdEx = postIndex
  3497  		default:
  3498  			iNdEx = preIndex
  3499  			skippy, err := skipRpc(dAtA[iNdEx:])
  3500  			if err != nil {
  3501  				return err
  3502  			}
  3503  			if skippy < 0 {
  3504  				return ErrInvalidLengthRpc
  3505  			}
  3506  			if (iNdEx + skippy) > l {
  3507  				return io.ErrUnexpectedEOF
  3508  			}
  3509  			iNdEx += skippy
  3510  		}
  3511  	}
  3512  
  3513  	if iNdEx > l {
  3514  		return io.ErrUnexpectedEOF
  3515  	}
  3516  	return nil
  3517  }
  3518  func (m *Tester) Unmarshal(dAtA []byte) error {
  3519  	l := len(dAtA)
  3520  	iNdEx := 0
  3521  	for iNdEx < l {
  3522  		preIndex := iNdEx
  3523  		var wire uint64
  3524  		for shift := uint(0); ; shift += 7 {
  3525  			if shift >= 64 {
  3526  				return ErrIntOverflowRpc
  3527  			}
  3528  			if iNdEx >= l {
  3529  				return io.ErrUnexpectedEOF
  3530  			}
  3531  			b := dAtA[iNdEx]
  3532  			iNdEx++
  3533  			wire |= (uint64(b) & 0x7F) << shift
  3534  			if b < 0x80 {
  3535  				break
  3536  			}
  3537  		}
  3538  		fieldNum := int32(wire >> 3)
  3539  		wireType := int(wire & 0x7)
  3540  		if wireType == 4 {
  3541  			return fmt.Errorf("proto: Tester: wiretype end group for non-group")
  3542  		}
  3543  		if fieldNum <= 0 {
  3544  			return fmt.Errorf("proto: Tester: illegal tag %d (wire type %d)", fieldNum, wire)
  3545  		}
  3546  		switch fieldNum {
  3547  		case 1:
  3548  			if wireType != 2 {
  3549  				return fmt.Errorf("proto: wrong wireType = %d for field DataDir", wireType)
  3550  			}
  3551  			var stringLen uint64
  3552  			for shift := uint(0); ; shift += 7 {
  3553  				if shift >= 64 {
  3554  					return ErrIntOverflowRpc
  3555  				}
  3556  				if iNdEx >= l {
  3557  					return io.ErrUnexpectedEOF
  3558  				}
  3559  				b := dAtA[iNdEx]
  3560  				iNdEx++
  3561  				stringLen |= (uint64(b) & 0x7F) << shift
  3562  				if b < 0x80 {
  3563  					break
  3564  				}
  3565  			}
  3566  			intStringLen := int(stringLen)
  3567  			if intStringLen < 0 {
  3568  				return ErrInvalidLengthRpc
  3569  			}
  3570  			postIndex := iNdEx + intStringLen
  3571  			if postIndex > l {
  3572  				return io.ErrUnexpectedEOF
  3573  			}
  3574  			m.DataDir = string(dAtA[iNdEx:postIndex])
  3575  			iNdEx = postIndex
  3576  		case 2:
  3577  			if wireType != 2 {
  3578  				return fmt.Errorf("proto: wrong wireType = %d for field Network", wireType)
  3579  			}
  3580  			var stringLen uint64
  3581  			for shift := uint(0); ; shift += 7 {
  3582  				if shift >= 64 {
  3583  					return ErrIntOverflowRpc
  3584  				}
  3585  				if iNdEx >= l {
  3586  					return io.ErrUnexpectedEOF
  3587  				}
  3588  				b := dAtA[iNdEx]
  3589  				iNdEx++
  3590  				stringLen |= (uint64(b) & 0x7F) << shift
  3591  				if b < 0x80 {
  3592  					break
  3593  				}
  3594  			}
  3595  			intStringLen := int(stringLen)
  3596  			if intStringLen < 0 {
  3597  				return ErrInvalidLengthRpc
  3598  			}
  3599  			postIndex := iNdEx + intStringLen
  3600  			if postIndex > l {
  3601  				return io.ErrUnexpectedEOF
  3602  			}
  3603  			m.Network = string(dAtA[iNdEx:postIndex])
  3604  			iNdEx = postIndex
  3605  		case 3:
  3606  			if wireType != 2 {
  3607  				return fmt.Errorf("proto: wrong wireType = %d for field Addr", wireType)
  3608  			}
  3609  			var stringLen uint64
  3610  			for shift := uint(0); ; shift += 7 {
  3611  				if shift >= 64 {
  3612  					return ErrIntOverflowRpc
  3613  				}
  3614  				if iNdEx >= l {
  3615  					return io.ErrUnexpectedEOF
  3616  				}
  3617  				b := dAtA[iNdEx]
  3618  				iNdEx++
  3619  				stringLen |= (uint64(b) & 0x7F) << shift
  3620  				if b < 0x80 {
  3621  					break
  3622  				}
  3623  			}
  3624  			intStringLen := int(stringLen)
  3625  			if intStringLen < 0 {
  3626  				return ErrInvalidLengthRpc
  3627  			}
  3628  			postIndex := iNdEx + intStringLen
  3629  			if postIndex > l {
  3630  				return io.ErrUnexpectedEOF
  3631  			}
  3632  			m.Addr = string(dAtA[iNdEx:postIndex])
  3633  			iNdEx = postIndex
  3634  		case 11:
  3635  			if wireType != 0 {
  3636  				return fmt.Errorf("proto: wrong wireType = %d for field DelayLatencyMs", wireType)
  3637  			}
  3638  			m.DelayLatencyMs = 0
  3639  			for shift := uint(0); ; shift += 7 {
  3640  				if shift >= 64 {
  3641  					return ErrIntOverflowRpc
  3642  				}
  3643  				if iNdEx >= l {
  3644  					return io.ErrUnexpectedEOF
  3645  				}
  3646  				b := dAtA[iNdEx]
  3647  				iNdEx++
  3648  				m.DelayLatencyMs |= (uint32(b) & 0x7F) << shift
  3649  				if b < 0x80 {
  3650  					break
  3651  				}
  3652  			}
  3653  		case 12:
  3654  			if wireType != 0 {
  3655  				return fmt.Errorf("proto: wrong wireType = %d for field DelayLatencyMsRv", wireType)
  3656  			}
  3657  			m.DelayLatencyMsRv = 0
  3658  			for shift := uint(0); ; shift += 7 {
  3659  				if shift >= 64 {
  3660  					return ErrIntOverflowRpc
  3661  				}
  3662  				if iNdEx >= l {
  3663  					return io.ErrUnexpectedEOF
  3664  				}
  3665  				b := dAtA[iNdEx]
  3666  				iNdEx++
  3667  				m.DelayLatencyMsRv |= (uint32(b) & 0x7F) << shift
  3668  				if b < 0x80 {
  3669  					break
  3670  				}
  3671  			}
  3672  		case 13:
  3673  			if wireType != 0 {
  3674  				return fmt.Errorf("proto: wrong wireType = %d for field UpdatedDelayLatencyMs", wireType)
  3675  			}
  3676  			m.UpdatedDelayLatencyMs = 0
  3677  			for shift := uint(0); ; shift += 7 {
  3678  				if shift >= 64 {
  3679  					return ErrIntOverflowRpc
  3680  				}
  3681  				if iNdEx >= l {
  3682  					return io.ErrUnexpectedEOF
  3683  				}
  3684  				b := dAtA[iNdEx]
  3685  				iNdEx++
  3686  				m.UpdatedDelayLatencyMs |= (uint32(b) & 0x7F) << shift
  3687  				if b < 0x80 {
  3688  					break
  3689  				}
  3690  			}
  3691  		case 21:
  3692  			if wireType != 0 {
  3693  				return fmt.Errorf("proto: wrong wireType = %d for field RoundLimit", wireType)
  3694  			}
  3695  			m.RoundLimit = 0
  3696  			for shift := uint(0); ; shift += 7 {
  3697  				if shift >= 64 {
  3698  					return ErrIntOverflowRpc
  3699  				}
  3700  				if iNdEx >= l {
  3701  					return io.ErrUnexpectedEOF
  3702  				}
  3703  				b := dAtA[iNdEx]
  3704  				iNdEx++
  3705  				m.RoundLimit |= (int32(b) & 0x7F) << shift
  3706  				if b < 0x80 {
  3707  					break
  3708  				}
  3709  			}
  3710  		case 22:
  3711  			if wireType != 0 {
  3712  				return fmt.Errorf("proto: wrong wireType = %d for field ExitOnCaseFail", wireType)
  3713  			}
  3714  			var v int
  3715  			for shift := uint(0); ; shift += 7 {
  3716  				if shift >= 64 {
  3717  					return ErrIntOverflowRpc
  3718  				}
  3719  				if iNdEx >= l {
  3720  					return io.ErrUnexpectedEOF
  3721  				}
  3722  				b := dAtA[iNdEx]
  3723  				iNdEx++
  3724  				v |= (int(b) & 0x7F) << shift
  3725  				if b < 0x80 {
  3726  					break
  3727  				}
  3728  			}
  3729  			m.ExitOnCaseFail = bool(v != 0)
  3730  		case 23:
  3731  			if wireType != 0 {
  3732  				return fmt.Errorf("proto: wrong wireType = %d for field EnablePprof", wireType)
  3733  			}
  3734  			var v int
  3735  			for shift := uint(0); ; shift += 7 {
  3736  				if shift >= 64 {
  3737  					return ErrIntOverflowRpc
  3738  				}
  3739  				if iNdEx >= l {
  3740  					return io.ErrUnexpectedEOF
  3741  				}
  3742  				b := dAtA[iNdEx]
  3743  				iNdEx++
  3744  				v |= (int(b) & 0x7F) << shift
  3745  				if b < 0x80 {
  3746  					break
  3747  				}
  3748  			}
  3749  			m.EnablePprof = bool(v != 0)
  3750  		case 31:
  3751  			if wireType != 0 {
  3752  				return fmt.Errorf("proto: wrong wireType = %d for field CaseDelayMs", wireType)
  3753  			}
  3754  			m.CaseDelayMs = 0
  3755  			for shift := uint(0); ; shift += 7 {
  3756  				if shift >= 64 {
  3757  					return ErrIntOverflowRpc
  3758  				}
  3759  				if iNdEx >= l {
  3760  					return io.ErrUnexpectedEOF
  3761  				}
  3762  				b := dAtA[iNdEx]
  3763  				iNdEx++
  3764  				m.CaseDelayMs |= (uint32(b) & 0x7F) << shift
  3765  				if b < 0x80 {
  3766  					break
  3767  				}
  3768  			}
  3769  		case 32:
  3770  			if wireType != 0 {
  3771  				return fmt.Errorf("proto: wrong wireType = %d for field CaseShuffle", wireType)
  3772  			}
  3773  			var v int
  3774  			for shift := uint(0); ; shift += 7 {
  3775  				if shift >= 64 {
  3776  					return ErrIntOverflowRpc
  3777  				}
  3778  				if iNdEx >= l {
  3779  					return io.ErrUnexpectedEOF
  3780  				}
  3781  				b := dAtA[iNdEx]
  3782  				iNdEx++
  3783  				v |= (int(b) & 0x7F) << shift
  3784  				if b < 0x80 {
  3785  					break
  3786  				}
  3787  			}
  3788  			m.CaseShuffle = bool(v != 0)
  3789  		case 33:
  3790  			if wireType != 2 {
  3791  				return fmt.Errorf("proto: wrong wireType = %d for field Cases", wireType)
  3792  			}
  3793  			var stringLen uint64
  3794  			for shift := uint(0); ; shift += 7 {
  3795  				if shift >= 64 {
  3796  					return ErrIntOverflowRpc
  3797  				}
  3798  				if iNdEx >= l {
  3799  					return io.ErrUnexpectedEOF
  3800  				}
  3801  				b := dAtA[iNdEx]
  3802  				iNdEx++
  3803  				stringLen |= (uint64(b) & 0x7F) << shift
  3804  				if b < 0x80 {
  3805  					break
  3806  				}
  3807  			}
  3808  			intStringLen := int(stringLen)
  3809  			if intStringLen < 0 {
  3810  				return ErrInvalidLengthRpc
  3811  			}
  3812  			postIndex := iNdEx + intStringLen
  3813  			if postIndex > l {
  3814  				return io.ErrUnexpectedEOF
  3815  			}
  3816  			m.Cases = append(m.Cases, string(dAtA[iNdEx:postIndex]))
  3817  			iNdEx = postIndex
  3818  		case 34:
  3819  			if wireType != 2 {
  3820  				return fmt.Errorf("proto: wrong wireType = %d for field FailpointCommands", wireType)
  3821  			}
  3822  			var stringLen uint64
  3823  			for shift := uint(0); ; shift += 7 {
  3824  				if shift >= 64 {
  3825  					return ErrIntOverflowRpc
  3826  				}
  3827  				if iNdEx >= l {
  3828  					return io.ErrUnexpectedEOF
  3829  				}
  3830  				b := dAtA[iNdEx]
  3831  				iNdEx++
  3832  				stringLen |= (uint64(b) & 0x7F) << shift
  3833  				if b < 0x80 {
  3834  					break
  3835  				}
  3836  			}
  3837  			intStringLen := int(stringLen)
  3838  			if intStringLen < 0 {
  3839  				return ErrInvalidLengthRpc
  3840  			}
  3841  			postIndex := iNdEx + intStringLen
  3842  			if postIndex > l {
  3843  				return io.ErrUnexpectedEOF
  3844  			}
  3845  			m.FailpointCommands = append(m.FailpointCommands, string(dAtA[iNdEx:postIndex]))
  3846  			iNdEx = postIndex
  3847  		case 41:
  3848  			if wireType != 2 {
  3849  				return fmt.Errorf("proto: wrong wireType = %d for field RunnerExecPath", wireType)
  3850  			}
  3851  			var stringLen uint64
  3852  			for shift := uint(0); ; shift += 7 {
  3853  				if shift >= 64 {
  3854  					return ErrIntOverflowRpc
  3855  				}
  3856  				if iNdEx >= l {
  3857  					return io.ErrUnexpectedEOF
  3858  				}
  3859  				b := dAtA[iNdEx]
  3860  				iNdEx++
  3861  				stringLen |= (uint64(b) & 0x7F) << shift
  3862  				if b < 0x80 {
  3863  					break
  3864  				}
  3865  			}
  3866  			intStringLen := int(stringLen)
  3867  			if intStringLen < 0 {
  3868  				return ErrInvalidLengthRpc
  3869  			}
  3870  			postIndex := iNdEx + intStringLen
  3871  			if postIndex > l {
  3872  				return io.ErrUnexpectedEOF
  3873  			}
  3874  			m.RunnerExecPath = string(dAtA[iNdEx:postIndex])
  3875  			iNdEx = postIndex
  3876  		case 42:
  3877  			if wireType != 2 {
  3878  				return fmt.Errorf("proto: wrong wireType = %d for field ExternalExecPath", wireType)
  3879  			}
  3880  			var stringLen uint64
  3881  			for shift := uint(0); ; shift += 7 {
  3882  				if shift >= 64 {
  3883  					return ErrIntOverflowRpc
  3884  				}
  3885  				if iNdEx >= l {
  3886  					return io.ErrUnexpectedEOF
  3887  				}
  3888  				b := dAtA[iNdEx]
  3889  				iNdEx++
  3890  				stringLen |= (uint64(b) & 0x7F) << shift
  3891  				if b < 0x80 {
  3892  					break
  3893  				}
  3894  			}
  3895  			intStringLen := int(stringLen)
  3896  			if intStringLen < 0 {
  3897  				return ErrInvalidLengthRpc
  3898  			}
  3899  			postIndex := iNdEx + intStringLen
  3900  			if postIndex > l {
  3901  				return io.ErrUnexpectedEOF
  3902  			}
  3903  			m.ExternalExecPath = string(dAtA[iNdEx:postIndex])
  3904  			iNdEx = postIndex
  3905  		case 101:
  3906  			if wireType != 2 {
  3907  				return fmt.Errorf("proto: wrong wireType = %d for field Stressers", wireType)
  3908  			}
  3909  			var stringLen uint64
  3910  			for shift := uint(0); ; shift += 7 {
  3911  				if shift >= 64 {
  3912  					return ErrIntOverflowRpc
  3913  				}
  3914  				if iNdEx >= l {
  3915  					return io.ErrUnexpectedEOF
  3916  				}
  3917  				b := dAtA[iNdEx]
  3918  				iNdEx++
  3919  				stringLen |= (uint64(b) & 0x7F) << shift
  3920  				if b < 0x80 {
  3921  					break
  3922  				}
  3923  			}
  3924  			intStringLen := int(stringLen)
  3925  			if intStringLen < 0 {
  3926  				return ErrInvalidLengthRpc
  3927  			}
  3928  			postIndex := iNdEx + intStringLen
  3929  			if postIndex > l {
  3930  				return io.ErrUnexpectedEOF
  3931  			}
  3932  			m.Stressers = append(m.Stressers, string(dAtA[iNdEx:postIndex]))
  3933  			iNdEx = postIndex
  3934  		case 102:
  3935  			if wireType != 2 {
  3936  				return fmt.Errorf("proto: wrong wireType = %d for field Checkers", wireType)
  3937  			}
  3938  			var stringLen uint64
  3939  			for shift := uint(0); ; shift += 7 {
  3940  				if shift >= 64 {
  3941  					return ErrIntOverflowRpc
  3942  				}
  3943  				if iNdEx >= l {
  3944  					return io.ErrUnexpectedEOF
  3945  				}
  3946  				b := dAtA[iNdEx]
  3947  				iNdEx++
  3948  				stringLen |= (uint64(b) & 0x7F) << shift
  3949  				if b < 0x80 {
  3950  					break
  3951  				}
  3952  			}
  3953  			intStringLen := int(stringLen)
  3954  			if intStringLen < 0 {
  3955  				return ErrInvalidLengthRpc
  3956  			}
  3957  			postIndex := iNdEx + intStringLen
  3958  			if postIndex > l {
  3959  				return io.ErrUnexpectedEOF
  3960  			}
  3961  			m.Checkers = append(m.Checkers, string(dAtA[iNdEx:postIndex]))
  3962  			iNdEx = postIndex
  3963  		case 201:
  3964  			if wireType != 0 {
  3965  				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySize", wireType)
  3966  			}
  3967  			m.StressKeySize = 0
  3968  			for shift := uint(0); ; shift += 7 {
  3969  				if shift >= 64 {
  3970  					return ErrIntOverflowRpc
  3971  				}
  3972  				if iNdEx >= l {
  3973  					return io.ErrUnexpectedEOF
  3974  				}
  3975  				b := dAtA[iNdEx]
  3976  				iNdEx++
  3977  				m.StressKeySize |= (int32(b) & 0x7F) << shift
  3978  				if b < 0x80 {
  3979  					break
  3980  				}
  3981  			}
  3982  		case 202:
  3983  			if wireType != 0 {
  3984  				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySizeLarge", wireType)
  3985  			}
  3986  			m.StressKeySizeLarge = 0
  3987  			for shift := uint(0); ; shift += 7 {
  3988  				if shift >= 64 {
  3989  					return ErrIntOverflowRpc
  3990  				}
  3991  				if iNdEx >= l {
  3992  					return io.ErrUnexpectedEOF
  3993  				}
  3994  				b := dAtA[iNdEx]
  3995  				iNdEx++
  3996  				m.StressKeySizeLarge |= (int32(b) & 0x7F) << shift
  3997  				if b < 0x80 {
  3998  					break
  3999  				}
  4000  			}
  4001  		case 203:
  4002  			if wireType != 0 {
  4003  				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySuffixRange", wireType)
  4004  			}
  4005  			m.StressKeySuffixRange = 0
  4006  			for shift := uint(0); ; shift += 7 {
  4007  				if shift >= 64 {
  4008  					return ErrIntOverflowRpc
  4009  				}
  4010  				if iNdEx >= l {
  4011  					return io.ErrUnexpectedEOF
  4012  				}
  4013  				b := dAtA[iNdEx]
  4014  				iNdEx++
  4015  				m.StressKeySuffixRange |= (int32(b) & 0x7F) << shift
  4016  				if b < 0x80 {
  4017  					break
  4018  				}
  4019  			}
  4020  		case 204:
  4021  			if wireType != 0 {
  4022  				return fmt.Errorf("proto: wrong wireType = %d for field StressKeySuffixRangeTxn", wireType)
  4023  			}
  4024  			m.StressKeySuffixRangeTxn = 0
  4025  			for shift := uint(0); ; shift += 7 {
  4026  				if shift >= 64 {
  4027  					return ErrIntOverflowRpc
  4028  				}
  4029  				if iNdEx >= l {
  4030  					return io.ErrUnexpectedEOF
  4031  				}
  4032  				b := dAtA[iNdEx]
  4033  				iNdEx++
  4034  				m.StressKeySuffixRangeTxn |= (int32(b) & 0x7F) << shift
  4035  				if b < 0x80 {
  4036  					break
  4037  				}
  4038  			}
  4039  		case 205:
  4040  			if wireType != 0 {
  4041  				return fmt.Errorf("proto: wrong wireType = %d for field StressKeyTxnOps", wireType)
  4042  			}
  4043  			m.StressKeyTxnOps = 0
  4044  			for shift := uint(0); ; shift += 7 {
  4045  				if shift >= 64 {
  4046  					return ErrIntOverflowRpc
  4047  				}
  4048  				if iNdEx >= l {
  4049  					return io.ErrUnexpectedEOF
  4050  				}
  4051  				b := dAtA[iNdEx]
  4052  				iNdEx++
  4053  				m.StressKeyTxnOps |= (int32(b) & 0x7F) << shift
  4054  				if b < 0x80 {
  4055  					break
  4056  				}
  4057  			}
  4058  		case 301:
  4059  			if wireType != 0 {
  4060  				return fmt.Errorf("proto: wrong wireType = %d for field StressClients", wireType)
  4061  			}
  4062  			m.StressClients = 0
  4063  			for shift := uint(0); ; shift += 7 {
  4064  				if shift >= 64 {
  4065  					return ErrIntOverflowRpc
  4066  				}
  4067  				if iNdEx >= l {
  4068  					return io.ErrUnexpectedEOF
  4069  				}
  4070  				b := dAtA[iNdEx]
  4071  				iNdEx++
  4072  				m.StressClients |= (int32(b) & 0x7F) << shift
  4073  				if b < 0x80 {
  4074  					break
  4075  				}
  4076  			}
  4077  		case 302:
  4078  			if wireType != 0 {
  4079  				return fmt.Errorf("proto: wrong wireType = %d for field StressQPS", wireType)
  4080  			}
  4081  			m.StressQPS = 0
  4082  			for shift := uint(0); ; shift += 7 {
  4083  				if shift >= 64 {
  4084  					return ErrIntOverflowRpc
  4085  				}
  4086  				if iNdEx >= l {
  4087  					return io.ErrUnexpectedEOF
  4088  				}
  4089  				b := dAtA[iNdEx]
  4090  				iNdEx++
  4091  				m.StressQPS |= (int32(b) & 0x7F) << shift
  4092  				if b < 0x80 {
  4093  					break
  4094  				}
  4095  			}
  4096  		default:
  4097  			iNdEx = preIndex
  4098  			skippy, err := skipRpc(dAtA[iNdEx:])
  4099  			if err != nil {
  4100  				return err
  4101  			}
  4102  			if skippy < 0 {
  4103  				return ErrInvalidLengthRpc
  4104  			}
  4105  			if (iNdEx + skippy) > l {
  4106  				return io.ErrUnexpectedEOF
  4107  			}
  4108  			iNdEx += skippy
  4109  		}
  4110  	}
  4111  
  4112  	if iNdEx > l {
  4113  		return io.ErrUnexpectedEOF
  4114  	}
  4115  	return nil
  4116  }
  4117  func (m *Etcd) Unmarshal(dAtA []byte) error {
  4118  	l := len(dAtA)
  4119  	iNdEx := 0
  4120  	for iNdEx < l {
  4121  		preIndex := iNdEx
  4122  		var wire uint64
  4123  		for shift := uint(0); ; shift += 7 {
  4124  			if shift >= 64 {
  4125  				return ErrIntOverflowRpc
  4126  			}
  4127  			if iNdEx >= l {
  4128  				return io.ErrUnexpectedEOF
  4129  			}
  4130  			b := dAtA[iNdEx]
  4131  			iNdEx++
  4132  			wire |= (uint64(b) & 0x7F) << shift
  4133  			if b < 0x80 {
  4134  				break
  4135  			}
  4136  		}
  4137  		fieldNum := int32(wire >> 3)
  4138  		wireType := int(wire & 0x7)
  4139  		if wireType == 4 {
  4140  			return fmt.Errorf("proto: Etcd: wiretype end group for non-group")
  4141  		}
  4142  		if fieldNum <= 0 {
  4143  			return fmt.Errorf("proto: Etcd: illegal tag %d (wire type %d)", fieldNum, wire)
  4144  		}
  4145  		switch fieldNum {
  4146  		case 1:
  4147  			if wireType != 2 {
  4148  				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
  4149  			}
  4150  			var stringLen uint64
  4151  			for shift := uint(0); ; shift += 7 {
  4152  				if shift >= 64 {
  4153  					return ErrIntOverflowRpc
  4154  				}
  4155  				if iNdEx >= l {
  4156  					return io.ErrUnexpectedEOF
  4157  				}
  4158  				b := dAtA[iNdEx]
  4159  				iNdEx++
  4160  				stringLen |= (uint64(b) & 0x7F) << shift
  4161  				if b < 0x80 {
  4162  					break
  4163  				}
  4164  			}
  4165  			intStringLen := int(stringLen)
  4166  			if intStringLen < 0 {
  4167  				return ErrInvalidLengthRpc
  4168  			}
  4169  			postIndex := iNdEx + intStringLen
  4170  			if postIndex > l {
  4171  				return io.ErrUnexpectedEOF
  4172  			}
  4173  			m.Name = string(dAtA[iNdEx:postIndex])
  4174  			iNdEx = postIndex
  4175  		case 2:
  4176  			if wireType != 2 {
  4177  				return fmt.Errorf("proto: wrong wireType = %d for field DataDir", wireType)
  4178  			}
  4179  			var stringLen uint64
  4180  			for shift := uint(0); ; shift += 7 {
  4181  				if shift >= 64 {
  4182  					return ErrIntOverflowRpc
  4183  				}
  4184  				if iNdEx >= l {
  4185  					return io.ErrUnexpectedEOF
  4186  				}
  4187  				b := dAtA[iNdEx]
  4188  				iNdEx++
  4189  				stringLen |= (uint64(b) & 0x7F) << shift
  4190  				if b < 0x80 {
  4191  					break
  4192  				}
  4193  			}
  4194  			intStringLen := int(stringLen)
  4195  			if intStringLen < 0 {
  4196  				return ErrInvalidLengthRpc
  4197  			}
  4198  			postIndex := iNdEx + intStringLen
  4199  			if postIndex > l {
  4200  				return io.ErrUnexpectedEOF
  4201  			}
  4202  			m.DataDir = string(dAtA[iNdEx:postIndex])
  4203  			iNdEx = postIndex
  4204  		case 3:
  4205  			if wireType != 2 {
  4206  				return fmt.Errorf("proto: wrong wireType = %d for field WALDir", wireType)
  4207  			}
  4208  			var stringLen uint64
  4209  			for shift := uint(0); ; shift += 7 {
  4210  				if shift >= 64 {
  4211  					return ErrIntOverflowRpc
  4212  				}
  4213  				if iNdEx >= l {
  4214  					return io.ErrUnexpectedEOF
  4215  				}
  4216  				b := dAtA[iNdEx]
  4217  				iNdEx++
  4218  				stringLen |= (uint64(b) & 0x7F) << shift
  4219  				if b < 0x80 {
  4220  					break
  4221  				}
  4222  			}
  4223  			intStringLen := int(stringLen)
  4224  			if intStringLen < 0 {
  4225  				return ErrInvalidLengthRpc
  4226  			}
  4227  			postIndex := iNdEx + intStringLen
  4228  			if postIndex > l {
  4229  				return io.ErrUnexpectedEOF
  4230  			}
  4231  			m.WALDir = string(dAtA[iNdEx:postIndex])
  4232  			iNdEx = postIndex
  4233  		case 11:
  4234  			if wireType != 0 {
  4235  				return fmt.Errorf("proto: wrong wireType = %d for field HeartbeatIntervalMs", wireType)
  4236  			}
  4237  			m.HeartbeatIntervalMs = 0
  4238  			for shift := uint(0); ; shift += 7 {
  4239  				if shift >= 64 {
  4240  					return ErrIntOverflowRpc
  4241  				}
  4242  				if iNdEx >= l {
  4243  					return io.ErrUnexpectedEOF
  4244  				}
  4245  				b := dAtA[iNdEx]
  4246  				iNdEx++
  4247  				m.HeartbeatIntervalMs |= (int64(b) & 0x7F) << shift
  4248  				if b < 0x80 {
  4249  					break
  4250  				}
  4251  			}
  4252  		case 12:
  4253  			if wireType != 0 {
  4254  				return fmt.Errorf("proto: wrong wireType = %d for field ElectionTimeoutMs", wireType)
  4255  			}
  4256  			m.ElectionTimeoutMs = 0
  4257  			for shift := uint(0); ; shift += 7 {
  4258  				if shift >= 64 {
  4259  					return ErrIntOverflowRpc
  4260  				}
  4261  				if iNdEx >= l {
  4262  					return io.ErrUnexpectedEOF
  4263  				}
  4264  				b := dAtA[iNdEx]
  4265  				iNdEx++
  4266  				m.ElectionTimeoutMs |= (int64(b) & 0x7F) << shift
  4267  				if b < 0x80 {
  4268  					break
  4269  				}
  4270  			}
  4271  		case 21:
  4272  			if wireType != 2 {
  4273  				return fmt.Errorf("proto: wrong wireType = %d for field ListenClientURLs", wireType)
  4274  			}
  4275  			var stringLen uint64
  4276  			for shift := uint(0); ; shift += 7 {
  4277  				if shift >= 64 {
  4278  					return ErrIntOverflowRpc
  4279  				}
  4280  				if iNdEx >= l {
  4281  					return io.ErrUnexpectedEOF
  4282  				}
  4283  				b := dAtA[iNdEx]
  4284  				iNdEx++
  4285  				stringLen |= (uint64(b) & 0x7F) << shift
  4286  				if b < 0x80 {
  4287  					break
  4288  				}
  4289  			}
  4290  			intStringLen := int(stringLen)
  4291  			if intStringLen < 0 {
  4292  				return ErrInvalidLengthRpc
  4293  			}
  4294  			postIndex := iNdEx + intStringLen
  4295  			if postIndex > l {
  4296  				return io.ErrUnexpectedEOF
  4297  			}
  4298  			m.ListenClientURLs = append(m.ListenClientURLs, string(dAtA[iNdEx:postIndex]))
  4299  			iNdEx = postIndex
  4300  		case 22:
  4301  			if wireType != 2 {
  4302  				return fmt.Errorf("proto: wrong wireType = %d for field AdvertiseClientURLs", wireType)
  4303  			}
  4304  			var stringLen uint64
  4305  			for shift := uint(0); ; shift += 7 {
  4306  				if shift >= 64 {
  4307  					return ErrIntOverflowRpc
  4308  				}
  4309  				if iNdEx >= l {
  4310  					return io.ErrUnexpectedEOF
  4311  				}
  4312  				b := dAtA[iNdEx]
  4313  				iNdEx++
  4314  				stringLen |= (uint64(b) & 0x7F) << shift
  4315  				if b < 0x80 {
  4316  					break
  4317  				}
  4318  			}
  4319  			intStringLen := int(stringLen)
  4320  			if intStringLen < 0 {
  4321  				return ErrInvalidLengthRpc
  4322  			}
  4323  			postIndex := iNdEx + intStringLen
  4324  			if postIndex > l {
  4325  				return io.ErrUnexpectedEOF
  4326  			}
  4327  			m.AdvertiseClientURLs = append(m.AdvertiseClientURLs, string(dAtA[iNdEx:postIndex]))
  4328  			iNdEx = postIndex
  4329  		case 23:
  4330  			if wireType != 0 {
  4331  				return fmt.Errorf("proto: wrong wireType = %d for field ClientAutoTLS", wireType)
  4332  			}
  4333  			var v int
  4334  			for shift := uint(0); ; shift += 7 {
  4335  				if shift >= 64 {
  4336  					return ErrIntOverflowRpc
  4337  				}
  4338  				if iNdEx >= l {
  4339  					return io.ErrUnexpectedEOF
  4340  				}
  4341  				b := dAtA[iNdEx]
  4342  				iNdEx++
  4343  				v |= (int(b) & 0x7F) << shift
  4344  				if b < 0x80 {
  4345  					break
  4346  				}
  4347  			}
  4348  			m.ClientAutoTLS = bool(v != 0)
  4349  		case 24:
  4350  			if wireType != 0 {
  4351  				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertAuth", wireType)
  4352  			}
  4353  			var v int
  4354  			for shift := uint(0); ; shift += 7 {
  4355  				if shift >= 64 {
  4356  					return ErrIntOverflowRpc
  4357  				}
  4358  				if iNdEx >= l {
  4359  					return io.ErrUnexpectedEOF
  4360  				}
  4361  				b := dAtA[iNdEx]
  4362  				iNdEx++
  4363  				v |= (int(b) & 0x7F) << shift
  4364  				if b < 0x80 {
  4365  					break
  4366  				}
  4367  			}
  4368  			m.ClientCertAuth = bool(v != 0)
  4369  		case 25:
  4370  			if wireType != 2 {
  4371  				return fmt.Errorf("proto: wrong wireType = %d for field ClientCertFile", wireType)
  4372  			}
  4373  			var stringLen uint64
  4374  			for shift := uint(0); ; shift += 7 {
  4375  				if shift >= 64 {
  4376  					return ErrIntOverflowRpc
  4377  				}
  4378  				if iNdEx >= l {
  4379  					return io.ErrUnexpectedEOF
  4380  				}
  4381  				b := dAtA[iNdEx]
  4382  				iNdEx++
  4383  				stringLen |= (uint64(b) & 0x7F) << shift
  4384  				if b < 0x80 {
  4385  					break
  4386  				}
  4387  			}
  4388  			intStringLen := int(stringLen)
  4389  			if intStringLen < 0 {
  4390  				return ErrInvalidLengthRpc
  4391  			}
  4392  			postIndex := iNdEx + intStringLen
  4393  			if postIndex > l {
  4394  				return io.ErrUnexpectedEOF
  4395  			}
  4396  			m.ClientCertFile = string(dAtA[iNdEx:postIndex])
  4397  			iNdEx = postIndex
  4398  		case 26:
  4399  			if wireType != 2 {
  4400  				return fmt.Errorf("proto: wrong wireType = %d for field ClientKeyFile", wireType)
  4401  			}
  4402  			var stringLen uint64
  4403  			for shift := uint(0); ; shift += 7 {
  4404  				if shift >= 64 {
  4405  					return ErrIntOverflowRpc
  4406  				}
  4407  				if iNdEx >= l {
  4408  					return io.ErrUnexpectedEOF
  4409  				}
  4410  				b := dAtA[iNdEx]
  4411  				iNdEx++
  4412  				stringLen |= (uint64(b) & 0x7F) << shift
  4413  				if b < 0x80 {
  4414  					break
  4415  				}
  4416  			}
  4417  			intStringLen := int(stringLen)
  4418  			if intStringLen < 0 {
  4419  				return ErrInvalidLengthRpc
  4420  			}
  4421  			postIndex := iNdEx + intStringLen
  4422  			if postIndex > l {
  4423  				return io.ErrUnexpectedEOF
  4424  			}
  4425  			m.ClientKeyFile = string(dAtA[iNdEx:postIndex])
  4426  			iNdEx = postIndex
  4427  		case 27:
  4428  			if wireType != 2 {
  4429  				return fmt.Errorf("proto: wrong wireType = %d for field ClientTrustedCAFile", wireType)
  4430  			}
  4431  			var stringLen uint64
  4432  			for shift := uint(0); ; shift += 7 {
  4433  				if shift >= 64 {
  4434  					return ErrIntOverflowRpc
  4435  				}
  4436  				if iNdEx >= l {
  4437  					return io.ErrUnexpectedEOF
  4438  				}
  4439  				b := dAtA[iNdEx]
  4440  				iNdEx++
  4441  				stringLen |= (uint64(b) & 0x7F) << shift
  4442  				if b < 0x80 {
  4443  					break
  4444  				}
  4445  			}
  4446  			intStringLen := int(stringLen)
  4447  			if intStringLen < 0 {
  4448  				return ErrInvalidLengthRpc
  4449  			}
  4450  			postIndex := iNdEx + intStringLen
  4451  			if postIndex > l {
  4452  				return io.ErrUnexpectedEOF
  4453  			}
  4454  			m.ClientTrustedCAFile = string(dAtA[iNdEx:postIndex])
  4455  			iNdEx = postIndex
  4456  		case 31:
  4457  			if wireType != 2 {
  4458  				return fmt.Errorf("proto: wrong wireType = %d for field ListenPeerURLs", wireType)
  4459  			}
  4460  			var stringLen uint64
  4461  			for shift := uint(0); ; shift += 7 {
  4462  				if shift >= 64 {
  4463  					return ErrIntOverflowRpc
  4464  				}
  4465  				if iNdEx >= l {
  4466  					return io.ErrUnexpectedEOF
  4467  				}
  4468  				b := dAtA[iNdEx]
  4469  				iNdEx++
  4470  				stringLen |= (uint64(b) & 0x7F) << shift
  4471  				if b < 0x80 {
  4472  					break
  4473  				}
  4474  			}
  4475  			intStringLen := int(stringLen)
  4476  			if intStringLen < 0 {
  4477  				return ErrInvalidLengthRpc
  4478  			}
  4479  			postIndex := iNdEx + intStringLen
  4480  			if postIndex > l {
  4481  				return io.ErrUnexpectedEOF
  4482  			}
  4483  			m.ListenPeerURLs = append(m.ListenPeerURLs, string(dAtA[iNdEx:postIndex]))
  4484  			iNdEx = postIndex
  4485  		case 32:
  4486  			if wireType != 2 {
  4487  				return fmt.Errorf("proto: wrong wireType = %d for field AdvertisePeerURLs", wireType)
  4488  			}
  4489  			var stringLen uint64
  4490  			for shift := uint(0); ; shift += 7 {
  4491  				if shift >= 64 {
  4492  					return ErrIntOverflowRpc
  4493  				}
  4494  				if iNdEx >= l {
  4495  					return io.ErrUnexpectedEOF
  4496  				}
  4497  				b := dAtA[iNdEx]
  4498  				iNdEx++
  4499  				stringLen |= (uint64(b) & 0x7F) << shift
  4500  				if b < 0x80 {
  4501  					break
  4502  				}
  4503  			}
  4504  			intStringLen := int(stringLen)
  4505  			if intStringLen < 0 {
  4506  				return ErrInvalidLengthRpc
  4507  			}
  4508  			postIndex := iNdEx + intStringLen
  4509  			if postIndex > l {
  4510  				return io.ErrUnexpectedEOF
  4511  			}
  4512  			m.AdvertisePeerURLs = append(m.AdvertisePeerURLs, string(dAtA[iNdEx:postIndex]))
  4513  			iNdEx = postIndex
  4514  		case 33:
  4515  			if wireType != 0 {
  4516  				return fmt.Errorf("proto: wrong wireType = %d for field PeerAutoTLS", wireType)
  4517  			}
  4518  			var v int
  4519  			for shift := uint(0); ; shift += 7 {
  4520  				if shift >= 64 {
  4521  					return ErrIntOverflowRpc
  4522  				}
  4523  				if iNdEx >= l {
  4524  					return io.ErrUnexpectedEOF
  4525  				}
  4526  				b := dAtA[iNdEx]
  4527  				iNdEx++
  4528  				v |= (int(b) & 0x7F) << shift
  4529  				if b < 0x80 {
  4530  					break
  4531  				}
  4532  			}
  4533  			m.PeerAutoTLS = bool(v != 0)
  4534  		case 34:
  4535  			if wireType != 0 {
  4536  				return fmt.Errorf("proto: wrong wireType = %d for field PeerClientCertAuth", wireType)
  4537  			}
  4538  			var v int
  4539  			for shift := uint(0); ; shift += 7 {
  4540  				if shift >= 64 {
  4541  					return ErrIntOverflowRpc
  4542  				}
  4543  				if iNdEx >= l {
  4544  					return io.ErrUnexpectedEOF
  4545  				}
  4546  				b := dAtA[iNdEx]
  4547  				iNdEx++
  4548  				v |= (int(b) & 0x7F) << shift
  4549  				if b < 0x80 {
  4550  					break
  4551  				}
  4552  			}
  4553  			m.PeerClientCertAuth = bool(v != 0)
  4554  		case 35:
  4555  			if wireType != 2 {
  4556  				return fmt.Errorf("proto: wrong wireType = %d for field PeerCertFile", wireType)
  4557  			}
  4558  			var stringLen uint64
  4559  			for shift := uint(0); ; shift += 7 {
  4560  				if shift >= 64 {
  4561  					return ErrIntOverflowRpc
  4562  				}
  4563  				if iNdEx >= l {
  4564  					return io.ErrUnexpectedEOF
  4565  				}
  4566  				b := dAtA[iNdEx]
  4567  				iNdEx++
  4568  				stringLen |= (uint64(b) & 0x7F) << shift
  4569  				if b < 0x80 {
  4570  					break
  4571  				}
  4572  			}
  4573  			intStringLen := int(stringLen)
  4574  			if intStringLen < 0 {
  4575  				return ErrInvalidLengthRpc
  4576  			}
  4577  			postIndex := iNdEx + intStringLen
  4578  			if postIndex > l {
  4579  				return io.ErrUnexpectedEOF
  4580  			}
  4581  			m.PeerCertFile = string(dAtA[iNdEx:postIndex])
  4582  			iNdEx = postIndex
  4583  		case 36:
  4584  			if wireType != 2 {
  4585  				return fmt.Errorf("proto: wrong wireType = %d for field PeerKeyFile", wireType)
  4586  			}
  4587  			var stringLen uint64
  4588  			for shift := uint(0); ; shift += 7 {
  4589  				if shift >= 64 {
  4590  					return ErrIntOverflowRpc
  4591  				}
  4592  				if iNdEx >= l {
  4593  					return io.ErrUnexpectedEOF
  4594  				}
  4595  				b := dAtA[iNdEx]
  4596  				iNdEx++
  4597  				stringLen |= (uint64(b) & 0x7F) << shift
  4598  				if b < 0x80 {
  4599  					break
  4600  				}
  4601  			}
  4602  			intStringLen := int(stringLen)
  4603  			if intStringLen < 0 {
  4604  				return ErrInvalidLengthRpc
  4605  			}
  4606  			postIndex := iNdEx + intStringLen
  4607  			if postIndex > l {
  4608  				return io.ErrUnexpectedEOF
  4609  			}
  4610  			m.PeerKeyFile = string(dAtA[iNdEx:postIndex])
  4611  			iNdEx = postIndex
  4612  		case 37:
  4613  			if wireType != 2 {
  4614  				return fmt.Errorf("proto: wrong wireType = %d for field PeerTrustedCAFile", wireType)
  4615  			}
  4616  			var stringLen uint64
  4617  			for shift := uint(0); ; shift += 7 {
  4618  				if shift >= 64 {
  4619  					return ErrIntOverflowRpc
  4620  				}
  4621  				if iNdEx >= l {
  4622  					return io.ErrUnexpectedEOF
  4623  				}
  4624  				b := dAtA[iNdEx]
  4625  				iNdEx++
  4626  				stringLen |= (uint64(b) & 0x7F) << shift
  4627  				if b < 0x80 {
  4628  					break
  4629  				}
  4630  			}
  4631  			intStringLen := int(stringLen)
  4632  			if intStringLen < 0 {
  4633  				return ErrInvalidLengthRpc
  4634  			}
  4635  			postIndex := iNdEx + intStringLen
  4636  			if postIndex > l {
  4637  				return io.ErrUnexpectedEOF
  4638  			}
  4639  			m.PeerTrustedCAFile = string(dAtA[iNdEx:postIndex])
  4640  			iNdEx = postIndex
  4641  		case 41:
  4642  			if wireType != 2 {
  4643  				return fmt.Errorf("proto: wrong wireType = %d for field InitialCluster", wireType)
  4644  			}
  4645  			var stringLen uint64
  4646  			for shift := uint(0); ; shift += 7 {
  4647  				if shift >= 64 {
  4648  					return ErrIntOverflowRpc
  4649  				}
  4650  				if iNdEx >= l {
  4651  					return io.ErrUnexpectedEOF
  4652  				}
  4653  				b := dAtA[iNdEx]
  4654  				iNdEx++
  4655  				stringLen |= (uint64(b) & 0x7F) << shift
  4656  				if b < 0x80 {
  4657  					break
  4658  				}
  4659  			}
  4660  			intStringLen := int(stringLen)
  4661  			if intStringLen < 0 {
  4662  				return ErrInvalidLengthRpc
  4663  			}
  4664  			postIndex := iNdEx + intStringLen
  4665  			if postIndex > l {
  4666  				return io.ErrUnexpectedEOF
  4667  			}
  4668  			m.InitialCluster = string(dAtA[iNdEx:postIndex])
  4669  			iNdEx = postIndex
  4670  		case 42:
  4671  			if wireType != 2 {
  4672  				return fmt.Errorf("proto: wrong wireType = %d for field InitialClusterState", wireType)
  4673  			}
  4674  			var stringLen uint64
  4675  			for shift := uint(0); ; shift += 7 {
  4676  				if shift >= 64 {
  4677  					return ErrIntOverflowRpc
  4678  				}
  4679  				if iNdEx >= l {
  4680  					return io.ErrUnexpectedEOF
  4681  				}
  4682  				b := dAtA[iNdEx]
  4683  				iNdEx++
  4684  				stringLen |= (uint64(b) & 0x7F) << shift
  4685  				if b < 0x80 {
  4686  					break
  4687  				}
  4688  			}
  4689  			intStringLen := int(stringLen)
  4690  			if intStringLen < 0 {
  4691  				return ErrInvalidLengthRpc
  4692  			}
  4693  			postIndex := iNdEx + intStringLen
  4694  			if postIndex > l {
  4695  				return io.ErrUnexpectedEOF
  4696  			}
  4697  			m.InitialClusterState = string(dAtA[iNdEx:postIndex])
  4698  			iNdEx = postIndex
  4699  		case 43:
  4700  			if wireType != 2 {
  4701  				return fmt.Errorf("proto: wrong wireType = %d for field InitialClusterToken", wireType)
  4702  			}
  4703  			var stringLen uint64
  4704  			for shift := uint(0); ; shift += 7 {
  4705  				if shift >= 64 {
  4706  					return ErrIntOverflowRpc
  4707  				}
  4708  				if iNdEx >= l {
  4709  					return io.ErrUnexpectedEOF
  4710  				}
  4711  				b := dAtA[iNdEx]
  4712  				iNdEx++
  4713  				stringLen |= (uint64(b) & 0x7F) << shift
  4714  				if b < 0x80 {
  4715  					break
  4716  				}
  4717  			}
  4718  			intStringLen := int(stringLen)
  4719  			if intStringLen < 0 {
  4720  				return ErrInvalidLengthRpc
  4721  			}
  4722  			postIndex := iNdEx + intStringLen
  4723  			if postIndex > l {
  4724  				return io.ErrUnexpectedEOF
  4725  			}
  4726  			m.InitialClusterToken = string(dAtA[iNdEx:postIndex])
  4727  			iNdEx = postIndex
  4728  		case 51:
  4729  			if wireType != 0 {
  4730  				return fmt.Errorf("proto: wrong wireType = %d for field SnapshotCount", wireType)
  4731  			}
  4732  			m.SnapshotCount = 0
  4733  			for shift := uint(0); ; shift += 7 {
  4734  				if shift >= 64 {
  4735  					return ErrIntOverflowRpc
  4736  				}
  4737  				if iNdEx >= l {
  4738  					return io.ErrUnexpectedEOF
  4739  				}
  4740  				b := dAtA[iNdEx]
  4741  				iNdEx++
  4742  				m.SnapshotCount |= (int64(b) & 0x7F) << shift
  4743  				if b < 0x80 {
  4744  					break
  4745  				}
  4746  			}
  4747  		case 52:
  4748  			if wireType != 0 {
  4749  				return fmt.Errorf("proto: wrong wireType = %d for field QuotaBackendBytes", wireType)
  4750  			}
  4751  			m.QuotaBackendBytes = 0
  4752  			for shift := uint(0); ; shift += 7 {
  4753  				if shift >= 64 {
  4754  					return ErrIntOverflowRpc
  4755  				}
  4756  				if iNdEx >= l {
  4757  					return io.ErrUnexpectedEOF
  4758  				}
  4759  				b := dAtA[iNdEx]
  4760  				iNdEx++
  4761  				m.QuotaBackendBytes |= (int64(b) & 0x7F) << shift
  4762  				if b < 0x80 {
  4763  					break
  4764  				}
  4765  			}
  4766  		case 63:
  4767  			if wireType != 0 {
  4768  				return fmt.Errorf("proto: wrong wireType = %d for field PreVote", wireType)
  4769  			}
  4770  			var v int
  4771  			for shift := uint(0); ; shift += 7 {
  4772  				if shift >= 64 {
  4773  					return ErrIntOverflowRpc
  4774  				}
  4775  				if iNdEx >= l {
  4776  					return io.ErrUnexpectedEOF
  4777  				}
  4778  				b := dAtA[iNdEx]
  4779  				iNdEx++
  4780  				v |= (int(b) & 0x7F) << shift
  4781  				if b < 0x80 {
  4782  					break
  4783  				}
  4784  			}
  4785  			m.PreVote = bool(v != 0)
  4786  		case 64:
  4787  			if wireType != 0 {
  4788  				return fmt.Errorf("proto: wrong wireType = %d for field InitialCorruptCheck", wireType)
  4789  			}
  4790  			var v int
  4791  			for shift := uint(0); ; shift += 7 {
  4792  				if shift >= 64 {
  4793  					return ErrIntOverflowRpc
  4794  				}
  4795  				if iNdEx >= l {
  4796  					return io.ErrUnexpectedEOF
  4797  				}
  4798  				b := dAtA[iNdEx]
  4799  				iNdEx++
  4800  				v |= (int(b) & 0x7F) << shift
  4801  				if b < 0x80 {
  4802  					break
  4803  				}
  4804  			}
  4805  			m.InitialCorruptCheck = bool(v != 0)
  4806  		default:
  4807  			iNdEx = preIndex
  4808  			skippy, err := skipRpc(dAtA[iNdEx:])
  4809  			if err != nil {
  4810  				return err
  4811  			}
  4812  			if skippy < 0 {
  4813  				return ErrInvalidLengthRpc
  4814  			}
  4815  			if (iNdEx + skippy) > l {
  4816  				return io.ErrUnexpectedEOF
  4817  			}
  4818  			iNdEx += skippy
  4819  		}
  4820  	}
  4821  
  4822  	if iNdEx > l {
  4823  		return io.ErrUnexpectedEOF
  4824  	}
  4825  	return nil
  4826  }
  4827  func skipRpc(dAtA []byte) (n int, err error) {
  4828  	l := len(dAtA)
  4829  	iNdEx := 0
  4830  	for iNdEx < l {
  4831  		var wire uint64
  4832  		for shift := uint(0); ; shift += 7 {
  4833  			if shift >= 64 {
  4834  				return 0, ErrIntOverflowRpc
  4835  			}
  4836  			if iNdEx >= l {
  4837  				return 0, io.ErrUnexpectedEOF
  4838  			}
  4839  			b := dAtA[iNdEx]
  4840  			iNdEx++
  4841  			wire |= (uint64(b) & 0x7F) << shift
  4842  			if b < 0x80 {
  4843  				break
  4844  			}
  4845  		}
  4846  		wireType := int(wire & 0x7)
  4847  		switch wireType {
  4848  		case 0:
  4849  			for shift := uint(0); ; shift += 7 {
  4850  				if shift >= 64 {
  4851  					return 0, ErrIntOverflowRpc
  4852  				}
  4853  				if iNdEx >= l {
  4854  					return 0, io.ErrUnexpectedEOF
  4855  				}
  4856  				iNdEx++
  4857  				if dAtA[iNdEx-1] < 0x80 {
  4858  					break
  4859  				}
  4860  			}
  4861  			return iNdEx, nil
  4862  		case 1:
  4863  			iNdEx += 8
  4864  			return iNdEx, nil
  4865  		case 2:
  4866  			var length int
  4867  			for shift := uint(0); ; shift += 7 {
  4868  				if shift >= 64 {
  4869  					return 0, ErrIntOverflowRpc
  4870  				}
  4871  				if iNdEx >= l {
  4872  					return 0, io.ErrUnexpectedEOF
  4873  				}
  4874  				b := dAtA[iNdEx]
  4875  				iNdEx++
  4876  				length |= (int(b) & 0x7F) << shift
  4877  				if b < 0x80 {
  4878  					break
  4879  				}
  4880  			}
  4881  			iNdEx += length
  4882  			if length < 0 {
  4883  				return 0, ErrInvalidLengthRpc
  4884  			}
  4885  			return iNdEx, nil
  4886  		case 3:
  4887  			for {
  4888  				var innerWire uint64
  4889  				var start int = iNdEx
  4890  				for shift := uint(0); ; shift += 7 {
  4891  					if shift >= 64 {
  4892  						return 0, ErrIntOverflowRpc
  4893  					}
  4894  					if iNdEx >= l {
  4895  						return 0, io.ErrUnexpectedEOF
  4896  					}
  4897  					b := dAtA[iNdEx]
  4898  					iNdEx++
  4899  					innerWire |= (uint64(b) & 0x7F) << shift
  4900  					if b < 0x80 {
  4901  						break
  4902  					}
  4903  				}
  4904  				innerWireType := int(innerWire & 0x7)
  4905  				if innerWireType == 4 {
  4906  					break
  4907  				}
  4908  				next, err := skipRpc(dAtA[start:])
  4909  				if err != nil {
  4910  					return 0, err
  4911  				}
  4912  				iNdEx = start + next
  4913  			}
  4914  			return iNdEx, nil
  4915  		case 4:
  4916  			return iNdEx, nil
  4917  		case 5:
  4918  			iNdEx += 4
  4919  			return iNdEx, nil
  4920  		default:
  4921  			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
  4922  		}
  4923  	}
  4924  	panic("unreachable")
  4925  }
  4926  
  4927  var (
  4928  	ErrInvalidLengthRpc = fmt.Errorf("proto: negative length found during unmarshaling")
  4929  	ErrIntOverflowRpc   = fmt.Errorf("proto: integer overflow")
  4930  )
  4931  
  4932  func init() { proto.RegisterFile("rpcpb/rpc.proto", fileDescriptorRpc) }
  4933  
  4934  var fileDescriptorRpc = []byte{
  4935  	// 2808 bytes of a gzipped FileDescriptorProto
  4936  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x59, 0xdb, 0x73, 0xdb, 0xc6,
  4937  	0xf5, 0x16, 0x44, 0x5d, 0x57, 0x37, 0x68, 0x65, 0xd9, 0xf0, 0x4d, 0x90, 0xe1, 0x38, 0x3f, 0x59,
  4938  	0x09, 0xec, 0xfc, 0xec, 0x4c, 0x2e, 0x4e, 0x13, 0x07, 0xa4, 0x20, 0x8b, 0x15, 0x44, 0xd2, 0x4b,
  4939  	0xc8, 0x76, 0x9e, 0x38, 0x10, 0xb9, 0x92, 0x30, 0xa6, 0x00, 0x06, 0x58, 0x2a, 0x52, 0xfe, 0x81,
  4940  	0xbe, 0xf6, 0x3e, 0xed, 0x4c, 0x9f, 0xfa, 0xdc, 0xb4, 0xff, 0x86, 0x73, 0x6b, 0xd3, 0xf6, 0xa9,
  4941  	0xed, 0x0c, 0xa7, 0x4d, 0x5f, 0xfa, 0xd4, 0x07, 0x4e, 0x6f, 0xe9, 0x53, 0x67, 0x77, 0x01, 0x71,
  4942  	0x01, 0x90, 0x92, 0x9e, 0xa4, 0x3d, 0xe7, 0xfb, 0xbe, 0x3d, 0xbb, 0x67, 0xb1, 0xe7, 0x00, 0x04,
  4943  	0x73, 0x41, 0xab, 0xde, 0xda, 0xb9, 0x1b, 0xb4, 0xea, 0x77, 0x5a, 0x81, 0x4f, 0x7c, 0x38, 0xca,
  4944  	0x0c, 0x57, 0xf4, 0x3d, 0x97, 0xec, 0xb7, 0x77, 0xee, 0xd4, 0xfd, 0x83, 0xbb, 0x7b, 0xfe, 0x9e,
  4945  	0x7f, 0x97, 0x79, 0x77, 0xda, 0xbb, 0x6c, 0xc4, 0x06, 0xec, 0x3f, 0xce, 0xd2, 0xbe, 0x23, 0x81,
  4946  	0x71, 0x84, 0x3f, 0x6c, 0xe3, 0x90, 0xc0, 0x3b, 0x60, 0xb2, 0xdc, 0xc2, 0x81, 0x43, 0x5c, 0xdf,
  4947  	0x53, 0xa4, 0x65, 0x69, 0x65, 0xf6, 0x9e, 0x7c, 0x87, 0xa9, 0xde, 0x39, 0xb1, 0xa3, 0x1e, 0x04,
  4948  	0xde, 0x02, 0x63, 0x5b, 0xf8, 0x60, 0x07, 0x07, 0xca, 0xf0, 0xb2, 0xb4, 0x32, 0x75, 0x6f, 0x26,
  4949  	0x02, 0x73, 0x23, 0x8a, 0x9c, 0x14, 0x66, 0xe3, 0x90, 0xe0, 0x40, 0xc9, 0x25, 0x60, 0xdc, 0x88,
  4950  	0x22, 0xa7, 0xf6, 0xb7, 0x61, 0x30, 0x5d, 0xf5, 0x9c, 0x56, 0xb8, 0xef, 0x93, 0xa2, 0xb7, 0xeb,
  4951  	0xc3, 0x25, 0x00, 0xb8, 0x42, 0xc9, 0x39, 0xc0, 0x2c, 0x9e, 0x49, 0x24, 0x58, 0xe0, 0x2a, 0x90,
  4952  	0xf9, 0xa8, 0xd0, 0x74, 0xb1, 0x47, 0xb6, 0x91, 0x15, 0x2a, 0xc3, 0xcb, 0xb9, 0x95, 0x49, 0x94,
  4953  	0xb1, 0x43, 0xad, 0xa7, 0x5d, 0x71, 0xc8, 0x3e, 0x8b, 0x64, 0x12, 0x25, 0x6c, 0x54, 0x2f, 0x1e,
  4954  	0xaf, 0xbb, 0x4d, 0x5c, 0x75, 0x3f, 0xc6, 0xca, 0x08, 0xc3, 0x65, 0xec, 0xf0, 0x55, 0x30, 0x1f,
  4955  	0xdb, 0x6c, 0x9f, 0x38, 0x4d, 0x06, 0x1e, 0x65, 0xe0, 0xac, 0x43, 0x54, 0x66, 0xc6, 0x4d, 0x7c,
  4956  	0xac, 0x8c, 0x2d, 0x4b, 0x2b, 0x39, 0x94, 0xb1, 0x8b, 0x91, 0x6e, 0x38, 0xe1, 0xbe, 0x32, 0xce,
  4957  	0x70, 0x09, 0x9b, 0xa8, 0x87, 0xf0, 0xa1, 0x1b, 0xd2, 0x7c, 0x4d, 0x24, 0xf5, 0x62, 0x3b, 0x84,
  4958  	0x60, 0xc4, 0xf6, 0xfd, 0xe7, 0xca, 0x24, 0x0b, 0x8e, 0xfd, 0xaf, 0xfd, 0x4c, 0x02, 0x13, 0x08,
  4959  	0x87, 0x2d, 0xdf, 0x0b, 0x31, 0x54, 0xc0, 0x78, 0xb5, 0x5d, 0xaf, 0xe3, 0x30, 0x64, 0x7b, 0x3c,
  4960  	0x81, 0xe2, 0x21, 0xbc, 0x08, 0xc6, 0xaa, 0xc4, 0x21, 0xed, 0x90, 0xe5, 0x77, 0x12, 0x45, 0x23,
  4961  	0x21, 0xef, 0xb9, 0xd3, 0xf2, 0xfe, 0x66, 0x32, 0x9f, 0x6c, 0x2f, 0xa7, 0xee, 0x2d, 0x44, 0x60,
  4962  	0xd1, 0x85, 0x12, 0x40, 0xed, 0x4f, 0xd3, 0xf1, 0x04, 0xf0, 0x5d, 0x30, 0x6d, 0x92, 0x7a, 0xc3,
  4963  	0x3c, 0xc2, 0x75, 0x96, 0x37, 0x76, 0x0a, 0xf2, 0x97, 0xbb, 0x1d, 0x75, 0xf1, 0xd8, 0x39, 0x68,
  4964  	0x3e, 0xd0, 0x30, 0xa9, 0x37, 0x74, 0x7c, 0x84, 0xeb, 0x7a, 0xcb, 0x21, 0xfb, 0x1a, 0x4a, 0xc0,
  4965  	0xe1, 0x7d, 0x30, 0x69, 0xec, 0x61, 0x8f, 0x18, 0x8d, 0x46, 0xa0, 0x4c, 0x31, 0xee, 0x62, 0xb7,
  4966  	0xa3, 0xce, 0x73, 0xae, 0x43, 0x5d, 0xba, 0xd3, 0x68, 0x04, 0x1a, 0xea, 0xe1, 0xa0, 0x05, 0xe6,
  4967  	0xd7, 0x1d, 0xb7, 0xd9, 0xf2, 0x5d, 0x8f, 0x6c, 0xd8, 0x76, 0x85, 0x91, 0xa7, 0x19, 0x79, 0xa9,
  4968  	0xdb, 0x51, 0xaf, 0x70, 0xf2, 0x6e, 0x0c, 0xd1, 0xf7, 0x09, 0x69, 0x45, 0x2a, 0x59, 0x22, 0xd4,
  4969  	0xc1, 0x78, 0xde, 0x09, 0xf1, 0x9a, 0x1b, 0x28, 0x98, 0x69, 0x2c, 0x74, 0x3b, 0xea, 0x1c, 0xd7,
  4970  	0xd8, 0x71, 0x42, 0xac, 0x37, 0xdc, 0x40, 0x43, 0x31, 0x06, 0x3e, 0x00, 0x53, 0x74, 0x05, 0x96,
  4971  	0xbf, 0xc7, 0xd6, 0xbb, 0xcb, 0x28, 0x4a, 0xb7, 0xa3, 0x5e, 0x10, 0xd6, 0xdb, 0xf4, 0xf7, 0xa2,
  4972  	0xe5, 0x8a, 0x60, 0xf8, 0x08, 0xcc, 0xd1, 0x21, 0x3f, 0xf6, 0x95, 0xc0, 0x3f, 0x3a, 0x56, 0x3e,
  4973  	0x65, 0x29, 0xcd, 0x5f, 0xeb, 0x76, 0x54, 0x45, 0x10, 0xa8, 0x33, 0x88, 0xde, 0xa2, 0x18, 0x0d,
  4974  	0xa5, 0x59, 0xd0, 0x00, 0x33, 0xd4, 0x54, 0xc1, 0x38, 0xe0, 0x32, 0x9f, 0x71, 0x99, 0x2b, 0xdd,
  4975  	0x8e, 0x7a, 0x51, 0x90, 0x69, 0x61, 0x1c, 0xc4, 0x22, 0x49, 0x06, 0xac, 0x00, 0xd8, 0x53, 0x35,
  4976  	0xbd, 0x06, 0xdb, 0x14, 0xe5, 0x13, 0x76, 0x90, 0xf2, 0x6a, 0xb7, 0xa3, 0x5e, 0xcd, 0x86, 0x83,
  4977  	0x23, 0x98, 0x86, 0xfa, 0x70, 0xe1, 0xff, 0x83, 0x11, 0x6a, 0x55, 0x7e, 0xc9, 0x2f, 0x9b, 0xa9,
  4978  	0xe8, 0x1c, 0x51, 0x5b, 0x7e, 0xae, 0xdb, 0x51, 0xa7, 0x7a, 0x82, 0x1a, 0x62, 0x50, 0x98, 0x07,
  4979  	0x8b, 0xf4, 0x6f, 0xd9, 0xeb, 0x3d, 0x15, 0x21, 0xf1, 0x03, 0xac, 0xfc, 0x2a, 0xab, 0x81, 0xfa,
  4980  	0x43, 0xe1, 0x1a, 0x98, 0xe5, 0x81, 0x14, 0x70, 0x40, 0xd6, 0x1c, 0xe2, 0x28, 0xdf, 0x63, 0x97,
  4981  	0x47, 0xfe, 0x6a, 0xb7, 0xa3, 0x5e, 0xe2, 0x73, 0x46, 0xf1, 0xd7, 0x71, 0x40, 0xf4, 0x86, 0x43,
  4982  	0x1c, 0x0d, 0xa5, 0x38, 0x49, 0x15, 0x96, 0xd9, 0xef, 0x9f, 0xaa, 0xc2, 0xb3, 0x9b, 0xe2, 0xd0,
  4983  	0xbc, 0x70, 0xcb, 0x26, 0x3e, 0x66, 0xa1, 0xfc, 0x80, 0x8b, 0x08, 0x79, 0x89, 0x44, 0x9e, 0xe3,
  4984  	0xe3, 0x28, 0x92, 0x24, 0x23, 0x21, 0xc1, 0xe2, 0xf8, 0xe1, 0x69, 0x12, 0x3c, 0x8c, 0x24, 0x03,
  4985  	0xda, 0x60, 0x81, 0x1b, 0xec, 0xa0, 0x1d, 0x12, 0xdc, 0x28, 0x18, 0x2c, 0x96, 0x1f, 0x71, 0xa1,
  4986  	0x1b, 0xdd, 0x8e, 0x7a, 0x3d, 0x21, 0x44, 0x38, 0x4c, 0xaf, 0x3b, 0x51, 0x48, 0xfd, 0xe8, 0x7d,
  4987  	0x54, 0x59, 0x78, 0x3f, 0x3e, 0x87, 0x2a, 0x8f, 0xb2, 0x1f, 0x1d, 0xbe, 0x07, 0xa6, 0xe9, 0x99,
  4988  	0x3c, 0xc9, 0xdd, 0x3f, 0x73, 0xe9, 0x0b, 0x84, 0x9d, 0x61, 0x21, 0x73, 0x09, 0xbc, 0xc8, 0x67,
  4989  	0xe1, 0xfc, 0xeb, 0x14, 0x7e, 0x74, 0x01, 0x89, 0x78, 0xf8, 0x0e, 0x98, 0xa2, 0xe3, 0x38, 0x5f,
  4990  	0xff, 0xce, 0xa5, 0x9f, 0x67, 0x46, 0xef, 0x65, 0x4b, 0x44, 0x0b, 0x64, 0x36, 0xf7, 0x7f, 0x06,
  4991  	0x93, 0xa3, 0xcb, 0x40, 0x40, 0xc3, 0x12, 0x98, 0xa7, 0xc3, 0x64, 0x8e, 0xbe, 0xc9, 0xa5, 0x9f,
  4992  	0x3f, 0x26, 0x91, 0xc9, 0x50, 0x96, 0x9a, 0xd1, 0x63, 0x21, 0xfd, 0xf7, 0x4c, 0x3d, 0x1e, 0x59,
  4993  	0x96, 0x4a, 0x6f, 0xf6, 0x44, 0x45, 0xfe, 0xc3, 0x48, 0x7a, 0x75, 0x61, 0xe4, 0x8e, 0x37, 0x36,
  4994  	0x51, 0xac, 0xdf, 0x4a, 0x15, 0x97, 0x3f, 0x9e, 0xbb, 0xba, 0xfc, 0x7c, 0x3a, 0xee, 0x47, 0xe8,
  4995  	0xdd, 0x4c, 0xd7, 0x46, 0xef, 0x66, 0x29, 0x7d, 0x37, 0xd3, 0x8d, 0x88, 0xee, 0xe6, 0x08, 0x03,
  4996  	0x5f, 0x05, 0xe3, 0x25, 0x4c, 0x3e, 0xf2, 0x83, 0xe7, 0xbc, 0x20, 0xe6, 0x61, 0xb7, 0xa3, 0xce,
  4997  	0x72, 0xb8, 0xc7, 0x1d, 0x1a, 0x8a, 0x21, 0xf0, 0x26, 0x18, 0x61, 0x95, 0x83, 0x6f, 0x91, 0x70,
  4998  	0x43, 0xf1, 0x52, 0xc1, 0x9c, 0xb0, 0x00, 0x66, 0xd7, 0x70, 0xd3, 0x39, 0xb6, 0x1c, 0x82, 0xbd,
  4999  	0xfa, 0xf1, 0x56, 0xc8, 0xaa, 0xd4, 0x8c, 0x78, 0x2d, 0x34, 0xa8, 0x5f, 0x6f, 0x72, 0x80, 0x7e,
  5000  	0x10, 0x6a, 0x28, 0x45, 0x81, 0xdf, 0x06, 0x72, 0xd2, 0x82, 0x0e, 0x59, 0xbd, 0x9a, 0x11, 0xeb,
  5001  	0x55, 0x5a, 0x46, 0x0f, 0x0e, 0x35, 0x94, 0xe1, 0xc1, 0x0f, 0xc0, 0xe2, 0x76, 0xab, 0xe1, 0x10,
  5002  	0xdc, 0x48, 0xc5, 0x35, 0xc3, 0x04, 0x6f, 0x76, 0x3b, 0xaa, 0xca, 0x05, 0xdb, 0x1c, 0xa6, 0x67,
  5003  	0xe3, 0xeb, 0xaf, 0x00, 0xdf, 0x00, 0x00, 0xf9, 0x6d, 0xaf, 0x61, 0xb9, 0x07, 0x2e, 0x51, 0x16,
  5004  	0x97, 0xa5, 0x95, 0xd1, 0xfc, 0xc5, 0x6e, 0x47, 0x85, 0x5c, 0x2f, 0xa0, 0x3e, 0xbd, 0x49, 0x9d,
  5005  	0x1a, 0x12, 0x90, 0x30, 0x0f, 0x66, 0xcd, 0x23, 0x97, 0x94, 0xbd, 0x82, 0x13, 0x62, 0x5a, 0x60,
  5006  	0x95, 0x8b, 0x99, 0x6a, 0x74, 0xe4, 0x12, 0xdd, 0xf7, 0x74, 0x5a, 0x94, 0xdb, 0x01, 0xd6, 0x50,
  5007  	0x8a, 0x01, 0xdf, 0x06, 0x53, 0xa6, 0xe7, 0xec, 0x34, 0x71, 0xa5, 0x15, 0xf8, 0xbb, 0xca, 0x25,
  5008  	0x26, 0x70, 0xa9, 0xdb, 0x51, 0x17, 0x22, 0x01, 0xe6, 0xd4, 0x5b, 0xd4, 0x4b, 0xab, 0x6a, 0x0f,
  5009  	0x4b, 0x2b, 0x32, 0x95, 0x61, 0x8b, 0xd9, 0x0a, 0x15, 0x95, 0xed, 0x83, 0x70, 0x4c, 0xeb, 0xac,
  5010  	0x88, 0xb3, 0x4d, 0xa0, 0x8b, 0x17, 0xc1, 0x74, 0x5a, 0x3a, 0xac, 0xee, 0xb7, 0x77, 0x77, 0x9b,
  5011  	0x58, 0x59, 0x4e, 0x4f, 0xcb, 0xb8, 0x21, 0xf7, 0x46, 0xd4, 0x08, 0x0b, 0x5f, 0x06, 0xa3, 0x74,
  5012  	0x18, 0x2a, 0x37, 0x68, 0x4b, 0x9b, 0x97, 0xbb, 0x1d, 0x75, 0xba, 0x47, 0x0a, 0x35, 0xc4, 0xdd,
  5013  	0x70, 0x53, 0xe8, 0x56, 0x0a, 0xfe, 0xc1, 0x81, 0xe3, 0x35, 0x42, 0x45, 0x63, 0x9c, 0xeb, 0xdd,
  5014  	0x8e, 0x7a, 0x39, 0xdd, 0xad, 0xd4, 0x23, 0x8c, 0xd8, 0xac, 0xc4, 0x3c, 0x7a, 0x1c, 0x51, 0xdb,
  5015  	0xf3, 0x70, 0x70, 0xd2, 0x70, 0xdd, 0x4e, 0x57, 0xa9, 0x80, 0xf9, 0xc5, 0x96, 0x2b, 0x45, 0x81,
  5016  	0x45, 0x20, 0x9b, 0x47, 0x04, 0x07, 0x9e, 0xd3, 0x3c, 0x91, 0x59, 0x65, 0x32, 0x42, 0x40, 0x38,
  5017  	0x42, 0x88, 0x42, 0x19, 0x1a, 0xbc, 0x07, 0x26, 0xab, 0x24, 0xc0, 0x61, 0x88, 0x83, 0x50, 0xc1,
  5018  	0x6c, 0x51, 0x17, 0xba, 0x1d, 0x55, 0x8e, 0x2e, 0x88, 0xd8, 0xa5, 0xa1, 0x1e, 0x0c, 0xde, 0x05,
  5019  	0x13, 0x85, 0x7d, 0x5c, 0x7f, 0x4e, 0x29, 0xbb, 0x8c, 0x22, 0x3c, 0xd5, 0xf5, 0xc8, 0xa3, 0xa1,
  5020  	0x13, 0x10, 0x2d, 0x89, 0x9c, 0xbd, 0x89, 0x8f, 0x59, 0x1f, 0xcf, 0x9a, 0xa6, 0x51, 0xf1, 0x7c,
  5021  	0xf1, 0x99, 0xd8, 0x55, 0x1b, 0xba, 0x1f, 0x63, 0x0d, 0x25, 0x19, 0xf0, 0x31, 0x80, 0x09, 0x83,
  5022  	0xe5, 0x04, 0x7b, 0x98, 0x77, 0x4d, 0xa3, 0xf9, 0xe5, 0x6e, 0x47, 0xbd, 0xd6, 0x57, 0x47, 0x6f,
  5023  	0x52, 0x9c, 0x86, 0xfa, 0x90, 0xe1, 0x53, 0x70, 0xa1, 0x67, 0x6d, 0xef, 0xee, 0xba, 0x47, 0xc8,
  5024  	0xf1, 0xf6, 0xb0, 0xf2, 0x39, 0x17, 0xd5, 0xba, 0x1d, 0x75, 0x29, 0x2b, 0xca, 0x80, 0x7a, 0x40,
  5025  	0x91, 0x1a, 0xea, 0x2b, 0x00, 0x1d, 0x70, 0xa9, 0x9f, 0xdd, 0x3e, 0xf2, 0x94, 0x2f, 0xb8, 0xf6,
  5026  	0xcb, 0xdd, 0x8e, 0xaa, 0x9d, 0xaa, 0xad, 0x93, 0x23, 0x4f, 0x43, 0x83, 0x74, 0xe0, 0x06, 0x98,
  5027  	0x3b, 0x71, 0xd9, 0x47, 0x5e, 0xb9, 0x15, 0x2a, 0x5f, 0x72, 0x69, 0xe1, 0x04, 0x08, 0xd2, 0xe4,
  5028  	0xc8, 0xd3, 0xfd, 0x56, 0xa8, 0xa1, 0x34, 0x0d, 0xbe, 0x1f, 0xe7, 0x86, 0x17, 0xf7, 0x90, 0x77,
  5029  	0x90, 0xa3, 0x62, 0x01, 0x8e, 0x74, 0x78, 0x5b, 0x10, 0x9e, 0xa4, 0x26, 0x22, 0xc0, 0xd7, 0xe3,
  5030  	0x23, 0xf4, 0xb8, 0x52, 0xe5, 0xbd, 0xe3, 0xa8, 0xf8, 0x0e, 0x10, 0xb1, 0x3f, 0x6c, 0xf5, 0x0e,
  5031  	0xd1, 0xe3, 0x4a, 0x55, 0xfb, 0x66, 0x86, 0x77, 0x9b, 0xf4, 0x16, 0xef, 0xbd, 0x7e, 0x8a, 0xb7,
  5032  	0xb8, 0xe7, 0x1c, 0x60, 0x0d, 0x31, 0xa7, 0x58, 0x47, 0x86, 0xcf, 0x51, 0x47, 0x56, 0xc1, 0xd8,
  5033  	0x53, 0xc3, 0xa2, 0xe8, 0x5c, 0xba, 0x8c, 0x7c, 0xe4, 0x34, 0x39, 0x38, 0x42, 0xc0, 0x32, 0x58,
  5034  	0xd8, 0xc0, 0x4e, 0x40, 0x76, 0xb0, 0x43, 0x8a, 0x1e, 0xc1, 0xc1, 0xa1, 0xd3, 0x8c, 0xaa, 0x44,
  5035  	0x4e, 0xdc, 0xcd, 0xfd, 0x18, 0xa4, 0xbb, 0x11, 0x4a, 0x43, 0xfd, 0x98, 0xb0, 0x08, 0xe6, 0xcd,
  5036  	0x26, 0xae, 0xd3, 0x17, 0x78, 0xdb, 0x3d, 0xc0, 0x7e, 0x9b, 0x6c, 0x85, 0xac, 0x5a, 0xe4, 0xc4,
  5037  	0xa7, 0x1c, 0x47, 0x10, 0x9d, 0x70, 0x8c, 0x86, 0xb2, 0x2c, 0xfa, 0xa0, 0x5b, 0x6e, 0x48, 0xb0,
  5038  	0x27, 0xbc, 0x80, 0x2f, 0xa6, 0x6f, 0x9e, 0x26, 0x43, 0xc4, 0x2d, 0x7e, 0x3b, 0x68, 0x86, 0x1a,
  5039  	0xca, 0xd0, 0x20, 0x02, 0x0b, 0x46, 0xe3, 0x10, 0x07, 0xc4, 0x0d, 0xb1, 0xa0, 0x76, 0x91, 0xa9,
  5040  	0x09, 0x0f, 0x90, 0x13, 0x83, 0x92, 0x82, 0xfd, 0xc8, 0xf0, 0xed, 0xb8, 0xd5, 0x35, 0xda, 0xc4,
  5041  	0xb7, 0xad, 0x6a, 0x74, 0xeb, 0x0b, 0xb9, 0x71, 0xda, 0xc4, 0xd7, 0x09, 0x15, 0x48, 0x22, 0xe9,
  5042  	0x3d, 0xd8, 0x6b, 0xbd, 0x8d, 0x36, 0xd9, 0x57, 0x14, 0xc6, 0x1d, 0xd0, 0xad, 0x3b, 0xed, 0x54,
  5043  	0xb7, 0x4e, 0x29, 0xf0, 0x5b, 0xa2, 0xc8, 0xba, 0xdb, 0xc4, 0xca, 0x65, 0x96, 0x6e, 0xe1, 0x06,
  5044  	0x63, 0xec, 0x5d, 0x97, 0x5e, 0xfe, 0x29, 0x6c, 0x2f, 0xfa, 0x4d, 0x7c, 0xcc, 0xc8, 0x57, 0xd2,
  5045  	0x27, 0x8b, 0x3e, 0x39, 0x9c, 0x9b, 0x44, 0x42, 0x2b, 0xd3, 0x4a, 0x33, 0x81, 0xab, 0xe9, 0x46,
  5046  	0x5f, 0x68, 0xd3, 0xb8, 0x4e, 0x3f, 0x1a, 0xdd, 0x0b, 0x9e, 0x2e, 0xda, 0xc3, 0xb1, 0xac, 0xa8,
  5047  	0x2c, 0x2b, 0xc2, 0x5e, 0x44, 0x39, 0x66, 0xbd, 0x1f, 0x4f, 0x48, 0x8a, 0x02, 0x6d, 0x30, 0x7f,
  5048  	0x92, 0xa2, 0x13, 0x9d, 0x65, 0xa6, 0x23, 0xdc, 0x36, 0xae, 0xe7, 0x12, 0xd7, 0x69, 0xea, 0xbd,
  5049  	0x2c, 0x0b, 0x92, 0x59, 0x01, 0x5a, 0x9a, 0xe9, 0xff, 0x71, 0x7e, 0x6f, 0xb0, 0x1c, 0xa5, 0xfb,
  5050  	0xe3, 0x5e, 0x92, 0x45, 0x30, 0x7d, 0x41, 0x65, 0x9d, 0x7a, 0x32, 0xcd, 0x1a, 0x93, 0x10, 0x0e,
  5051  	0x1c, 0x6f, 0xef, 0x33, 0xb9, 0xee, 0xc3, 0xa5, 0x1d, 0x6d, 0xdc, 0xfb, 0xb3, 0xfd, 0xbe, 0x39,
  5052  	0xf8, 0x55, 0x81, 0x6f, 0x77, 0x02, 0x1e, 0x2f, 0x26, 0x4e, 0xf7, 0x4b, 0x03, 0x9b, 0x7d, 0x4e,
  5053  	0x16, 0xc1, 0x70, 0x2b, 0xd5, 0x9c, 0x33, 0x85, 0x5b, 0x67, 0xf5, 0xe6, 0x5c, 0x28, 0xcb, 0xa4,
  5054  	0x1d, 0x57, 0x91, 0xa7, 0xa2, 0xd0, 0x6c, 0xb3, 0x2f, 0x77, 0xb7, 0xd3, 0x67, 0x27, 0x4e, 0x55,
  5055  	0x9d, 0x03, 0x34, 0x94, 0x62, 0xd0, 0x27, 0x3a, 0x69, 0xa9, 0x12, 0x87, 0xe0, 0xa8, 0x11, 0x10,
  5056  	0x36, 0x38, 0x25, 0xa4, 0x87, 0x14, 0xa6, 0xa1, 0x7e, 0xe4, 0xac, 0xa6, 0xed, 0x3f, 0xc7, 0x9e,
  5057  	0xf2, 0xca, 0x59, 0x9a, 0x84, 0xc2, 0x32, 0x9a, 0x8c, 0x0c, 0x1f, 0x82, 0x99, 0xf8, 0xf5, 0xa0,
  5058  	0xe0, 0xb7, 0x3d, 0xa2, 0xdc, 0x67, 0x77, 0xa1, 0x58, 0x60, 0xe2, 0xf7, 0x90, 0x3a, 0xf5, 0xd3,
  5059  	0x02, 0x23, 0xe2, 0xa1, 0x05, 0xe6, 0x1f, 0xb7, 0x7d, 0xe2, 0xe4, 0x9d, 0xfa, 0x73, 0xec, 0x35,
  5060  	0xf2, 0xc7, 0x04, 0x87, 0xca, 0xeb, 0x4c, 0x44, 0x68, 0xbf, 0x3f, 0xa4, 0x10, 0x7d, 0x87, 0x63,
  5061  	0xf4, 0x1d, 0x0a, 0xd2, 0x50, 0x96, 0x48, 0x4b, 0x49, 0x25, 0xc0, 0x4f, 0x7c, 0x82, 0x95, 0x87,
  5062  	0xe9, 0xeb, 0xaa, 0x15, 0x60, 0xfd, 0xd0, 0xa7, 0xbb, 0x13, 0x63, 0xc4, 0x1d, 0xf1, 0x83, 0xa0,
  5063  	0xdd, 0x22, 0xac, 0xab, 0x51, 0xde, 0x4f, 0x1f, 0xe3, 0x93, 0x1d, 0xe1, 0x28, 0x9d, 0xf5, 0x41,
  5064  	0xc2, 0x8e, 0x08, 0xe4, 0xd5, 0x9f, 0xe6, 0x84, 0xef, 0xc0, 0x70, 0x0e, 0x4c, 0x95, 0xca, 0x76,
  5065  	0xad, 0x6a, 0x1b, 0xc8, 0x36, 0xd7, 0xe4, 0x21, 0x78, 0x11, 0xc0, 0x62, 0xa9, 0x68, 0x17, 0x0d,
  5066  	0x8b, 0x1b, 0x6b, 0xa6, 0x5d, 0x58, 0x93, 0x01, 0x94, 0xc1, 0x34, 0x32, 0x05, 0xcb, 0x14, 0xb5,
  5067  	0x54, 0x8b, 0x8f, 0x6c, 0x13, 0x6d, 0x71, 0xcb, 0x05, 0xb8, 0x0c, 0xae, 0x55, 0x8b, 0x8f, 0x1e,
  5068  	0x6f, 0x17, 0x39, 0xa6, 0x66, 0x94, 0xd6, 0x6a, 0xc8, 0xdc, 0x2a, 0x3f, 0x31, 0x6b, 0x6b, 0x86,
  5069  	0x6d, 0xc8, 0x8b, 0x70, 0x1e, 0xcc, 0x54, 0x8d, 0x27, 0x66, 0xad, 0x5a, 0x32, 0x2a, 0xd5, 0x8d,
  5070  	0xb2, 0x2d, 0x2f, 0xc1, 0x1b, 0xe0, 0x3a, 0x15, 0x2e, 0x23, 0xb3, 0x16, 0x4f, 0xb0, 0x8e, 0xca,
  5071  	0x5b, 0x3d, 0x88, 0x0a, 0x2f, 0x83, 0xc5, 0xfe, 0xae, 0x65, 0xca, 0xce, 0x4c, 0x69, 0xa0, 0xc2,
  5072  	0x46, 0x31, 0x9e, 0x73, 0x05, 0xde, 0x05, 0xaf, 0x9c, 0x16, 0x15, 0x1b, 0x57, 0xed, 0x72, 0xa5,
  5073  	0x66, 0x3c, 0x32, 0x4b, 0xb6, 0x7c, 0x1b, 0x5e, 0x07, 0x97, 0xf3, 0x96, 0x51, 0xd8, 0xdc, 0x28,
  5074  	0x5b, 0x66, 0xad, 0x62, 0x9a, 0xa8, 0x56, 0x29, 0x23, 0xbb, 0x66, 0x3f, 0xab, 0xa1, 0x67, 0x72,
  5075  	0x03, 0xaa, 0xe0, 0xea, 0x76, 0x69, 0x30, 0x00, 0xc3, 0x2b, 0x60, 0x71, 0xcd, 0xb4, 0x8c, 0x0f,
  5076  	0x32, 0xae, 0x17, 0x12, 0xbc, 0x06, 0x2e, 0x6d, 0x97, 0xfa, 0x7b, 0x3f, 0x95, 0x56, 0xff, 0x0e,
  5077  	0xc0, 0x08, 0xed, 0xfb, 0xa1, 0x02, 0x2e, 0xc4, 0x7b, 0x5b, 0x2e, 0x99, 0xb5, 0xf5, 0xb2, 0x65,
  5078  	0x95, 0x9f, 0x9a, 0x48, 0x1e, 0x8a, 0x56, 0x93, 0xf1, 0xd4, 0xb6, 0x4b, 0x76, 0xd1, 0xaa, 0xd9,
  5079  	0xa8, 0xf8, 0xe8, 0x91, 0x89, 0x7a, 0x3b, 0x24, 0x41, 0x08, 0x66, 0x63, 0x82, 0x65, 0x1a, 0x6b,
  5080  	0x26, 0x92, 0x87, 0xe1, 0x6d, 0x70, 0x2b, 0x69, 0x1b, 0x44, 0xcf, 0x89, 0xf4, 0xc7, 0xdb, 0x65,
  5081  	0xb4, 0xbd, 0x25, 0x8f, 0xd0, 0x43, 0x13, 0xdb, 0x0c, 0xcb, 0x92, 0x47, 0xe1, 0x4d, 0xa0, 0xc6,
  5082  	0x5b, 0x2c, 0xec, 0x6e, 0x22, 0x72, 0x00, 0x1f, 0x80, 0x37, 0xce, 0x00, 0x0d, 0x8a, 0x62, 0x8a,
  5083  	0xa6, 0xa4, 0x0f, 0x37, 0x5a, 0xcf, 0x34, 0x7c, 0x1d, 0xbc, 0x36, 0xd0, 0x3d, 0x48, 0x74, 0x06,
  5084  	0xae, 0x83, 0x7c, 0x1f, 0x16, 0x5f, 0x65, 0x64, 0xe1, 0xe7, 0x32, 0x12, 0x8a, 0xa9, 0xd1, 0x21,
  5085  	0x2c, 0x20, 0xc3, 0x2e, 0x6c, 0xc8, 0xb3, 0x70, 0x15, 0xbc, 0x3c, 0xf0, 0x38, 0x24, 0x37, 0xa1,
  5086  	0x01, 0x0d, 0xf0, 0xee, 0xf9, 0xb0, 0x83, 0xc2, 0xc6, 0xf0, 0x25, 0xb0, 0x3c, 0x58, 0x22, 0xda,
  5087  	0x92, 0x5d, 0xf8, 0x0e, 0x78, 0xf3, 0x2c, 0xd4, 0xa0, 0x29, 0xf6, 0x4e, 0x9f, 0x22, 0x3a, 0x06,
  5088  	0xfb, 0xf4, 0xd9, 0x1b, 0x8c, 0xa2, 0x07, 0xc3, 0x85, 0xff, 0x07, 0xb4, 0xbe, 0x87, 0x3d, 0xb9,
  5089  	0x2d, 0x2f, 0x24, 0x78, 0x07, 0xdc, 0x46, 0x46, 0x69, 0xad, 0xbc, 0x55, 0x3b, 0x07, 0xfe, 0x53,
  5090  	0x09, 0xbe, 0x07, 0xde, 0x3e, 0x1b, 0x38, 0x68, 0x81, 0x9f, 0x49, 0xd0, 0x04, 0xef, 0x9f, 0x7b,
  5091  	0xbe, 0x41, 0x32, 0x9f, 0x4b, 0xf0, 0x06, 0xb8, 0xd6, 0x9f, 0x1f, 0xe5, 0xe1, 0x0b, 0x09, 0xae,
  5092  	0x80, 0x9b, 0xa7, 0xce, 0x14, 0x21, 0xbf, 0x94, 0xe0, 0x5b, 0xe0, 0xfe, 0x69, 0x90, 0x41, 0x61,
  5093  	0xfc, 0x5a, 0x82, 0x0f, 0xc1, 0x83, 0x73, 0xcc, 0x31, 0x48, 0xe0, 0x37, 0xa7, 0xac, 0x23, 0x4a,
  5094  	0xf6, 0x57, 0x67, 0xaf, 0x23, 0x42, 0xfe, 0x56, 0x82, 0x4b, 0xe0, 0x72, 0x7f, 0x08, 0x3d, 0x13,
  5095  	0xbf, 0x93, 0xe0, 0x2d, 0xb0, 0x7c, 0xaa, 0x12, 0x85, 0xfd, 0x5e, 0x82, 0x0a, 0x58, 0x28, 0x95,
  5096  	0x6b, 0xeb, 0x46, 0xd1, 0xaa, 0x3d, 0x2d, 0xda, 0x1b, 0xb5, 0xaa, 0x8d, 0xcc, 0x6a, 0x55, 0xfe,
  5097  	0xc5, 0x30, 0x0d, 0x25, 0xe1, 0x29, 0x95, 0x23, 0x67, 0x6d, 0xbd, 0x8c, 0x6a, 0x56, 0xf1, 0x89,
  5098  	0x59, 0xa2, 0xc8, 0x4f, 0x86, 0xe1, 0x1c, 0x00, 0x14, 0x56, 0x29, 0x17, 0x4b, 0x76, 0x55, 0xfe,
  5099  	0x6e, 0x0e, 0xce, 0x80, 0x09, 0xf3, 0x99, 0x6d, 0xa2, 0x92, 0x61, 0xc9, 0xff, 0xc8, 0xad, 0x1e,
  5100  	0x80, 0x89, 0xf8, 0xd3, 0x02, 0x1c, 0x03, 0xc3, 0x9b, 0x4f, 0xe4, 0x21, 0x38, 0x09, 0x46, 0x2d,
  5101  	0xd3, 0xa8, 0x9a, 0xb2, 0x04, 0x17, 0xc0, 0x9c, 0x69, 0x99, 0x05, 0xbb, 0x58, 0x2e, 0xd5, 0xd0,
  5102  	0x76, 0xa9, 0xc4, 0x2e, 0x4f, 0x19, 0x4c, 0x3f, 0xa5, 0x4f, 0x7e, 0x6c, 0xc9, 0xc1, 0x45, 0x30,
  5103  	0x6f, 0x95, 0x0b, 0x9b, 0x35, 0x64, 0x14, 0x4c, 0x14, 0x9b, 0x47, 0x28, 0x90, 0x09, 0xc5, 0x96,
  5104  	0xd1, 0xd5, 0x3c, 0x18, 0x8f, 0xbe, 0x4b, 0xc0, 0x29, 0x30, 0xbe, 0xf9, 0xa4, 0xb6, 0x61, 0x54,
  5105  	0x37, 0xe4, 0xa1, 0x1e, 0xd2, 0x7c, 0x56, 0x29, 0x22, 0x3a, 0x33, 0x00, 0x63, 0x27, 0x13, 0x4e,
  5106  	0x83, 0x89, 0x52, 0xb9, 0x56, 0xd8, 0x30, 0x0b, 0x9b, 0x72, 0xee, 0xde, 0x43, 0x30, 0x69, 0x07,
  5107  	0x8e, 0x17, 0xb6, 0xfc, 0x80, 0xc0, 0x7b, 0xe2, 0x60, 0x36, 0xfa, 0x3a, 0x1a, 0xfd, 0xe0, 0x7b,
  5108  	0x65, 0xee, 0x64, 0xcc, 0x7f, 0x0b, 0xd4, 0x86, 0x56, 0xa4, 0xd7, 0xa4, 0xfc, 0x85, 0x17, 0x7f,
  5109  	0x59, 0x1a, 0x7a, 0xf1, 0xf5, 0x92, 0xf4, 0xd5, 0xd7, 0x4b, 0xd2, 0x9f, 0xbf, 0x5e, 0x92, 0x7e,
  5110  	0xf2, 0xd7, 0xa5, 0xa1, 0x9d, 0x31, 0xf6, 0x83, 0xf1, 0xfd, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff,
  5111  	0x5c, 0x9f, 0x8c, 0x37, 0x79, 0x1e, 0x00, 0x00,
  5112  }