From 421439c6332f8535bf08eeea5564c9bdc51063dc Mon Sep 17 00:00:00 2001 From: bin Date: Fri, 9 Apr 2021 16:03:29 +0800 Subject: [PATCH] API: remove ProcessListContainer/ListProcesses This commit will remove ProcessListContainer API from VCSandbox and ListProcesses from agent.proto. Fixes: #1668 Signed-off-by: bin --- .../protocols/hack/update-generated-proto.sh | 2 +- src/agent/protocols/protos/agent.proto | 13 - src/agent/src/rpc.rs | 90 +- src/runtime/virtcontainers/agent.go | 3 - src/runtime/virtcontainers/container.go | 12 - .../documentation/api/1.0/api.md | 9 - src/runtime/virtcontainers/interfaces.go | 1 - src/runtime/virtcontainers/kata_agent.go | 24 - src/runtime/virtcontainers/kata_agent_test.go | 3 - src/runtime/virtcontainers/mock_agent.go | 5 - .../pkg/agent/protocols/grpc/agent.pb.go | 967 +++++------------- src/runtime/virtcontainers/pkg/mock/mock.go | 4 - .../virtcontainers/pkg/vcmock/sandbox.go | 5 - .../virtcontainers/pkg/vcmock/types.go | 1 - src/runtime/virtcontainers/sandbox.go | 13 - tools/agent-ctl/Cargo.lock | 73 +- tools/agent-ctl/src/client.rs | 42 - 17 files changed, 255 insertions(+), 1012 deletions(-) diff --git a/src/agent/protocols/hack/update-generated-proto.sh b/src/agent/protocols/hack/update-generated-proto.sh index cfc66415c6..9d5e8e3bcd 100755 --- a/src/agent/protocols/hack/update-generated-proto.sh +++ b/src/agent/protocols/hack/update-generated-proto.sh @@ -65,7 +65,7 @@ $GOPATH/src/github.com/kata-containers/kata-containers/src/agent/protocols/proto } if [ "$(basename $(pwd))" != "agent" ]; then - die "Please go to directory of protocols before execute this shell" + die "Please go to root directory of agent before execute this shell" fi # Protocol buffer files required to generate golang/rust bindings. diff --git a/src/agent/protocols/protos/agent.proto b/src/agent/protocols/protos/agent.proto index eb81e45e5c..6cbf5a28ca 100644 --- a/src/agent/protocols/protos/agent.proto +++ b/src/agent/protocols/protos/agent.proto @@ -32,7 +32,6 @@ service AgentService { rpc ExecProcess(ExecProcessRequest) returns (google.protobuf.Empty); rpc SignalProcess(SignalProcessRequest) returns (google.protobuf.Empty); rpc WaitProcess(WaitProcessRequest) returns (WaitProcessResponse); // wait & reap like waitpid(2) - rpc ListProcesses(ListProcessesRequest) returns (ListProcessesResponse); rpc UpdateContainer(UpdateContainerRequest) returns (google.protobuf.Empty); rpc StatsContainer(StatsContainerRequest) returns (StatsContainerResponse); rpc PauseContainer(PauseContainerRequest) returns (google.protobuf.Empty); @@ -126,18 +125,6 @@ message WaitProcessResponse { int32 status = 1; } -// ListProcessesRequest contains the options used to list running processes inside the container -message ListProcessesRequest { - string container_id = 1; - string format = 2; - repeated string args = 3; -} - -// ListProcessesResponse represents the list of running processes inside the container -message ListProcessesResponse { - bytes process_list = 1; -} - message UpdateContainerRequest { string container_id = 1; LinuxResources resources = 2; diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index bee68aae20..ea28eeea9e 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -20,9 +20,8 @@ use anyhow::{anyhow, Context, Result}; use oci::{LinuxNamespace, Root, Spec}; use protobuf::{RepeatedField, SingularPtrField}; use protocols::agent::{ - AgentDetails, CopyFileRequest, GuestDetailsResponse, Interfaces, ListProcessesResponse, - Metrics, OOMEvent, ReadStreamResponse, Routes, StatsContainerResponse, WaitProcessResponse, - WriteStreamResponse, + AgentDetails, CopyFileRequest, GuestDetailsResponse, Interfaces, Metrics, OOMEvent, + ReadStreamResponse, Routes, StatsContainerResponse, WaitProcessResponse, WriteStreamResponse, }; use protocols::empty::Empty; use protocols::health::{ @@ -576,91 +575,6 @@ impl protocols::agent_ttrpc::AgentService for AgentService { .map_err(|e| ttrpc_error(ttrpc::Code::INTERNAL, e.to_string())) } - async fn list_processes( - &self, - _ctx: &TtrpcContext, - req: protocols::agent::ListProcessesRequest, - ) -> ttrpc::Result { - let cid = req.container_id.clone(); - let format = req.format.clone(); - let mut args = req.args.into_vec(); - let mut resp = ListProcessesResponse::new(); - - let s = Arc::clone(&self.sandbox); - let mut sandbox = s.lock().await; - - let ctr = sandbox.get_container(&cid).ok_or_else(|| { - ttrpc_error( - ttrpc::Code::INVALID_ARGUMENT, - "invalid container id".to_string(), - ) - })?; - - let pids = ctr.processes().unwrap(); - - match format.as_str() { - "table" => {} - "json" => { - resp.process_list = serde_json::to_vec(&pids).unwrap(); - return Ok(resp); - } - _ => { - return Err(ttrpc_error( - ttrpc::Code::INVALID_ARGUMENT, - "invalid format!".to_string(), - )); - } - } - - // format "table" - if args.is_empty() { - // default argument - args = vec!["-ef".to_string()]; - } - - let output = tokio::process::Command::new("ps") - .args(args.as_slice()) - .stdout(Stdio::piped()) - .output() - .await - .expect("ps failed"); - - let out: String = String::from_utf8(output.stdout).unwrap(); - let mut lines: Vec = out.split('\n').map(|v| v.to_string()).collect(); - - let pid_index = lines[0] - .split_whitespace() - .position(|v| v == "PID") - .unwrap(); - - let mut result = String::new(); - result.push_str(lines[0].as_str()); - - lines.remove(0); - for line in &lines { - if line.trim().is_empty() { - continue; - } - - let fields: Vec = line.split_whitespace().map(|v| v.to_string()).collect(); - - if fields.len() < pid_index + 1 { - warn!(sl!(), "corrupted output?"); - continue; - } - let pid = fields[pid_index].trim().parse::().unwrap(); - - for p in &pids { - if pid == *p { - result.push_str(line.as_str()); - } - } - } - - resp.process_list = Vec::from(result); - Ok(resp) - } - async fn update_container( &self, _ctx: &TtrpcContext, diff --git a/src/runtime/virtcontainers/agent.go b/src/runtime/virtcontainers/agent.go index 1f0b8577a3..b8576c35d5 100644 --- a/src/runtime/virtcontainers/agent.go +++ b/src/runtime/virtcontainers/agent.go @@ -132,9 +132,6 @@ type agent interface { // readProcessStderr will tell the agent to read a process stderr readProcessStderr(ctx context.Context, c *Container, processID string, data []byte) (int, error) - // processListContainer will list the processes running inside the container - processListContainer(ctx context.Context, sandbox *Sandbox, c Container, options ProcessListOptions) (ProcessList, error) - // updateContainer will update the resources of a running container updateContainer(ctx context.Context, sandbox *Sandbox, c Container, resources specs.LinuxResources) error diff --git a/src/runtime/virtcontainers/container.go b/src/runtime/virtcontainers/container.go index e088a1b772..dace7d7255 100644 --- a/src/runtime/virtcontainers/container.go +++ b/src/runtime/virtcontainers/container.go @@ -1125,18 +1125,6 @@ func (c *Container) ioStream(processID string) (io.WriteCloser, io.Reader, io.Re return stream.stdin(), stream.stdout(), stream.stderr(), nil } -func (c *Container) processList(ctx context.Context, options ProcessListOptions) (ProcessList, error) { - if err := c.checkSandboxRunning("ps"); err != nil { - return nil, err - } - - if c.state.State != types.StateRunning { - return nil, fmt.Errorf("Container not running, impossible to list processes") - } - - return c.sandbox.agent.processListContainer(ctx, c.sandbox, *c, options) -} - func (c *Container) stats(ctx context.Context) (*ContainerStats, error) { if err := c.checkSandboxRunning("stats"); err != nil { return nil, err diff --git a/src/runtime/virtcontainers/documentation/api/1.0/api.md b/src/runtime/virtcontainers/documentation/api/1.0/api.md index 4e477b3654..77e12353e5 100644 --- a/src/runtime/virtcontainers/documentation/api/1.0/api.md +++ b/src/runtime/virtcontainers/documentation/api/1.0/api.md @@ -582,7 +582,6 @@ type VCSandbox interface { ResumeContainer(containerID string) error EnterContainer(containerID string, cmd types.Cmd) (VCContainer, *Process, error) UpdateContainer(containerID string, resources specs.LinuxResources) error - ProcessListContainer(containerID string, options ProcessListOptions) (ProcessList, error) WaitProcess(containerID, processID string) (int32, error) SignalProcess(containerID, processID string, signal syscall.Signal, all bool) error WinsizeProcess(containerID, processID string, height, width uint32) error @@ -916,7 +915,6 @@ type VCContainer interface { * [`EnterContainer`](#entercontainer) * [`StatusContainer`](#statuscontainer) * [`KillContainer`](#killcontainer) -* [`ProcessListContainer`](#processlistcontainer) * [`StatsContainer`](#statscontainer) * [`PauseContainer`](#pausecontainer) * [`ResumeContainer`](#resumecontainer) @@ -977,13 +975,6 @@ func StatusContainer(sandboxID, containerID string) (ContainerStatus, error) func KillContainer(sandboxID, containerID string, signal syscall.Signal, all bool) error ``` -#### `ProcessListContainer` -```Go -// ProcessListContainer is the virtcontainers entry point to list -// processes running inside a container -func ProcessListContainer(sandboxID, containerID string, options ProcessListOptions) (ProcessList, error) -``` - #### `StatsContainer` ```Go // StatsContainer return the stats of a running container diff --git a/src/runtime/virtcontainers/interfaces.go b/src/runtime/virtcontainers/interfaces.go index 2f2083c751..85c9d9fe61 100644 --- a/src/runtime/virtcontainers/interfaces.go +++ b/src/runtime/virtcontainers/interfaces.go @@ -57,7 +57,6 @@ type VCSandbox interface { ResumeContainer(ctx context.Context, containerID string) error EnterContainer(ctx context.Context, containerID string, cmd types.Cmd) (VCContainer, *Process, error) UpdateContainer(ctx context.Context, containerID string, resources specs.LinuxResources) error - ProcessListContainer(ctx context.Context, containerID string, options ProcessListOptions) (ProcessList, error) WaitProcess(ctx context.Context, containerID, processID string) (int32, error) SignalProcess(ctx context.Context, containerID, processID string, signal syscall.Signal, all bool) error WinsizeProcess(ctx context.Context, containerID, processID string, height, width uint32) error diff --git a/src/runtime/virtcontainers/kata_agent.go b/src/runtime/virtcontainers/kata_agent.go index 2a0a19df18..a02cb85f15 100644 --- a/src/runtime/virtcontainers/kata_agent.go +++ b/src/runtime/virtcontainers/kata_agent.go @@ -120,7 +120,6 @@ const ( grpcListRoutesRequest = "grpc.ListRoutesRequest" grpcAddARPNeighborsRequest = "grpc.AddARPNeighborsRequest" grpcOnlineCPUMemRequest = "grpc.OnlineCPUMemRequest" - grpcListProcessesRequest = "grpc.ListProcessesRequest" grpcUpdateContainerRequest = "grpc.UpdateContainerRequest" grpcWaitProcessRequest = "grpc.WaitProcessRequest" grpcTtyWinResizeRequest = "grpc.TtyWinResizeRequest" @@ -1662,26 +1661,6 @@ func (k *kataAgent) winsizeProcess(ctx context.Context, c *Container, processID return err } -func (k *kataAgent) processListContainer(ctx context.Context, sandbox *Sandbox, c Container, options ProcessListOptions) (ProcessList, error) { - req := &grpc.ListProcessesRequest{ - ContainerId: c.id, - Format: options.Format, - Args: options.Args, - } - - resp, err := k.sendReq(ctx, req) - if err != nil { - return nil, err - } - - processList, ok := resp.(*grpc.ListProcessesResponse) - if !ok { - return nil, fmt.Errorf("Bad list processes response") - } - - return processList.ProcessList, nil -} - func (k *kataAgent) updateContainer(ctx context.Context, sandbox *Sandbox, c Container, resources specs.LinuxResources) error { grpcResources, err := grpc.ResourcesOCItoGRPC(&resources) if err != nil { @@ -1939,9 +1918,6 @@ func (k *kataAgent) installReqFunc(c *kataclient.AgentClient) { k.reqHandlers[grpcOnlineCPUMemRequest] = func(ctx context.Context, req interface{}) (interface{}, error) { return k.client.AgentServiceClient.OnlineCPUMem(ctx, req.(*grpc.OnlineCPUMemRequest)) } - k.reqHandlers[grpcListProcessesRequest] = func(ctx context.Context, req interface{}) (interface{}, error) { - return k.client.AgentServiceClient.ListProcesses(ctx, req.(*grpc.ListProcessesRequest)) - } k.reqHandlers[grpcUpdateContainerRequest] = func(ctx context.Context, req interface{}) (interface{}, error) { return k.client.AgentServiceClient.UpdateContainer(ctx, req.(*grpc.UpdateContainerRequest)) } diff --git a/src/runtime/virtcontainers/kata_agent_test.go b/src/runtime/virtcontainers/kata_agent_test.go index 4f22ed26d0..b216d5aef6 100644 --- a/src/runtime/virtcontainers/kata_agent_test.go +++ b/src/runtime/virtcontainers/kata_agent_test.go @@ -143,9 +143,6 @@ func TestKataAgentSendReq(t *testing.T) { err = k.winsizeProcess(ctx, container, execid, 100, 200) assert.Nil(err) - _, err = k.processListContainer(ctx, sandbox, Container{}, ProcessListOptions{}) - assert.Nil(err) - err = k.updateContainer(ctx, sandbox, Container{}, specs.LinuxResources{}) assert.Nil(err) diff --git a/src/runtime/virtcontainers/mock_agent.go b/src/runtime/virtcontainers/mock_agent.go index c1aa920386..f12093b389 100644 --- a/src/runtime/virtcontainers/mock_agent.go +++ b/src/runtime/virtcontainers/mock_agent.go @@ -86,11 +86,6 @@ func (n *mockAgent) signalProcess(ctx context.Context, c *Container, processID s return nil } -// processListContainer is the Noop agent Container ps implementation. It does nothing. -func (n *mockAgent) processListContainer(ctx context.Context, sandbox *Sandbox, c Container, options ProcessListOptions) (ProcessList, error) { - return nil, nil -} - // updateContainer is the Noop agent Container update implementation. It does nothing. func (n *mockAgent) updateContainer(ctx context.Context, sandbox *Sandbox, c Container, resources specs.LinuxResources) error { return nil diff --git a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go index b277d40d9d..3ee3bff7aa 100644 --- a/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go +++ b/src/runtime/virtcontainers/pkg/agent/protocols/grpc/agent.pb.go @@ -328,88 +328,6 @@ func (m *WaitProcessResponse) XXX_DiscardUnknown() { var xxx_messageInfo_WaitProcessResponse proto.InternalMessageInfo -// ListProcessesRequest contains the options used to list running processes inside the container -type ListProcessesRequest struct { - ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - Format string `protobuf:"bytes,2,opt,name=format,proto3" json:"format,omitempty"` - Args []string `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListProcessesRequest) Reset() { *m = ListProcessesRequest{} } -func (*ListProcessesRequest) ProtoMessage() {} -func (*ListProcessesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{7} -} -func (m *ListProcessesRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListProcessesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListProcessesRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListProcessesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListProcessesRequest.Merge(m, src) -} -func (m *ListProcessesRequest) XXX_Size() int { - return m.Size() -} -func (m *ListProcessesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListProcessesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListProcessesRequest proto.InternalMessageInfo - -// ListProcessesResponse represents the list of running processes inside the container -type ListProcessesResponse struct { - ProcessList []byte `protobuf:"bytes,1,opt,name=process_list,json=processList,proto3" json:"process_list,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *ListProcessesResponse) Reset() { *m = ListProcessesResponse{} } -func (*ListProcessesResponse) ProtoMessage() {} -func (*ListProcessesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{8} -} -func (m *ListProcessesResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *ListProcessesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_ListProcessesResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *ListProcessesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListProcessesResponse.Merge(m, src) -} -func (m *ListProcessesResponse) XXX_Size() int { - return m.Size() -} -func (m *ListProcessesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListProcessesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListProcessesResponse proto.InternalMessageInfo - type UpdateContainerRequest struct { ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` Resources *LinuxResources `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"` @@ -421,7 +339,7 @@ type UpdateContainerRequest struct { func (m *UpdateContainerRequest) Reset() { *m = UpdateContainerRequest{} } func (*UpdateContainerRequest) ProtoMessage() {} func (*UpdateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{9} + return fileDescriptor_c1460208c38ccf5e, []int{7} } func (m *UpdateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -460,7 +378,7 @@ type StatsContainerRequest struct { func (m *StatsContainerRequest) Reset() { *m = StatsContainerRequest{} } func (*StatsContainerRequest) ProtoMessage() {} func (*StatsContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{10} + return fileDescriptor_c1460208c38ccf5e, []int{8} } func (m *StatsContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -499,7 +417,7 @@ type PauseContainerRequest struct { func (m *PauseContainerRequest) Reset() { *m = PauseContainerRequest{} } func (*PauseContainerRequest) ProtoMessage() {} func (*PauseContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{11} + return fileDescriptor_c1460208c38ccf5e, []int{9} } func (m *PauseContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -538,7 +456,7 @@ type ResumeContainerRequest struct { func (m *ResumeContainerRequest) Reset() { *m = ResumeContainerRequest{} } func (*ResumeContainerRequest) ProtoMessage() {} func (*ResumeContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{12} + return fileDescriptor_c1460208c38ccf5e, []int{10} } func (m *ResumeContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -580,7 +498,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{13} + return fileDescriptor_c1460208c38ccf5e, []int{11} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -621,7 +539,7 @@ type ThrottlingData struct { func (m *ThrottlingData) Reset() { *m = ThrottlingData{} } func (*ThrottlingData) ProtoMessage() {} func (*ThrottlingData) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{14} + return fileDescriptor_c1460208c38ccf5e, []int{12} } func (m *ThrottlingData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -661,7 +579,7 @@ type CpuStats struct { func (m *CpuStats) Reset() { *m = CpuStats{} } func (*CpuStats) ProtoMessage() {} func (*CpuStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{15} + return fileDescriptor_c1460208c38ccf5e, []int{13} } func (m *CpuStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -701,7 +619,7 @@ type PidsStats struct { func (m *PidsStats) Reset() { *m = PidsStats{} } func (*PidsStats) ProtoMessage() {} func (*PidsStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{16} + return fileDescriptor_c1460208c38ccf5e, []int{14} } func (m *PidsStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -743,7 +661,7 @@ type MemoryData struct { func (m *MemoryData) Reset() { *m = MemoryData{} } func (*MemoryData) ProtoMessage() {} func (*MemoryData) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{17} + return fileDescriptor_c1460208c38ccf5e, []int{15} } func (m *MemoryData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -787,7 +705,7 @@ type MemoryStats struct { func (m *MemoryStats) Reset() { *m = MemoryStats{} } func (*MemoryStats) ProtoMessage() {} func (*MemoryStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{18} + return fileDescriptor_c1460208c38ccf5e, []int{16} } func (m *MemoryStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -829,7 +747,7 @@ type BlkioStatsEntry struct { func (m *BlkioStatsEntry) Reset() { *m = BlkioStatsEntry{} } func (*BlkioStatsEntry) ProtoMessage() {} func (*BlkioStatsEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{19} + return fileDescriptor_c1460208c38ccf5e, []int{17} } func (m *BlkioStatsEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -875,7 +793,7 @@ type BlkioStats struct { func (m *BlkioStats) Reset() { *m = BlkioStats{} } func (*BlkioStats) ProtoMessage() {} func (*BlkioStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{20} + return fileDescriptor_c1460208c38ccf5e, []int{18} } func (m *BlkioStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -916,7 +834,7 @@ type HugetlbStats struct { func (m *HugetlbStats) Reset() { *m = HugetlbStats{} } func (*HugetlbStats) ProtoMessage() {} func (*HugetlbStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{21} + return fileDescriptor_c1460208c38ccf5e, []int{19} } func (m *HugetlbStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -959,7 +877,7 @@ type CgroupStats struct { func (m *CgroupStats) Reset() { *m = CgroupStats{} } func (*CgroupStats) ProtoMessage() {} func (*CgroupStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{22} + return fileDescriptor_c1460208c38ccf5e, []int{20} } func (m *CgroupStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1006,7 +924,7 @@ type NetworkStats struct { func (m *NetworkStats) Reset() { *m = NetworkStats{} } func (*NetworkStats) ProtoMessage() {} func (*NetworkStats) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{23} + return fileDescriptor_c1460208c38ccf5e, []int{21} } func (m *NetworkStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1046,7 +964,7 @@ type StatsContainerResponse struct { func (m *StatsContainerResponse) Reset() { *m = StatsContainerResponse{} } func (*StatsContainerResponse) ProtoMessage() {} func (*StatsContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{24} + return fileDescriptor_c1460208c38ccf5e, []int{22} } func (m *StatsContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1087,7 +1005,7 @@ type WriteStreamRequest struct { func (m *WriteStreamRequest) Reset() { *m = WriteStreamRequest{} } func (*WriteStreamRequest) ProtoMessage() {} func (*WriteStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{25} + return fileDescriptor_c1460208c38ccf5e, []int{23} } func (m *WriteStreamRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1126,7 +1044,7 @@ type WriteStreamResponse struct { func (m *WriteStreamResponse) Reset() { *m = WriteStreamResponse{} } func (*WriteStreamResponse) ProtoMessage() {} func (*WriteStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{26} + return fileDescriptor_c1460208c38ccf5e, []int{24} } func (m *WriteStreamResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1167,7 +1085,7 @@ type ReadStreamRequest struct { func (m *ReadStreamRequest) Reset() { *m = ReadStreamRequest{} } func (*ReadStreamRequest) ProtoMessage() {} func (*ReadStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{27} + return fileDescriptor_c1460208c38ccf5e, []int{25} } func (m *ReadStreamRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1206,7 +1124,7 @@ type ReadStreamResponse struct { func (m *ReadStreamResponse) Reset() { *m = ReadStreamResponse{} } func (*ReadStreamResponse) ProtoMessage() {} func (*ReadStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{28} + return fileDescriptor_c1460208c38ccf5e, []int{26} } func (m *ReadStreamResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1246,7 +1164,7 @@ type CloseStdinRequest struct { func (m *CloseStdinRequest) Reset() { *m = CloseStdinRequest{} } func (*CloseStdinRequest) ProtoMessage() {} func (*CloseStdinRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{29} + return fileDescriptor_c1460208c38ccf5e, []int{27} } func (m *CloseStdinRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1288,7 +1206,7 @@ type TtyWinResizeRequest struct { func (m *TtyWinResizeRequest) Reset() { *m = TtyWinResizeRequest{} } func (*TtyWinResizeRequest) ProtoMessage() {} func (*TtyWinResizeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{30} + return fileDescriptor_c1460208c38ccf5e, []int{28} } func (m *TtyWinResizeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1331,7 +1249,7 @@ type KernelModule struct { func (m *KernelModule) Reset() { *m = KernelModule{} } func (*KernelModule) ProtoMessage() {} func (*KernelModule) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{31} + return fileDescriptor_c1460208c38ccf5e, []int{29} } func (m *KernelModule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1386,7 +1304,7 @@ type CreateSandboxRequest struct { func (m *CreateSandboxRequest) Reset() { *m = CreateSandboxRequest{} } func (*CreateSandboxRequest) ProtoMessage() {} func (*CreateSandboxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{32} + return fileDescriptor_c1460208c38ccf5e, []int{30} } func (m *CreateSandboxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1424,7 +1342,7 @@ type DestroySandboxRequest struct { func (m *DestroySandboxRequest) Reset() { *m = DestroySandboxRequest{} } func (*DestroySandboxRequest) ProtoMessage() {} func (*DestroySandboxRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{33} + return fileDescriptor_c1460208c38ccf5e, []int{31} } func (m *DestroySandboxRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1463,7 +1381,7 @@ type Interfaces struct { func (m *Interfaces) Reset() { *m = Interfaces{} } func (*Interfaces) ProtoMessage() {} func (*Interfaces) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{34} + return fileDescriptor_c1460208c38ccf5e, []int{32} } func (m *Interfaces) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1502,7 +1420,7 @@ type Routes struct { func (m *Routes) Reset() { *m = Routes{} } func (*Routes) ProtoMessage() {} func (*Routes) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{35} + return fileDescriptor_c1460208c38ccf5e, []int{33} } func (m *Routes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1541,7 +1459,7 @@ type UpdateInterfaceRequest struct { func (m *UpdateInterfaceRequest) Reset() { *m = UpdateInterfaceRequest{} } func (*UpdateInterfaceRequest) ProtoMessage() {} func (*UpdateInterfaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{36} + return fileDescriptor_c1460208c38ccf5e, []int{34} } func (m *UpdateInterfaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1580,7 +1498,7 @@ type UpdateRoutesRequest struct { func (m *UpdateRoutesRequest) Reset() { *m = UpdateRoutesRequest{} } func (*UpdateRoutesRequest) ProtoMessage() {} func (*UpdateRoutesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{37} + return fileDescriptor_c1460208c38ccf5e, []int{35} } func (m *UpdateRoutesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1618,7 +1536,7 @@ type ListInterfacesRequest struct { func (m *ListInterfacesRequest) Reset() { *m = ListInterfacesRequest{} } func (*ListInterfacesRequest) ProtoMessage() {} func (*ListInterfacesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{38} + return fileDescriptor_c1460208c38ccf5e, []int{36} } func (m *ListInterfacesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1656,7 +1574,7 @@ type ListRoutesRequest struct { func (m *ListRoutesRequest) Reset() { *m = ListRoutesRequest{} } func (*ListRoutesRequest) ProtoMessage() {} func (*ListRoutesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{39} + return fileDescriptor_c1460208c38ccf5e, []int{37} } func (m *ListRoutesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1695,7 +1613,7 @@ type ARPNeighbors struct { func (m *ARPNeighbors) Reset() { *m = ARPNeighbors{} } func (*ARPNeighbors) ProtoMessage() {} func (*ARPNeighbors) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{40} + return fileDescriptor_c1460208c38ccf5e, []int{38} } func (m *ARPNeighbors) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1734,7 +1652,7 @@ type AddARPNeighborsRequest struct { func (m *AddARPNeighborsRequest) Reset() { *m = AddARPNeighborsRequest{} } func (*AddARPNeighborsRequest) ProtoMessage() {} func (*AddARPNeighborsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{41} + return fileDescriptor_c1460208c38ccf5e, []int{39} } func (m *AddARPNeighborsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1780,7 +1698,7 @@ type OnlineCPUMemRequest struct { func (m *OnlineCPUMemRequest) Reset() { *m = OnlineCPUMemRequest{} } func (*OnlineCPUMemRequest) ProtoMessage() {} func (*OnlineCPUMemRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{42} + return fileDescriptor_c1460208c38ccf5e, []int{40} } func (m *OnlineCPUMemRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1820,7 +1738,7 @@ type ReseedRandomDevRequest struct { func (m *ReseedRandomDevRequest) Reset() { *m = ReseedRandomDevRequest{} } func (*ReseedRandomDevRequest) ProtoMessage() {} func (*ReseedRandomDevRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{43} + return fileDescriptor_c1460208c38ccf5e, []int{41} } func (m *ReseedRandomDevRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1870,7 +1788,7 @@ type AgentDetails struct { func (m *AgentDetails) Reset() { *m = AgentDetails{} } func (*AgentDetails) ProtoMessage() {} func (*AgentDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{44} + return fileDescriptor_c1460208c38ccf5e, []int{42} } func (m *AgentDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1916,7 +1834,7 @@ type GuestDetailsRequest struct { func (m *GuestDetailsRequest) Reset() { *m = GuestDetailsRequest{} } func (*GuestDetailsRequest) ProtoMessage() {} func (*GuestDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{45} + return fileDescriptor_c1460208c38ccf5e, []int{43} } func (m *GuestDetailsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1958,7 +1876,7 @@ type GuestDetailsResponse struct { func (m *GuestDetailsResponse) Reset() { *m = GuestDetailsResponse{} } func (*GuestDetailsResponse) ProtoMessage() {} func (*GuestDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{46} + return fileDescriptor_c1460208c38ccf5e, []int{44} } func (m *GuestDetailsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1999,7 +1917,7 @@ type MemHotplugByProbeRequest struct { func (m *MemHotplugByProbeRequest) Reset() { *m = MemHotplugByProbeRequest{} } func (*MemHotplugByProbeRequest) ProtoMessage() {} func (*MemHotplugByProbeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{47} + return fileDescriptor_c1460208c38ccf5e, []int{45} } func (m *MemHotplugByProbeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2041,7 +1959,7 @@ type SetGuestDateTimeRequest struct { func (m *SetGuestDateTimeRequest) Reset() { *m = SetGuestDateTimeRequest{} } func (*SetGuestDateTimeRequest) ProtoMessage() {} func (*SetGuestDateTimeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{48} + return fileDescriptor_c1460208c38ccf5e, []int{46} } func (m *SetGuestDateTimeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2106,7 +2024,7 @@ type Storage struct { func (m *Storage) Reset() { *m = Storage{} } func (*Storage) ProtoMessage() {} func (*Storage) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{49} + return fileDescriptor_c1460208c38ccf5e, []int{47} } func (m *Storage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2177,7 +2095,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{50} + return fileDescriptor_c1460208c38ccf5e, []int{48} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2218,7 +2136,7 @@ type StringUser struct { func (m *StringUser) Reset() { *m = StringUser{} } func (*StringUser) ProtoMessage() {} func (*StringUser) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{51} + return fileDescriptor_c1460208c38ccf5e, []int{49} } func (m *StringUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2275,7 +2193,7 @@ type CopyFileRequest struct { func (m *CopyFileRequest) Reset() { *m = CopyFileRequest{} } func (*CopyFileRequest) ProtoMessage() {} func (*CopyFileRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{52} + return fileDescriptor_c1460208c38ccf5e, []int{50} } func (m *CopyFileRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2313,7 +2231,7 @@ type StartTracingRequest struct { func (m *StartTracingRequest) Reset() { *m = StartTracingRequest{} } func (*StartTracingRequest) ProtoMessage() {} func (*StartTracingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{53} + return fileDescriptor_c1460208c38ccf5e, []int{51} } func (m *StartTracingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2351,7 +2269,7 @@ type StopTracingRequest struct { func (m *StopTracingRequest) Reset() { *m = StopTracingRequest{} } func (*StopTracingRequest) ProtoMessage() {} func (*StopTracingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{54} + return fileDescriptor_c1460208c38ccf5e, []int{52} } func (m *StopTracingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2389,7 +2307,7 @@ type GetOOMEventRequest struct { func (m *GetOOMEventRequest) Reset() { *m = GetOOMEventRequest{} } func (*GetOOMEventRequest) ProtoMessage() {} func (*GetOOMEventRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{55} + return fileDescriptor_c1460208c38ccf5e, []int{53} } func (m *GetOOMEventRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2428,7 +2346,7 @@ type OOMEvent struct { func (m *OOMEvent) Reset() { *m = OOMEvent{} } func (*OOMEvent) ProtoMessage() {} func (*OOMEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{56} + return fileDescriptor_c1460208c38ccf5e, []int{54} } func (m *OOMEvent) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2466,7 +2384,7 @@ type GetMetricsRequest struct { func (m *GetMetricsRequest) Reset() { *m = GetMetricsRequest{} } func (*GetMetricsRequest) ProtoMessage() {} func (*GetMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{57} + return fileDescriptor_c1460208c38ccf5e, []int{55} } func (m *GetMetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2505,7 +2423,7 @@ type Metrics struct { func (m *Metrics) Reset() { *m = Metrics{} } func (*Metrics) ProtoMessage() {} func (*Metrics) Descriptor() ([]byte, []int) { - return fileDescriptor_c1460208c38ccf5e, []int{58} + return fileDescriptor_c1460208c38ccf5e, []int{56} } func (m *Metrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2542,8 +2460,6 @@ func init() { proto.RegisterType((*SignalProcessRequest)(nil), "grpc.SignalProcessRequest") proto.RegisterType((*WaitProcessRequest)(nil), "grpc.WaitProcessRequest") proto.RegisterType((*WaitProcessResponse)(nil), "grpc.WaitProcessResponse") - proto.RegisterType((*ListProcessesRequest)(nil), "grpc.ListProcessesRequest") - proto.RegisterType((*ListProcessesResponse)(nil), "grpc.ListProcessesResponse") proto.RegisterType((*UpdateContainerRequest)(nil), "grpc.UpdateContainerRequest") proto.RegisterType((*StatsContainerRequest)(nil), "grpc.StatsContainerRequest") proto.RegisterType((*PauseContainerRequest)(nil), "grpc.PauseContainerRequest") @@ -2603,198 +2519,193 @@ func init() { } var fileDescriptor_c1460208c38ccf5e = []byte{ - // 3046 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3a, 0x4b, 0x6f, 0x1c, 0xc7, - 0xd1, 0xde, 0x07, 0xc9, 0xdd, 0xda, 0x17, 0x77, 0x48, 0x51, 0xab, 0x95, 0xcd, 0x4f, 0x1e, 0xd9, - 0x32, 0xfd, 0xf9, 0xf3, 0xca, 0x96, 0x8d, 0x4f, 0x7e, 0xc0, 0x9f, 0x20, 0x52, 0x34, 0x49, 0xdb, - 0xb4, 0xe8, 0xa1, 0x04, 0x7f, 0x48, 0x90, 0x0c, 0x86, 0x33, 0xad, 0xdd, 0x36, 0x77, 0xa6, 0xc7, - 0xdd, 0x3d, 0x14, 0xd7, 0x01, 0x82, 0x9c, 0x92, 0x5b, 0x8e, 0xb9, 0xe5, 0x0f, 0x04, 0xb9, 0xe5, - 0x98, 0x6b, 0x0e, 0x46, 0x72, 0xc9, 0x31, 0xa7, 0x20, 0xd6, 0x4f, 0xc8, 0x2f, 0x08, 0xfa, 0x35, - 0x8f, 0x7d, 0xd0, 0xb1, 0x40, 0x20, 0x97, 0xc5, 0x54, 0x75, 0x75, 0xbd, 0xba, 0xab, 0xba, 0xaa, - 0x7b, 0xe1, 0x8b, 0x21, 0xe6, 0xa3, 0xe4, 0x64, 0xe0, 0x93, 0xf0, 0xf6, 0xa9, 0xc7, 0xbd, 0x37, - 0x7d, 0x12, 0x71, 0x0f, 0x47, 0x88, 0xb2, 0x19, 0x98, 0x51, 0xff, 0xb6, 0x37, 0x44, 0x11, 0xbf, - 0x1d, 0x53, 0xc2, 0x89, 0x4f, 0xc6, 0x4c, 0x7d, 0x31, 0x85, 0x1e, 0x48, 0xc0, 0xaa, 0x0e, 0x69, - 0xec, 0xf7, 0xeb, 0xc4, 0xc7, 0x0a, 0xd1, 0x6f, 0xf0, 0x49, 0x8c, 0x98, 0x06, 0xae, 0x0f, 0x09, - 0x19, 0x8e, 0x91, 0x9a, 0x78, 0x92, 0x3c, 0xb9, 0x8d, 0xc2, 0x98, 0x4f, 0xd4, 0xa0, 0xfd, 0xdb, - 0x32, 0x6c, 0xec, 0x50, 0xe4, 0x71, 0xb4, 0x63, 0xc4, 0x3a, 0xe8, 0xeb, 0x04, 0x31, 0x6e, 0xbd, - 0x0c, 0xcd, 0x54, 0x15, 0x17, 0x07, 0xbd, 0xd2, 0x8d, 0xd2, 0x56, 0xdd, 0x69, 0xa4, 0xb8, 0x83, - 0xc0, 0xba, 0x0a, 0x2b, 0xe8, 0x1c, 0xf9, 0x62, 0xb4, 0x2c, 0x47, 0x97, 0x05, 0x78, 0x10, 0x58, - 0x6f, 0x43, 0x83, 0x71, 0x8a, 0xa3, 0xa1, 0x9b, 0x30, 0x44, 0x7b, 0x95, 0x1b, 0xa5, 0xad, 0xc6, - 0x9d, 0xd5, 0x81, 0xd0, 0x73, 0x70, 0x2c, 0x07, 0x1e, 0x33, 0x44, 0x1d, 0x60, 0xe9, 0xb7, 0x75, - 0x0b, 0x56, 0x02, 0x74, 0x86, 0x7d, 0xc4, 0x7a, 0xd5, 0x1b, 0x95, 0xad, 0xc6, 0x9d, 0xa6, 0x22, - 0x7f, 0x20, 0x91, 0x8e, 0x19, 0xb4, 0x5e, 0x87, 0x1a, 0xe3, 0x84, 0x7a, 0x43, 0xc4, 0x7a, 0x4b, - 0x92, 0xb0, 0x65, 0xf8, 0x4a, 0xac, 0x93, 0x0e, 0x5b, 0x2f, 0x42, 0xe5, 0xe1, 0xce, 0x41, 0x6f, - 0x59, 0x4a, 0x07, 0x4d, 0x15, 0x23, 0xdf, 0x11, 0x68, 0xeb, 0x26, 0xb4, 0x98, 0x17, 0x05, 0x27, - 0xe4, 0xdc, 0x8d, 0x71, 0x10, 0xb1, 0xde, 0xca, 0x8d, 0xd2, 0x56, 0xcd, 0x69, 0x6a, 0xe4, 0x91, - 0xc0, 0xd9, 0x1f, 0xc0, 0x95, 0x63, 0xee, 0x51, 0xfe, 0x1c, 0xde, 0xb1, 0x1f, 0xc3, 0x86, 0x83, - 0x42, 0x72, 0xf6, 0x5c, 0xae, 0xed, 0xc1, 0x0a, 0xc7, 0x21, 0x22, 0x09, 0x97, 0xae, 0x6d, 0x39, - 0x06, 0xb4, 0x7f, 0x5f, 0x02, 0x6b, 0xf7, 0x1c, 0xf9, 0x47, 0x94, 0xf8, 0x88, 0xb1, 0xff, 0xd0, - 0x72, 0xbd, 0x06, 0x2b, 0xb1, 0x52, 0xa0, 0x57, 0x95, 0xe4, 0x7a, 0x15, 0x8c, 0x56, 0x66, 0xd4, - 0xfe, 0x0a, 0xd6, 0x8f, 0xf1, 0x30, 0xf2, 0xc6, 0x97, 0xa8, 0xef, 0x06, 0x2c, 0x33, 0xc9, 0x53, - 0xaa, 0xda, 0x72, 0x34, 0x64, 0x1f, 0x81, 0xf5, 0xa5, 0x87, 0xf9, 0xe5, 0x49, 0xb2, 0xdf, 0x84, - 0xb5, 0x02, 0x47, 0x16, 0x93, 0x88, 0x21, 0xa9, 0x00, 0xf7, 0x78, 0xc2, 0x24, 0xb3, 0x25, 0x47, - 0x43, 0x36, 0x82, 0xf5, 0xcf, 0x30, 0x33, 0xe4, 0xe8, 0x87, 0xa8, 0xb0, 0x01, 0xcb, 0x4f, 0x08, - 0x0d, 0x3d, 0x6e, 0x34, 0x50, 0x90, 0x65, 0x41, 0xd5, 0xa3, 0x43, 0xd6, 0xab, 0xdc, 0xa8, 0x6c, - 0xd5, 0x1d, 0xf9, 0x2d, 0x76, 0xe5, 0x94, 0x18, 0xad, 0xd7, 0xcb, 0xd0, 0xd4, 0x7e, 0x77, 0xc7, - 0x98, 0x71, 0x29, 0xa7, 0xe9, 0x34, 0x34, 0x4e, 0xcc, 0xb1, 0x09, 0x6c, 0x3c, 0x8e, 0x83, 0xe7, - 0x0c, 0xf8, 0x3b, 0x50, 0xa7, 0x88, 0x91, 0x84, 0x8a, 0x30, 0x2d, 0xcb, 0x75, 0x5f, 0x57, 0xeb, - 0xfe, 0x19, 0x8e, 0x92, 0x73, 0xc7, 0x8c, 0x39, 0x19, 0x99, 0x0e, 0x21, 0xce, 0x9e, 0x27, 0x84, - 0x3e, 0x80, 0x2b, 0x47, 0x5e, 0xc2, 0x9e, 0x47, 0x57, 0xfb, 0x43, 0x11, 0x7e, 0x2c, 0x09, 0x9f, - 0x6b, 0xf2, 0xef, 0x4a, 0x50, 0xdb, 0x89, 0x93, 0xc7, 0xcc, 0x1b, 0x22, 0xeb, 0xbf, 0xa0, 0xc1, - 0x09, 0xf7, 0xc6, 0x6e, 0x22, 0x40, 0x49, 0x5e, 0x75, 0x40, 0xa2, 0x14, 0x81, 0x70, 0x3b, 0xa2, - 0x7e, 0x9c, 0x68, 0x8a, 0xf2, 0x8d, 0xca, 0x56, 0xd5, 0x69, 0x28, 0x9c, 0x22, 0x19, 0xc0, 0x9a, - 0x1c, 0x73, 0x71, 0xe4, 0x9e, 0x22, 0x1a, 0xa1, 0x71, 0x48, 0x02, 0x24, 0xf7, 0x6f, 0xd5, 0xe9, - 0xca, 0xa1, 0x83, 0xe8, 0xd3, 0x74, 0xc0, 0xfa, 0x6f, 0xe8, 0xa6, 0xf4, 0x22, 0x28, 0x25, 0x75, - 0x55, 0x52, 0x77, 0x34, 0xf5, 0x63, 0x8d, 0xb6, 0x7f, 0x0e, 0xed, 0x47, 0x23, 0x4a, 0x38, 0x1f, - 0xe3, 0x68, 0xf8, 0xc0, 0xe3, 0x9e, 0xc8, 0x1e, 0x31, 0xa2, 0x98, 0x04, 0x4c, 0x6b, 0x6b, 0x40, - 0xeb, 0x0d, 0xe8, 0x72, 0x45, 0x8b, 0x02, 0xd7, 0xd0, 0x94, 0x25, 0xcd, 0x6a, 0x3a, 0x70, 0xa4, - 0x89, 0x5f, 0x85, 0x76, 0x46, 0x2c, 0xf2, 0x8f, 0xd6, 0xb7, 0x95, 0x62, 0x1f, 0xe1, 0x10, 0xd9, - 0x67, 0xd2, 0x57, 0x72, 0x91, 0xad, 0x37, 0xa0, 0x9e, 0xf9, 0xa1, 0x24, 0x77, 0x48, 0x5b, 0xed, - 0x10, 0xe3, 0x4e, 0xa7, 0x96, 0x3a, 0xe5, 0x23, 0xe8, 0xf0, 0x54, 0x71, 0x37, 0xf0, 0xb8, 0x57, - 0xdc, 0x54, 0x45, 0xab, 0x9c, 0x36, 0x2f, 0xc0, 0xf6, 0x87, 0x50, 0x3f, 0xc2, 0x01, 0x53, 0x82, - 0x7b, 0xb0, 0xe2, 0x27, 0x94, 0xa2, 0x88, 0x1b, 0x93, 0x35, 0x68, 0xad, 0xc3, 0xd2, 0x18, 0x87, - 0x98, 0x6b, 0x33, 0x15, 0x60, 0x13, 0x80, 0x43, 0x14, 0x12, 0x3a, 0x91, 0x0e, 0x5b, 0x87, 0xa5, - 0xfc, 0xe2, 0x2a, 0xc0, 0xba, 0x0e, 0xf5, 0xd0, 0x3b, 0x4f, 0x17, 0x55, 0x8c, 0xd4, 0x42, 0xef, - 0x5c, 0x29, 0xdf, 0x83, 0x95, 0x27, 0x1e, 0x1e, 0xfb, 0x11, 0xd7, 0x5e, 0x31, 0x60, 0x26, 0xb0, - 0x9a, 0x17, 0xf8, 0xa7, 0x32, 0x34, 0x94, 0x44, 0xa5, 0xf0, 0x3a, 0x2c, 0xf9, 0x9e, 0x3f, 0x4a, - 0x45, 0x4a, 0xc0, 0xba, 0x65, 0x14, 0x29, 0xe7, 0x93, 0x70, 0xa6, 0xa9, 0x51, 0xed, 0x36, 0x00, - 0x7b, 0xea, 0xc5, 0x5a, 0xb7, 0xca, 0x02, 0xe2, 0xba, 0xa0, 0x51, 0xea, 0xbe, 0x03, 0x4d, 0xb5, - 0xef, 0xf4, 0x94, 0xea, 0x82, 0x29, 0x0d, 0x45, 0xa5, 0x26, 0xdd, 0x84, 0x56, 0xc2, 0x90, 0x3b, - 0xc2, 0x88, 0x7a, 0xd4, 0x1f, 0x4d, 0x7a, 0x4b, 0xea, 0x8c, 0x4c, 0x18, 0xda, 0x37, 0x38, 0xeb, - 0x0e, 0x2c, 0x89, 0xf4, 0xc7, 0x7a, 0xcb, 0xf2, 0x38, 0x7e, 0x31, 0xcf, 0x52, 0x9a, 0x3a, 0x90, - 0xbf, 0xbb, 0x11, 0xa7, 0x13, 0x47, 0x91, 0xf6, 0xdf, 0x03, 0xc8, 0x90, 0xd6, 0x2a, 0x54, 0x4e, - 0xd1, 0x44, 0xc7, 0xa1, 0xf8, 0x14, 0xce, 0x39, 0xf3, 0xc6, 0x89, 0xf1, 0xba, 0x02, 0x3e, 0x28, - 0xbf, 0x57, 0xb2, 0x7d, 0xe8, 0x6c, 0x8f, 0x4f, 0x31, 0xc9, 0x4d, 0x5f, 0x87, 0xa5, 0xd0, 0xfb, - 0x8a, 0x50, 0xe3, 0x49, 0x09, 0x48, 0x2c, 0x8e, 0x08, 0x35, 0x2c, 0x24, 0x60, 0xb5, 0xa1, 0x4c, - 0x62, 0xe9, 0xaf, 0xba, 0x53, 0x26, 0x71, 0x26, 0xa8, 0x9a, 0x13, 0x64, 0xff, 0xbd, 0x0a, 0x90, - 0x49, 0xb1, 0x1c, 0xe8, 0x63, 0xe2, 0x32, 0x44, 0x45, 0x09, 0xe2, 0x9e, 0x4c, 0x38, 0x62, 0x2e, - 0x45, 0x7e, 0x42, 0x19, 0x3e, 0x13, 0xeb, 0x27, 0xcc, 0xbe, 0xa2, 0xcc, 0x9e, 0xd2, 0xcd, 0xb9, - 0x8a, 0xc9, 0xb1, 0x9a, 0xb7, 0x2d, 0xa6, 0x39, 0x66, 0x96, 0x75, 0x00, 0x57, 0x32, 0x9e, 0x41, - 0x8e, 0x5d, 0xf9, 0x22, 0x76, 0x6b, 0x29, 0xbb, 0x20, 0x63, 0xb5, 0x0b, 0x6b, 0x98, 0xb8, 0x5f, - 0x27, 0x28, 0x29, 0x30, 0xaa, 0x5c, 0xc4, 0xa8, 0x8b, 0xc9, 0x17, 0x72, 0x42, 0xc6, 0xe6, 0x08, - 0xae, 0xe5, 0xac, 0x14, 0xe1, 0x9e, 0x63, 0x56, 0xbd, 0x88, 0xd9, 0x46, 0xaa, 0x95, 0xc8, 0x07, - 0x19, 0xc7, 0x4f, 0x60, 0x03, 0x13, 0xf7, 0xa9, 0x87, 0xf9, 0x34, 0xbb, 0xa5, 0xef, 0x31, 0x52, - 0x1c, 0xba, 0x45, 0x5e, 0xca, 0xc8, 0x10, 0xd1, 0x61, 0xc1, 0xc8, 0xe5, 0xef, 0x31, 0xf2, 0x50, - 0x4e, 0xc8, 0xd8, 0xdc, 0x87, 0x2e, 0x26, 0xd3, 0xda, 0xac, 0x5c, 0xc4, 0xa4, 0x83, 0x49, 0x51, - 0x93, 0x6d, 0xe8, 0x32, 0xe4, 0x73, 0x42, 0xf3, 0x9b, 0xa0, 0x76, 0x11, 0x8b, 0x55, 0x4d, 0x9f, - 0xf2, 0xb0, 0x7f, 0x0c, 0xcd, 0xfd, 0x64, 0x88, 0xf8, 0xf8, 0x24, 0x4d, 0x06, 0x97, 0x96, 0x7f, - 0xec, 0x7f, 0x96, 0xa1, 0xb1, 0x33, 0xa4, 0x24, 0x89, 0x0b, 0x39, 0x59, 0x05, 0xe9, 0x74, 0x4e, - 0x96, 0x24, 0x32, 0x27, 0x2b, 0xe2, 0x77, 0xa1, 0x19, 0xca, 0xd0, 0xd5, 0xf4, 0x2a, 0x0f, 0x75, - 0x67, 0x82, 0xda, 0x69, 0x84, 0xb9, 0x64, 0x36, 0x00, 0x88, 0x71, 0xc0, 0xf4, 0x1c, 0x95, 0x8e, - 0x3a, 0xba, 0x22, 0x34, 0x29, 0xda, 0xa9, 0xc7, 0x69, 0xb6, 0x7e, 0x1b, 0x1a, 0x27, 0xc2, 0x49, - 0x7a, 0x42, 0x21, 0x19, 0x65, 0xde, 0x73, 0xe0, 0x24, 0x0b, 0xc2, 0x7d, 0x68, 0x8d, 0x94, 0xcb, - 0xf4, 0x24, 0xb5, 0x87, 0x6e, 0x6a, 0x4b, 0x32, 0x7b, 0x07, 0x79, 0xcf, 0xaa, 0x05, 0x68, 0x8e, - 0x72, 0xa8, 0xfe, 0x31, 0x74, 0x67, 0x48, 0xe6, 0xe4, 0xa0, 0xad, 0x7c, 0x0e, 0x6a, 0xdc, 0xb1, - 0x94, 0xa0, 0xfc, 0xcc, 0x7c, 0x5e, 0xfa, 0x75, 0x19, 0x9a, 0x9f, 0x23, 0xfe, 0x94, 0xd0, 0x53, - 0xa5, 0xaf, 0x05, 0xd5, 0xc8, 0x0b, 0x91, 0xe6, 0x28, 0xbf, 0xad, 0x6b, 0x50, 0xa3, 0xe7, 0x2a, - 0x81, 0xe8, 0xf5, 0x5c, 0xa1, 0xe7, 0x32, 0x31, 0x58, 0x2f, 0x01, 0xd0, 0x73, 0x37, 0xf6, 0xfc, - 0x53, 0xa4, 0x3d, 0x58, 0x75, 0xea, 0xf4, 0xfc, 0x48, 0x21, 0xc4, 0x56, 0xa0, 0xe7, 0x2e, 0xa2, - 0x94, 0x50, 0xa6, 0x73, 0x55, 0x8d, 0x9e, 0xef, 0x4a, 0x58, 0xcf, 0x0d, 0x28, 0x89, 0x63, 0x14, - 0xc8, 0x1c, 0x2d, 0xe7, 0x3e, 0x50, 0x08, 0x21, 0x95, 0x1b, 0xa9, 0xcb, 0x4a, 0x2a, 0xcf, 0xa4, - 0xf2, 0x4c, 0xea, 0x8a, 0x9a, 0xc9, 0xf3, 0x52, 0x79, 0x2a, 0xb5, 0xa6, 0xa4, 0xf2, 0x9c, 0x54, - 0x9e, 0x49, 0xad, 0x9b, 0xb9, 0x5a, 0xaa, 0xfd, 0xab, 0x12, 0x6c, 0x4c, 0x17, 0x7e, 0xba, 0x4c, - 0x7d, 0x17, 0x9a, 0xbe, 0x5c, 0xaf, 0xc2, 0x9e, 0xec, 0xce, 0xac, 0xa4, 0xd3, 0xf0, 0x73, 0xdb, - 0xf8, 0x2e, 0xb4, 0x22, 0xe5, 0xe0, 0x74, 0x6b, 0x56, 0xb2, 0x75, 0xc9, 0xfb, 0xde, 0x69, 0x46, - 0x39, 0xc8, 0x0e, 0xc0, 0xfa, 0x92, 0x62, 0x8e, 0x8e, 0x39, 0x45, 0x5e, 0x78, 0x19, 0x0d, 0x88, - 0x05, 0x55, 0x59, 0xad, 0x54, 0x64, 0x7d, 0x2d, 0xbf, 0xed, 0xd7, 0x60, 0xad, 0x20, 0x45, 0xdb, - 0xba, 0x0a, 0x95, 0x31, 0x8a, 0x24, 0xf7, 0x96, 0x23, 0x3e, 0x6d, 0x0f, 0xba, 0x0e, 0xf2, 0x82, - 0xcb, 0xd3, 0x46, 0x8b, 0xa8, 0x64, 0x22, 0xb6, 0xc0, 0xca, 0x8b, 0xd0, 0xaa, 0x18, 0xad, 0x4b, - 0x39, 0xad, 0x1f, 0x42, 0x77, 0x67, 0x4c, 0x18, 0x3a, 0xe6, 0x01, 0x8e, 0x2e, 0xa3, 0x63, 0xfa, - 0x19, 0xac, 0x3d, 0xe2, 0x93, 0x2f, 0x05, 0x33, 0x86, 0xbf, 0x41, 0x97, 0x64, 0x1f, 0x25, 0x4f, - 0x8d, 0x7d, 0x94, 0x3c, 0x15, 0xcd, 0x92, 0x4f, 0xc6, 0x49, 0x18, 0xc9, 0x50, 0x68, 0x39, 0x1a, - 0xb2, 0xb7, 0xa1, 0xa9, 0x6a, 0xe8, 0x43, 0x12, 0x24, 0x63, 0x34, 0x37, 0x06, 0x37, 0x01, 0x62, - 0x8f, 0x7a, 0x21, 0xe2, 0x88, 0xaa, 0x3d, 0x54, 0x77, 0x72, 0x18, 0xfb, 0x37, 0x65, 0x58, 0x57, - 0x57, 0x22, 0xc7, 0xea, 0x26, 0xc0, 0x98, 0xd0, 0x87, 0xda, 0x88, 0x30, 0x9e, 0x63, 0x98, 0xc2, - 0x42, 0xc5, 0x20, 0x32, 0xdc, 0xc4, 0x67, 0xe1, 0x9e, 0xa2, 0x72, 0xf1, 0x3d, 0xc5, 0xcc, 0x4d, - 0x44, 0x75, 0xf6, 0x26, 0x42, 0x44, 0x9b, 0x21, 0xc2, 0x2a, 0xc6, 0xeb, 0x4e, 0x5d, 0x63, 0x0e, - 0x02, 0xeb, 0x16, 0x74, 0x86, 0x42, 0x4b, 0x77, 0x44, 0xc8, 0xa9, 0x1b, 0x7b, 0x7c, 0x24, 0x43, - 0xbd, 0xee, 0xb4, 0x24, 0x7a, 0x9f, 0x90, 0xd3, 0x23, 0x8f, 0x8f, 0xac, 0xf7, 0xa1, 0xad, 0xcb, - 0xc0, 0x50, 0xba, 0x88, 0xe9, 0xc3, 0x4f, 0x47, 0x51, 0xde, 0x7b, 0x4e, 0xeb, 0x34, 0x07, 0x31, - 0xfb, 0x2a, 0x5c, 0x79, 0x80, 0x18, 0xa7, 0x64, 0x52, 0x74, 0x8c, 0xfd, 0x7f, 0x00, 0x07, 0x11, - 0x47, 0xf4, 0x89, 0xe7, 0x23, 0x66, 0xbd, 0x95, 0x87, 0x74, 0x71, 0xb4, 0x3a, 0x50, 0x37, 0x52, - 0xe9, 0x80, 0x93, 0xa3, 0xb1, 0x07, 0xb0, 0xec, 0x90, 0x44, 0xa4, 0xa3, 0x57, 0xcc, 0x97, 0x9e, - 0xd7, 0xd4, 0xf3, 0x24, 0xd2, 0xd1, 0x63, 0xf6, 0xbe, 0x69, 0x61, 0x33, 0x76, 0x7a, 0x89, 0x06, - 0x50, 0xc7, 0x06, 0xa7, 0xb3, 0xca, 0xac, 0xe8, 0x8c, 0xc4, 0xfe, 0x10, 0xd6, 0x14, 0x27, 0xc5, - 0xd9, 0xb0, 0x79, 0x05, 0x96, 0xa9, 0x51, 0xa3, 0x94, 0x5d, 0x45, 0x69, 0x22, 0x3d, 0x26, 0xfc, - 0x21, 0x3a, 0xea, 0xcc, 0x10, 0xe3, 0x8f, 0x35, 0xe8, 0x8a, 0x81, 0x02, 0x4f, 0xfb, 0x63, 0x68, - 0xde, 0x77, 0x8e, 0x3e, 0x47, 0x78, 0x38, 0x3a, 0x11, 0xd9, 0xf3, 0x7f, 0x8b, 0xb0, 0x36, 0xd8, - 0xd2, 0xda, 0xe6, 0x86, 0x9c, 0x02, 0x9d, 0xfd, 0x09, 0x6c, 0xdc, 0x0f, 0x82, 0x3c, 0xca, 0x68, - 0xfd, 0x16, 0xd4, 0xa3, 0x1c, 0xbb, 0xdc, 0x99, 0x55, 0xa0, 0xce, 0x88, 0xec, 0x9f, 0xc0, 0xda, - 0xc3, 0x68, 0x8c, 0x23, 0xb4, 0x73, 0xf4, 0xf8, 0x10, 0xa5, 0xb9, 0xc8, 0x82, 0xaa, 0xa8, 0xd9, - 0x24, 0x8f, 0x9a, 0x23, 0xbf, 0x45, 0x70, 0x46, 0x27, 0xae, 0x1f, 0x27, 0x4c, 0xdf, 0x47, 0x2d, - 0x47, 0x27, 0x3b, 0x71, 0xc2, 0xc4, 0xe1, 0x22, 0x8a, 0x0b, 0x12, 0x8d, 0x27, 0x32, 0x42, 0x6b, - 0xce, 0x8a, 0x1f, 0x27, 0x0f, 0xa3, 0xf1, 0xc4, 0xfe, 0x1f, 0xd9, 0x81, 0x23, 0x14, 0x38, 0x5e, - 0x14, 0x90, 0xf0, 0x01, 0x3a, 0xcb, 0x49, 0x48, 0xbb, 0x3d, 0x93, 0x89, 0xbe, 0x2d, 0x41, 0xf3, - 0xfe, 0x10, 0x45, 0xfc, 0x01, 0xe2, 0x1e, 0x1e, 0xcb, 0x8e, 0xee, 0x0c, 0x51, 0x86, 0x49, 0xa4, - 0xc3, 0xcd, 0x80, 0xa2, 0x21, 0xc7, 0x11, 0xe6, 0x6e, 0xe0, 0xa1, 0x90, 0x44, 0x92, 0x4b, 0xcd, - 0x01, 0x81, 0x7a, 0x20, 0x31, 0xd6, 0x6b, 0xd0, 0x51, 0xf7, 0x85, 0xee, 0xc8, 0x8b, 0x82, 0xb1, - 0x08, 0x74, 0x75, 0x7f, 0xd2, 0x56, 0xe8, 0x7d, 0x8d, 0xb5, 0x5e, 0x87, 0x55, 0x1d, 0x86, 0x19, - 0x65, 0x55, 0x52, 0x76, 0x34, 0xbe, 0x40, 0x9a, 0xc4, 0x31, 0xa1, 0x9c, 0xb9, 0x0c, 0xf9, 0x3e, - 0x09, 0x63, 0xdd, 0x0e, 0x75, 0x0c, 0xfe, 0x58, 0xa1, 0xed, 0x21, 0xac, 0xed, 0x09, 0x3b, 0xb5, - 0x25, 0xd9, 0xb6, 0x6a, 0x87, 0x28, 0x74, 0x4f, 0xc6, 0xc4, 0x3f, 0x75, 0x45, 0x72, 0xd4, 0x1e, - 0x16, 0x05, 0xd7, 0xb6, 0x40, 0x1e, 0xe3, 0x6f, 0x64, 0xe7, 0x2f, 0xa8, 0x46, 0x84, 0xc7, 0xe3, - 0x64, 0xe8, 0xc6, 0x94, 0x9c, 0x20, 0x6d, 0x62, 0x27, 0x44, 0xe1, 0xbe, 0xc2, 0x1f, 0x09, 0xb4, - 0xfd, 0xc7, 0x12, 0xac, 0x17, 0x25, 0xe9, 0x54, 0x7f, 0x1b, 0xd6, 0x8b, 0xa2, 0xf4, 0xf1, 0xaf, - 0xca, 0xcb, 0x6e, 0x5e, 0xa0, 0x2a, 0x04, 0xee, 0x42, 0x4b, 0x5e, 0x29, 0xbb, 0x81, 0xe2, 0x54, - 0x2c, 0x7a, 0xf2, 0xeb, 0xe2, 0x34, 0xbd, 0xfc, 0x2a, 0xbd, 0x0f, 0xd7, 0xb4, 0xf9, 0xee, 0xac, - 0xda, 0x6a, 0x43, 0x6c, 0x68, 0x82, 0xc3, 0x29, 0xed, 0x3f, 0x83, 0x5e, 0x86, 0xda, 0x9e, 0x48, - 0x64, 0xb6, 0x99, 0xd7, 0xa6, 0x8c, 0xbd, 0x1f, 0x04, 0x54, 0x46, 0x49, 0xd5, 0x99, 0x37, 0x64, - 0xdf, 0x83, 0xab, 0xc7, 0x88, 0x2b, 0x6f, 0x78, 0x5c, 0x77, 0x22, 0x8a, 0xd9, 0x2a, 0x54, 0x8e, - 0x91, 0x2f, 0x8d, 0xaf, 0x38, 0xe2, 0x53, 0x6c, 0xc0, 0xc7, 0x0c, 0xf9, 0xd2, 0xca, 0x8a, 0x23, - 0xbf, 0xed, 0x3f, 0x94, 0x60, 0x45, 0x27, 0x67, 0x71, 0xc0, 0x04, 0x14, 0x9f, 0x21, 0xaa, 0xb7, - 0x9e, 0x86, 0xac, 0x57, 0xa1, 0xad, 0xbe, 0x5c, 0x12, 0x73, 0x4c, 0xd2, 0x94, 0xdf, 0x52, 0xd8, - 0x87, 0x0a, 0x29, 0xef, 0x07, 0xe5, 0xf5, 0x97, 0xee, 0x34, 0x35, 0x24, 0x2f, 0xf9, 0x98, 0x88, - 0x70, 0x99, 0xe2, 0xeb, 0x8e, 0x86, 0xc4, 0x56, 0x37, 0xfc, 0x96, 0x24, 0x3f, 0x03, 0x8a, 0xad, - 0x1e, 0x92, 0x24, 0xe2, 0x6e, 0x4c, 0x70, 0xc4, 0x75, 0x4e, 0x07, 0x89, 0x3a, 0x12, 0x18, 0xfb, - 0x97, 0x25, 0x58, 0x56, 0x77, 0xe4, 0xa2, 0xb7, 0x4d, 0x4f, 0xd6, 0x32, 0x96, 0x55, 0x8a, 0x94, - 0xa5, 0x4e, 0x53, 0xf9, 0x2d, 0xe2, 0xf8, 0x2c, 0x54, 0xe7, 0x83, 0x56, 0xed, 0x2c, 0x94, 0x07, - 0xc3, 0xab, 0xd0, 0xce, 0x0e, 0x68, 0x39, 0xae, 0x54, 0x6c, 0xa5, 0x58, 0x49, 0xb6, 0x50, 0x53, - 0xfb, 0xff, 0x45, 0x4b, 0x9f, 0xde, 0x0f, 0xaf, 0x42, 0x25, 0x49, 0x95, 0x11, 0x9f, 0x02, 0x33, - 0x4c, 0x8f, 0x76, 0xf1, 0x69, 0xdd, 0x82, 0xb6, 0x17, 0x04, 0x58, 0x4c, 0xf7, 0xc6, 0x7b, 0x38, - 0x48, 0x83, 0xb4, 0x88, 0xb5, 0xff, 0x5c, 0x82, 0xce, 0x0e, 0x89, 0x27, 0x1f, 0xe3, 0x31, 0xca, - 0x65, 0x10, 0xa9, 0xa4, 0x3e, 0xd9, 0xc5, 0xb7, 0xa8, 0x56, 0x9f, 0xe0, 0x31, 0x52, 0xa1, 0xa5, - 0x56, 0xb6, 0x26, 0x10, 0x32, 0xac, 0xcc, 0x60, 0x7a, 0xed, 0xd6, 0x52, 0x83, 0x87, 0x24, 0x90, - 0x75, 0x79, 0x80, 0xa9, 0x9b, 0x5e, 0xb2, 0xb5, 0x9c, 0x95, 0x00, 0x53, 0x39, 0xa4, 0x0d, 0x59, - 0x92, 0xf7, 0xbc, 0x79, 0x43, 0x96, 0x15, 0x46, 0x18, 0xb2, 0x01, 0xcb, 0xe4, 0xc9, 0x13, 0x86, - 0xb8, 0xac, 0xa0, 0x2b, 0x8e, 0x86, 0xd2, 0x34, 0x57, 0xcb, 0xa5, 0xb9, 0x2b, 0xb0, 0x26, 0x5f, - 0x14, 0x1e, 0x51, 0xcf, 0xc7, 0xd1, 0xd0, 0x1c, 0x0f, 0xeb, 0x60, 0x1d, 0x73, 0x12, 0xcf, 0x62, - 0xf7, 0x10, 0x7f, 0xf8, 0xf0, 0x70, 0xf7, 0x0c, 0x45, 0xdc, 0x60, 0xdf, 0x84, 0x9a, 0x41, 0xfd, - 0x3b, 0x77, 0x99, 0x6b, 0xd0, 0xdd, 0x43, 0xfc, 0x10, 0x71, 0x8a, 0xfd, 0xf4, 0x38, 0xba, 0x09, - 0x2b, 0x1a, 0x23, 0x96, 0x34, 0x54, 0x9f, 0x26, 0xcf, 0x6a, 0xf0, 0xce, 0x5f, 0xba, 0x3a, 0x25, - 0xeb, 0xee, 0xde, 0xda, 0x83, 0xce, 0xd4, 0x6b, 0x91, 0xa5, 0xaf, 0x7b, 0xe6, 0x3f, 0x22, 0xf5, - 0x37, 0x06, 0xea, 0xf5, 0x69, 0x60, 0x5e, 0x9f, 0x06, 0xbb, 0x61, 0xcc, 0x27, 0xd6, 0x2e, 0xb4, - 0x8b, 0xef, 0x2a, 0xd6, 0x75, 0x53, 0x1d, 0xcd, 0x79, 0x6d, 0x59, 0xc8, 0x66, 0x0f, 0x3a, 0x53, - 0x4f, 0x2c, 0x46, 0x9f, 0xf9, 0x2f, 0x2f, 0x0b, 0x19, 0xdd, 0x83, 0x46, 0xee, 0x4d, 0xc5, 0xea, - 0x29, 0x26, 0xb3, 0xcf, 0x2c, 0x0b, 0x19, 0xec, 0x40, 0xab, 0xf0, 0xcc, 0x61, 0xf5, 0xb5, 0x3d, - 0x73, 0xde, 0x3e, 0x16, 0x32, 0xd9, 0x86, 0x46, 0xee, 0xb5, 0xc1, 0x68, 0x31, 0xfb, 0xa4, 0xd1, - 0xbf, 0x36, 0x67, 0x44, 0x67, 0xfe, 0x7d, 0x68, 0x15, 0xde, 0x06, 0x8c, 0x22, 0xf3, 0xde, 0x25, - 0xfa, 0xd7, 0xe7, 0x8e, 0x69, 0x4e, 0x7b, 0xd0, 0x99, 0x7a, 0x29, 0x30, 0xce, 0x9d, 0xff, 0x80, - 0xb0, 0xd0, 0xac, 0x4f, 0xe5, 0x62, 0xe7, 0x1a, 0xc1, 0xdc, 0x62, 0xcf, 0xbe, 0x0b, 0xf4, 0x5f, - 0x9c, 0x3f, 0xa8, 0xb5, 0xda, 0x85, 0x76, 0xf1, 0x49, 0xc0, 0x30, 0x9b, 0xfb, 0x50, 0x70, 0xf1, - 0xce, 0x29, 0xbc, 0x0e, 0x64, 0x3b, 0x67, 0xde, 0xa3, 0xc1, 0x42, 0x46, 0xf7, 0x01, 0x74, 0xdb, - 0x17, 0xe0, 0x28, 0x5d, 0xb2, 0x99, 0x76, 0x33, 0x5d, 0xb2, 0x39, 0x2d, 0xe2, 0x3d, 0x00, 0xd5, - 0xad, 0x05, 0x24, 0xe1, 0xd6, 0x55, 0xa3, 0xc6, 0x54, 0x8b, 0xd8, 0xef, 0xcd, 0x0e, 0xcc, 0x30, - 0x40, 0x94, 0x3e, 0x0f, 0x83, 0x8f, 0x00, 0xb2, 0x2e, 0xd0, 0x30, 0x98, 0xe9, 0x0b, 0x2f, 0xf0, - 0x41, 0x33, 0xdf, 0xf3, 0x59, 0xda, 0xd6, 0x39, 0x7d, 0xe0, 0x05, 0x2c, 0x3a, 0x53, 0x35, 0x7d, - 0x71, 0xb3, 0x4d, 0x97, 0xfa, 0xfd, 0x99, 0xba, 0xde, 0xba, 0x0b, 0xcd, 0x7c, 0x31, 0x6f, 0xb4, - 0x98, 0x53, 0xe0, 0xf7, 0x0b, 0x05, 0xbd, 0x75, 0x0f, 0xda, 0xc5, 0x42, 0xde, 0xca, 0xc5, 0xc5, - 0x4c, 0x79, 0xdf, 0xd7, 0xd7, 0x54, 0x39, 0xf2, 0x77, 0x00, 0xb2, 0x82, 0xdf, 0xb8, 0x6f, 0xa6, - 0x05, 0x98, 0x92, 0xba, 0x07, 0x9d, 0xa9, 0x42, 0xde, 0x58, 0x3c, 0xbf, 0xbe, 0xbf, 0xc8, 0xfb, - 0xf9, 0x13, 0xc5, 0xd8, 0x3d, 0xe7, 0x94, 0xb9, 0x28, 0xfd, 0xe5, 0x4e, 0x1f, 0xb3, 0x8b, 0x67, - 0x0f, 0xa4, 0x85, 0x0c, 0xde, 0x05, 0xc8, 0xce, 0x18, 0xe3, 0x81, 0x99, 0x53, 0xa7, 0xdf, 0x32, - 0xd7, 0x88, 0x8a, 0x6e, 0x07, 0x5a, 0x85, 0x4e, 0xdb, 0xe4, 0xaa, 0x79, 0xed, 0xf7, 0x45, 0x47, - 0x49, 0xb1, 0x2d, 0x35, 0xab, 0x37, 0xb7, 0x59, 0xbd, 0xc8, 0x8b, 0xf9, 0x5e, 0xc8, 0x78, 0x71, - 0x4e, 0x7f, 0xf4, 0x3d, 0x39, 0x25, 0xdf, 0xef, 0xe4, 0x72, 0xca, 0x9c, 0x36, 0x68, 0x21, 0xa3, - 0x7d, 0xe8, 0xec, 0x99, 0x52, 0x56, 0x97, 0xd9, 0x5a, 0x9d, 0x39, 0x6d, 0x45, 0xbf, 0x3f, 0x6f, - 0x48, 0x07, 0xf6, 0xa7, 0xd0, 0x9d, 0x29, 0xb1, 0xad, 0xcd, 0xf4, 0x32, 0x77, 0x6e, 0xed, 0xbd, - 0x50, 0xad, 0x03, 0x58, 0x9d, 0xae, 0xb0, 0xad, 0x97, 0xf4, 0x56, 0x99, 0x5f, 0x79, 0x2f, 0x64, - 0xf5, 0x3e, 0xd4, 0x4c, 0x45, 0x67, 0xe9, 0x4b, 0xf3, 0xa9, 0x0a, 0x6f, 0xe1, 0xd4, 0xbb, 0xd0, - 0xc8, 0xd5, 0x44, 0x66, 0xaf, 0xce, 0x96, 0x49, 0x7d, 0x7d, 0xc7, 0x6d, 0xd0, 0xdb, 0xe7, 0xdf, - 0x7e, 0xb7, 0xf9, 0xc2, 0xdf, 0xbe, 0xdb, 0x7c, 0xe1, 0x17, 0xcf, 0x36, 0x4b, 0xdf, 0x3e, 0xdb, - 0x2c, 0xfd, 0xf5, 0xd9, 0x66, 0xe9, 0x1f, 0xcf, 0x36, 0x4b, 0x3f, 0xfa, 0xe9, 0x0f, 0xfc, 0x4f, - 0x0e, 0x4d, 0x22, 0x8e, 0x43, 0x74, 0xfb, 0x0c, 0x53, 0x9e, 0x1b, 0x8a, 0x4f, 0x87, 0x33, 0x7f, - 0xd7, 0x11, 0x2a, 0x9c, 0x2c, 0x4b, 0xf8, 0x9d, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x4b, 0x9e, - 0x0b, 0x82, 0xfc, 0x23, 0x00, 0x00, + // 2971 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x1a, 0xcb, 0x72, 0x24, 0x47, + 0xd1, 0xf3, 0x90, 0x66, 0x26, 0xe7, 0xa5, 0x69, 0x69, 0xb5, 0xb3, 0x63, 0x5b, 0xac, 0x7b, 0xed, + 0xb5, 0x8c, 0xf1, 0xc8, 0x5e, 0x3b, 0x58, 0x3f, 0xc2, 0x6c, 0xac, 0x1e, 0x96, 0x64, 0x5b, 0x96, + 0xdc, 0x5a, 0x85, 0x09, 0x08, 0xe8, 0x68, 0x75, 0x97, 0x66, 0xca, 0x9a, 0xee, 0x6a, 0x57, 0x57, + 0x6b, 0x35, 0x26, 0x82, 0x80, 0x0b, 0xdc, 0x38, 0x72, 0xe3, 0x07, 0x08, 0x6e, 0x1c, 0xb9, 0x72, + 0x70, 0x70, 0xe2, 0xc8, 0x89, 0xc0, 0xfb, 0x09, 0x7c, 0x01, 0x51, 0xaf, 0x7e, 0xcc, 0x43, 0x06, + 0x85, 0x22, 0xb8, 0x4c, 0x54, 0x66, 0x65, 0xe5, 0xab, 0xaa, 0xb2, 0x32, 0xb3, 0x07, 0x3e, 0x1f, + 0x60, 0x36, 0x8c, 0x4f, 0xfb, 0x2e, 0xf1, 0x37, 0xce, 0x1d, 0xe6, 0xbc, 0xe1, 0x92, 0x80, 0x39, + 0x38, 0x40, 0x34, 0x9a, 0x82, 0x23, 0xea, 0x6e, 0x38, 0x03, 0x14, 0xb0, 0x8d, 0x90, 0x12, 0x46, + 0x5c, 0x32, 0x8a, 0xe4, 0x28, 0x92, 0xe8, 0xbe, 0x00, 0x8c, 0xf2, 0x80, 0x86, 0x6e, 0xaf, 0x46, + 0x5c, 0x2c, 0x11, 0xbd, 0x3a, 0x1b, 0x87, 0x28, 0x52, 0xc0, 0xf3, 0x03, 0x42, 0x06, 0x23, 0x24, + 0x17, 0x9e, 0xc6, 0x67, 0x1b, 0xc8, 0x0f, 0xd9, 0x58, 0x4e, 0x9a, 0x7f, 0x28, 0xc2, 0xea, 0x16, + 0x45, 0x0e, 0x43, 0x5b, 0x5a, 0xac, 0x85, 0xbe, 0x8a, 0x51, 0xc4, 0x8c, 0x97, 0xa0, 0x91, 0xa8, + 0x62, 0x63, 0xaf, 0x5b, 0xb8, 0x5b, 0x58, 0xaf, 0x59, 0xf5, 0x04, 0xb7, 0xef, 0x19, 0xb7, 0xa1, + 0x82, 0x2e, 0x91, 0xcb, 0x67, 0x8b, 0x62, 0x76, 0x91, 0x83, 0xfb, 0x9e, 0xf1, 0x16, 0xd4, 0x23, + 0x46, 0x71, 0x30, 0xb0, 0xe3, 0x08, 0xd1, 0x6e, 0xe9, 0x6e, 0x61, 0xbd, 0xfe, 0x60, 0xa9, 0xcf, + 0xf5, 0xec, 0x1f, 0x8b, 0x89, 0x93, 0x08, 0x51, 0x0b, 0xa2, 0x64, 0x6c, 0xdc, 0x87, 0x8a, 0x87, + 0x2e, 0xb0, 0x8b, 0xa2, 0x6e, 0xf9, 0x6e, 0x69, 0xbd, 0xfe, 0xa0, 0x21, 0xc9, 0xb7, 0x05, 0xd2, + 0xd2, 0x93, 0xc6, 0x6b, 0x50, 0x8d, 0x18, 0xa1, 0xce, 0x00, 0x45, 0xdd, 0x05, 0x41, 0xd8, 0xd4, + 0x7c, 0x05, 0xd6, 0x4a, 0xa6, 0x8d, 0x17, 0xa0, 0x74, 0xb8, 0xb5, 0xdf, 0x5d, 0x14, 0xd2, 0x41, + 0x51, 0x85, 0xc8, 0xb5, 0x38, 0xda, 0xb8, 0x07, 0xcd, 0xc8, 0x09, 0xbc, 0x53, 0x72, 0x69, 0x87, + 0xd8, 0x0b, 0xa2, 0x6e, 0xe5, 0x6e, 0x61, 0xbd, 0x6a, 0x35, 0x14, 0xf2, 0x88, 0xe3, 0xcc, 0xf7, + 0xe1, 0xd6, 0x31, 0x73, 0x28, 0xbb, 0x86, 0x77, 0xcc, 0x13, 0x58, 0xb5, 0x90, 0x4f, 0x2e, 0xae, + 0xe5, 0xda, 0x2e, 0x54, 0x18, 0xf6, 0x11, 0x89, 0x99, 0x70, 0x6d, 0xd3, 0xd2, 0xa0, 0xf9, 0xa7, + 0x02, 0x18, 0x3b, 0x97, 0xc8, 0x3d, 0xa2, 0xc4, 0x45, 0x51, 0xf4, 0x7f, 0xda, 0xae, 0x57, 0xa1, + 0x12, 0x4a, 0x05, 0xba, 0x65, 0x41, 0xae, 0x76, 0x41, 0x6b, 0xa5, 0x67, 0xcd, 0x2f, 0x61, 0xe5, + 0x18, 0x0f, 0x02, 0x67, 0x74, 0x83, 0xfa, 0xae, 0xc2, 0x62, 0x24, 0x78, 0x0a, 0x55, 0x9b, 0x96, + 0x82, 0xcc, 0x23, 0x30, 0xbe, 0x70, 0x30, 0xbb, 0x39, 0x49, 0xe6, 0x1b, 0xb0, 0x9c, 0xe3, 0x18, + 0x85, 0x24, 0x88, 0x90, 0x50, 0x80, 0x39, 0x2c, 0x8e, 0x04, 0xb3, 0x05, 0x4b, 0x41, 0x26, 0x81, + 0xd5, 0x93, 0xd0, 0xbb, 0xe6, 0x6d, 0x7a, 0x00, 0x35, 0x8a, 0x22, 0x12, 0x53, 0x7e, 0x07, 0x8a, + 0xc2, 0xa9, 0x2b, 0xd2, 0xa9, 0x9f, 0xe2, 0x20, 0xbe, 0xb4, 0xf4, 0x9c, 0x95, 0x92, 0xa9, 0xf3, + 0xc9, 0xa2, 0xeb, 0x9c, 0xcf, 0xf7, 0xe1, 0xd6, 0x91, 0x13, 0x47, 0xd7, 0xd1, 0xd5, 0xfc, 0x80, + 0x9f, 0xed, 0x28, 0xf6, 0xaf, 0xb5, 0xf8, 0x8f, 0x05, 0xa8, 0x6e, 0x85, 0xf1, 0x49, 0xe4, 0x0c, + 0x90, 0xf1, 0x3d, 0xa8, 0x33, 0xc2, 0x9c, 0x91, 0x1d, 0x73, 0x50, 0x90, 0x97, 0x2d, 0x10, 0x28, + 0x49, 0xf0, 0x12, 0x34, 0x42, 0x44, 0xdd, 0x30, 0x56, 0x14, 0xc5, 0xbb, 0xa5, 0xf5, 0xb2, 0x55, + 0x97, 0x38, 0x49, 0xd2, 0x87, 0x65, 0x31, 0x67, 0xe3, 0xc0, 0x3e, 0x47, 0x34, 0x40, 0x23, 0x9f, + 0x78, 0x48, 0x1c, 0x8e, 0xb2, 0xd5, 0x11, 0x53, 0xfb, 0xc1, 0x27, 0xc9, 0x84, 0xf1, 0x7d, 0xe8, + 0x24, 0xf4, 0xfc, 0xc4, 0x0b, 0xea, 0xb2, 0xa0, 0x6e, 0x2b, 0xea, 0x13, 0x85, 0x36, 0x7f, 0x09, + 0xad, 0x27, 0x43, 0x4a, 0x18, 0x1b, 0xe1, 0x60, 0xb0, 0xed, 0x30, 0x87, 0x5f, 0xcd, 0x10, 0x51, + 0x4c, 0xbc, 0x48, 0x69, 0xab, 0x41, 0xe3, 0x75, 0xe8, 0x30, 0x49, 0x8b, 0x3c, 0x5b, 0xd3, 0x14, + 0x05, 0xcd, 0x52, 0x32, 0x71, 0xa4, 0x88, 0x5f, 0x81, 0x56, 0x4a, 0xcc, 0x2f, 0xb7, 0xd2, 0xb7, + 0x99, 0x60, 0x9f, 0x60, 0x1f, 0x99, 0x17, 0xc2, 0x57, 0x62, 0x93, 0x8d, 0xd7, 0xa1, 0x96, 0xfa, + 0xa1, 0x20, 0x4e, 0x48, 0x4b, 0x9e, 0x10, 0xed, 0x4e, 0xab, 0x9a, 0x38, 0xe5, 0x43, 0x68, 0xb3, + 0x44, 0x71, 0xdb, 0x73, 0x98, 0x93, 0x3f, 0x54, 0x79, 0xab, 0xac, 0x16, 0xcb, 0xc1, 0xe6, 0x07, + 0x50, 0x3b, 0xc2, 0x5e, 0x24, 0x05, 0x77, 0xa1, 0xe2, 0xc6, 0x94, 0xa2, 0x80, 0x69, 0x93, 0x15, + 0x68, 0xac, 0xc0, 0xc2, 0x08, 0xfb, 0x98, 0x29, 0x33, 0x25, 0x60, 0x12, 0x80, 0x03, 0xe4, 0x13, + 0x3a, 0x16, 0x0e, 0x5b, 0x81, 0x85, 0xec, 0xe6, 0x4a, 0xc0, 0x78, 0x1e, 0x6a, 0xbe, 0x73, 0x99, + 0x6c, 0x2a, 0x9f, 0xa9, 0xfa, 0xce, 0xa5, 0x54, 0xbe, 0x0b, 0x95, 0x33, 0x07, 0x8f, 0xdc, 0x80, + 0x29, 0xaf, 0x68, 0x30, 0x15, 0x58, 0xce, 0x0a, 0xfc, 0x6b, 0x11, 0xea, 0x52, 0xa2, 0x54, 0x78, + 0x05, 0x16, 0x5c, 0xc7, 0x1d, 0x26, 0x22, 0x05, 0x60, 0xdc, 0xd7, 0x8a, 0x14, 0xb3, 0x11, 0x2e, + 0xd5, 0x54, 0xab, 0xb6, 0x01, 0x10, 0x3d, 0x75, 0x42, 0xa5, 0x5b, 0x69, 0x0e, 0x71, 0x8d, 0xd3, + 0x48, 0x75, 0xdf, 0x86, 0x86, 0x3c, 0x77, 0x6a, 0x49, 0x79, 0xce, 0x92, 0xba, 0xa4, 0x92, 0x8b, + 0xee, 0x41, 0x33, 0x8e, 0x90, 0x3d, 0xc4, 0x88, 0x3a, 0xd4, 0x1d, 0x8e, 0xbb, 0x0b, 0xf2, 0x01, + 0x8a, 0x23, 0xb4, 0xa7, 0x71, 0xc6, 0x03, 0x58, 0xe0, 0xb1, 0x25, 0xea, 0x2e, 0x8a, 0xb7, 0xee, + 0x85, 0x2c, 0x4b, 0x61, 0x6a, 0x5f, 0xfc, 0xee, 0x04, 0x8c, 0x8e, 0x2d, 0x49, 0xda, 0x7b, 0x17, + 0x20, 0x45, 0x1a, 0x4b, 0x50, 0x3a, 0x47, 0x63, 0x75, 0x0f, 0xf9, 0x90, 0x3b, 0xe7, 0xc2, 0x19, + 0xc5, 0xda, 0xeb, 0x12, 0x78, 0xbf, 0xf8, 0x6e, 0xc1, 0x74, 0xa1, 0xbd, 0x39, 0x3a, 0xc7, 0x24, + 0xb3, 0x7c, 0x05, 0x16, 0x7c, 0xe7, 0x4b, 0x42, 0xb5, 0x27, 0x05, 0x20, 0xb0, 0x38, 0x20, 0x54, + 0xb3, 0x10, 0x80, 0xd1, 0x82, 0x22, 0x09, 0x85, 0xbf, 0x6a, 0x56, 0x91, 0x84, 0xa9, 0xa0, 0x72, + 0x46, 0x90, 0xf9, 0xcf, 0x32, 0x40, 0x2a, 0xc5, 0xb0, 0xa0, 0x87, 0x89, 0x1d, 0x21, 0xca, 0xdf, + 0x77, 0xfb, 0x74, 0xcc, 0x50, 0x64, 0x53, 0xe4, 0xc6, 0x34, 0xc2, 0x17, 0x7c, 0xff, 0xb8, 0xd9, + 0xb7, 0xa4, 0xd9, 0x13, 0xba, 0x59, 0xb7, 0x31, 0x39, 0x96, 0xeb, 0x36, 0xf9, 0x32, 0x4b, 0xaf, + 0x32, 0xf6, 0xe1, 0x56, 0xca, 0xd3, 0xcb, 0xb0, 0x2b, 0x5e, 0xc5, 0x6e, 0x39, 0x61, 0xe7, 0xa5, + 0xac, 0x76, 0x60, 0x19, 0x13, 0xfb, 0xab, 0x18, 0xc5, 0x39, 0x46, 0xa5, 0xab, 0x18, 0x75, 0x30, + 0xf9, 0x5c, 0x2c, 0x48, 0xd9, 0x1c, 0xc1, 0x9d, 0x8c, 0x95, 0xfc, 0xba, 0x67, 0x98, 0x95, 0xaf, + 0x62, 0xb6, 0x9a, 0x68, 0xc5, 0xe3, 0x41, 0xca, 0xf1, 0x63, 0x58, 0xc5, 0xc4, 0x7e, 0xea, 0x60, + 0x36, 0xc9, 0x6e, 0xe1, 0x3b, 0x8c, 0xe4, 0x2f, 0x5a, 0x9e, 0x97, 0x34, 0xd2, 0x47, 0x74, 0x90, + 0x33, 0x72, 0xf1, 0x3b, 0x8c, 0x3c, 0x10, 0x0b, 0x52, 0x36, 0x8f, 0xa1, 0x83, 0xc9, 0xa4, 0x36, + 0x95, 0xab, 0x98, 0xb4, 0x31, 0xc9, 0x6b, 0xb2, 0x09, 0x9d, 0x08, 0xb9, 0x8c, 0xd0, 0xec, 0x21, + 0xa8, 0x5e, 0xc5, 0x62, 0x49, 0xd1, 0x27, 0x3c, 0xcc, 0x9f, 0x42, 0x63, 0x2f, 0x1e, 0x20, 0x36, + 0x3a, 0x4d, 0x82, 0xc1, 0x8d, 0xc5, 0x1f, 0xf3, 0xdf, 0x45, 0xa8, 0x6f, 0x0d, 0x28, 0x89, 0xc3, + 0x5c, 0x4c, 0x96, 0x97, 0x74, 0x32, 0x26, 0x0b, 0x12, 0x11, 0x93, 0x25, 0xf1, 0x3b, 0xd0, 0xf0, + 0xc5, 0xd5, 0x55, 0xf4, 0x32, 0x0e, 0x75, 0xa6, 0x2e, 0xb5, 0x55, 0xf7, 0x33, 0xc1, 0xac, 0x0f, + 0x10, 0x62, 0x2f, 0x52, 0x6b, 0x64, 0x38, 0x6a, 0xab, 0x74, 0x4b, 0x87, 0x68, 0xab, 0x16, 0x26, + 0xd1, 0xfa, 0x2d, 0xa8, 0x9f, 0x72, 0x27, 0xa9, 0x05, 0xb9, 0x60, 0x94, 0x7a, 0xcf, 0x82, 0xd3, + 0xf4, 0x12, 0xee, 0x41, 0x73, 0x28, 0x5d, 0xa6, 0x16, 0xc9, 0x33, 0x74, 0x4f, 0x59, 0x92, 0xda, + 0xdb, 0xcf, 0x7a, 0x56, 0x6e, 0x40, 0x63, 0x98, 0x41, 0xf5, 0x8e, 0xa1, 0x33, 0x45, 0x32, 0x23, + 0x06, 0xad, 0x67, 0x63, 0x50, 0xfd, 0x81, 0x21, 0x05, 0x65, 0x57, 0x66, 0xe3, 0xd2, 0xef, 0x8a, + 0xd0, 0xf8, 0x0c, 0xb1, 0xa7, 0x84, 0x9e, 0x4b, 0x7d, 0x0d, 0x28, 0x07, 0x8e, 0x8f, 0x14, 0x47, + 0x31, 0x36, 0xee, 0x40, 0x95, 0x5e, 0xca, 0x00, 0xa2, 0xf6, 0xb3, 0x42, 0x2f, 0x45, 0x60, 0x30, + 0x5e, 0x04, 0xa0, 0x97, 0x76, 0xe8, 0xb8, 0xe7, 0x48, 0x79, 0xb0, 0x6c, 0xd5, 0xe8, 0xe5, 0x91, + 0x44, 0xf0, 0xa3, 0x40, 0x2f, 0x6d, 0x44, 0x29, 0xa1, 0x91, 0x8a, 0x55, 0x55, 0x7a, 0xb9, 0x23, + 0x60, 0xb5, 0xd6, 0xa3, 0x24, 0x0c, 0x91, 0x27, 0x62, 0xb4, 0x58, 0xbb, 0x2d, 0x11, 0x5c, 0x2a, + 0xd3, 0x52, 0x17, 0xa5, 0x54, 0x96, 0x4a, 0x65, 0xa9, 0xd4, 0x8a, 0x5c, 0xc9, 0xb2, 0x52, 0x59, + 0x22, 0xb5, 0x2a, 0xa5, 0xb2, 0x8c, 0x54, 0x96, 0x4a, 0xad, 0xe9, 0xb5, 0x4a, 0xaa, 0xf9, 0xdb, + 0x02, 0xac, 0x4e, 0x26, 0x7e, 0x2a, 0x37, 0x7d, 0x07, 0x1a, 0xae, 0xd8, 0xaf, 0xdc, 0x99, 0xec, + 0x4c, 0xed, 0xa4, 0x55, 0x77, 0x33, 0xc7, 0xf8, 0x21, 0x34, 0x03, 0xe9, 0xe0, 0xe4, 0x68, 0x96, + 0xd2, 0x7d, 0xc9, 0xfa, 0xde, 0x6a, 0x04, 0x19, 0xc8, 0xf4, 0xc0, 0xf8, 0x82, 0x62, 0x86, 0x8e, + 0x19, 0x45, 0x8e, 0x7f, 0x13, 0xd9, 0xbd, 0x01, 0x65, 0x91, 0xad, 0xf0, 0x6d, 0x6a, 0x58, 0x62, + 0x6c, 0xbe, 0x0a, 0xcb, 0x39, 0x29, 0xca, 0xd6, 0x25, 0x28, 0x8d, 0x50, 0x20, 0xb8, 0x37, 0x2d, + 0x3e, 0x34, 0x1d, 0xe8, 0x58, 0xc8, 0xf1, 0x6e, 0x4e, 0x1b, 0x25, 0xa2, 0x94, 0x8a, 0x58, 0x07, + 0x23, 0x2b, 0x42, 0xa9, 0xa2, 0xb5, 0x2e, 0x64, 0xb4, 0x3e, 0x84, 0xce, 0xd6, 0x88, 0x44, 0xe8, + 0x98, 0x79, 0x38, 0xb8, 0x89, 0x72, 0xe4, 0x17, 0xb0, 0xfc, 0x84, 0x8d, 0xbf, 0xe0, 0xcc, 0x22, + 0xfc, 0x35, 0xba, 0x21, 0xfb, 0x28, 0x79, 0xaa, 0xed, 0xa3, 0xe4, 0x29, 0x2f, 0x6e, 0x5c, 0x32, + 0x8a, 0xfd, 0x40, 0x5c, 0x85, 0xa6, 0xa5, 0x20, 0x73, 0x13, 0x1a, 0x32, 0x87, 0x3e, 0x20, 0x5e, + 0x3c, 0x42, 0x33, 0xef, 0xe0, 0x1a, 0x40, 0xe8, 0x50, 0xc7, 0x47, 0x0c, 0x51, 0x79, 0x86, 0x6a, + 0x56, 0x06, 0x63, 0xfe, 0xbe, 0x08, 0x2b, 0xb2, 0xdf, 0x70, 0x2c, 0xcb, 0x6c, 0x6d, 0x42, 0x0f, + 0xaa, 0x43, 0x12, 0xb1, 0x0c, 0xc3, 0x04, 0xe6, 0x2a, 0xf2, 0xfa, 0x5c, 0x72, 0xe3, 0xc3, 0x5c, + 0x13, 0xa0, 0x74, 0x75, 0x13, 0x60, 0xaa, 0xcc, 0x2f, 0x4f, 0x97, 0xf9, 0xfc, 0xb6, 0x69, 0x22, + 0x2c, 0xef, 0x78, 0xcd, 0xaa, 0x29, 0xcc, 0xbe, 0x67, 0xdc, 0x87, 0xf6, 0x80, 0x6b, 0x69, 0x0f, + 0x09, 0x39, 0xb7, 0x43, 0x87, 0x0d, 0xc5, 0x55, 0xaf, 0x59, 0x4d, 0x81, 0xde, 0x23, 0xe4, 0xfc, + 0xc8, 0x61, 0x43, 0xe3, 0x3d, 0x68, 0xa9, 0x34, 0xd0, 0x17, 0x2e, 0x8a, 0xd4, 0xe3, 0xa7, 0x6e, + 0x51, 0xd6, 0x7b, 0x56, 0xf3, 0x3c, 0x03, 0x45, 0xe6, 0x6d, 0xb8, 0xb5, 0x8d, 0x22, 0x46, 0xc9, + 0x38, 0xef, 0x18, 0xf3, 0x47, 0x00, 0xfb, 0x01, 0x43, 0xf4, 0xcc, 0x71, 0x51, 0x64, 0xbc, 0x99, + 0x85, 0x54, 0x72, 0xb4, 0xd4, 0x97, 0xed, 0x9e, 0x64, 0xc2, 0xca, 0xd0, 0x98, 0x7d, 0x58, 0xb4, + 0x48, 0xcc, 0xc3, 0xd1, 0xcb, 0x7a, 0xa4, 0xd6, 0x35, 0xd4, 0x3a, 0x81, 0xb4, 0xd4, 0x9c, 0xb9, + 0xa7, 0x4b, 0xd8, 0x94, 0x9d, 0xda, 0xa2, 0x3e, 0xd4, 0xb0, 0xc6, 0xa9, 0xa8, 0x32, 0x2d, 0x3a, + 0x25, 0x31, 0x3f, 0x80, 0x65, 0xc9, 0x49, 0x72, 0xd6, 0x6c, 0x5e, 0x86, 0x45, 0xaa, 0xd5, 0x28, + 0xa4, 0x7d, 0x1e, 0x45, 0xa4, 0xe6, 0xb8, 0x3f, 0x3e, 0xc5, 0x11, 0x4b, 0x0d, 0xd1, 0xfe, 0x58, + 0x86, 0x0e, 0x9f, 0xc8, 0xf1, 0x34, 0x3f, 0x82, 0xc6, 0x63, 0xeb, 0xe8, 0x33, 0x84, 0x07, 0xc3, + 0x53, 0x1e, 0x3d, 0x7f, 0x98, 0x87, 0x95, 0xc1, 0x86, 0xd2, 0x36, 0x33, 0x65, 0xe5, 0xe8, 0xcc, + 0x8f, 0x61, 0xf5, 0xb1, 0xe7, 0x65, 0x51, 0x5a, 0xeb, 0x37, 0xa1, 0x16, 0x64, 0xd8, 0x65, 0xde, + 0xac, 0x1c, 0x75, 0x4a, 0x64, 0xfe, 0x0c, 0x96, 0x0f, 0x83, 0x11, 0x0e, 0xd0, 0xd6, 0xd1, 0xc9, + 0x01, 0x4a, 0x62, 0x91, 0x01, 0x65, 0x9e, 0xb3, 0x09, 0x1e, 0x55, 0x4b, 0x8c, 0xf9, 0xe5, 0x0c, + 0x4e, 0x6d, 0x37, 0x8c, 0x23, 0xd5, 0xec, 0x59, 0x0c, 0x4e, 0xb7, 0xc2, 0x38, 0xe2, 0x8f, 0x0b, + 0x4f, 0x2e, 0x48, 0x30, 0x1a, 0x8b, 0x1b, 0x5a, 0xb5, 0x2a, 0x6e, 0x18, 0x1f, 0x06, 0xa3, 0xb1, + 0xf9, 0x03, 0x51, 0x81, 0x23, 0xe4, 0x59, 0x4e, 0xe0, 0x11, 0x7f, 0x1b, 0x5d, 0x64, 0x24, 0x24, + 0xd5, 0x9e, 0x8e, 0x44, 0xdf, 0x14, 0xa0, 0xf1, 0x78, 0x80, 0x02, 0xb6, 0x8d, 0x98, 0x83, 0x47, + 0xa2, 0xa2, 0xbb, 0x40, 0x34, 0xc2, 0x24, 0x50, 0xd7, 0x4d, 0x83, 0xbc, 0x20, 0xc7, 0x01, 0x66, + 0xb6, 0xe7, 0x20, 0x9f, 0x04, 0x82, 0x4b, 0xd5, 0x02, 0x8e, 0xda, 0x16, 0x18, 0xe3, 0x55, 0x68, + 0xcb, 0x66, 0x9c, 0x3d, 0x74, 0x02, 0x6f, 0xc4, 0x2f, 0x7a, 0x49, 0x5c, 0xcd, 0x96, 0x44, 0xef, + 0x29, 0xac, 0xf1, 0x1a, 0x2c, 0xa9, 0x6b, 0x98, 0x52, 0x96, 0x05, 0x65, 0x5b, 0xe1, 0x73, 0xa4, + 0x71, 0x18, 0x12, 0xca, 0x22, 0x3b, 0x42, 0xae, 0x4b, 0xfc, 0x50, 0x95, 0x43, 0x6d, 0x8d, 0x3f, + 0x96, 0x68, 0x73, 0x00, 0xcb, 0xbb, 0xdc, 0x4e, 0x65, 0x49, 0x7a, 0xac, 0x5a, 0x3e, 0xf2, 0xed, + 0xd3, 0x11, 0x71, 0xcf, 0x6d, 0x1e, 0x1c, 0x95, 0x87, 0x79, 0xc2, 0xb5, 0xc9, 0x91, 0xc7, 0xf8, + 0x6b, 0x51, 0xf9, 0x73, 0xaa, 0x21, 0x61, 0xe1, 0x28, 0x1e, 0xd8, 0x21, 0x25, 0xa7, 0x48, 0x99, + 0xd8, 0xf6, 0x91, 0xbf, 0x27, 0xf1, 0x47, 0x1c, 0x6d, 0xfe, 0xa5, 0x00, 0x2b, 0x79, 0x49, 0x2a, + 0xd4, 0x6f, 0xc0, 0x4a, 0x5e, 0x94, 0x7a, 0xfe, 0x65, 0x7a, 0xd9, 0xc9, 0x0a, 0x94, 0x89, 0xc0, + 0x43, 0x68, 0x8a, 0x7e, 0xad, 0xed, 0x49, 0x4e, 0xf9, 0xa4, 0x27, 0xbb, 0x2f, 0x56, 0xc3, 0xc9, + 0xee, 0xd2, 0x7b, 0x70, 0x47, 0x99, 0x6f, 0x4f, 0xab, 0x2d, 0x0f, 0xc4, 0xaa, 0x22, 0x38, 0x98, + 0xd0, 0xfe, 0x53, 0xe8, 0xa6, 0xa8, 0xcd, 0xb1, 0x40, 0xa6, 0x87, 0x79, 0x79, 0xc2, 0xd8, 0xc7, + 0x9e, 0x47, 0xc5, 0x2d, 0x29, 0x5b, 0xb3, 0xa6, 0xcc, 0x47, 0x70, 0xfb, 0x18, 0x31, 0xe9, 0x0d, + 0x87, 0xa9, 0x4a, 0x44, 0x32, 0x5b, 0x82, 0xd2, 0x31, 0x72, 0x85, 0xf1, 0x25, 0x8b, 0x0f, 0xf9, + 0x01, 0x3c, 0x89, 0x90, 0x2b, 0xac, 0x2c, 0x59, 0x62, 0x6c, 0xfe, 0xb9, 0x00, 0x15, 0x15, 0x9c, + 0xf9, 0x03, 0xe3, 0x51, 0x7c, 0x81, 0xa8, 0x3a, 0x7a, 0x0a, 0x32, 0x5e, 0x81, 0x96, 0x1c, 0xd9, + 0x24, 0x64, 0x98, 0x24, 0x21, 0xbf, 0x29, 0xb1, 0x87, 0x12, 0x29, 0x9a, 0x6f, 0xa2, 0xfd, 0xa5, + 0x2a, 0x4d, 0x05, 0x71, 0xfc, 0x59, 0xc4, 0x6f, 0xb8, 0x08, 0xf1, 0x35, 0x4b, 0x41, 0xfc, 0xa8, + 0x6b, 0x7e, 0x0b, 0x82, 0x9f, 0x06, 0xf9, 0x51, 0xf7, 0x49, 0x1c, 0x30, 0x3b, 0x24, 0x38, 0x60, + 0x2a, 0xa6, 0x83, 0x40, 0x1d, 0x71, 0x8c, 0xf9, 0x9b, 0x02, 0x2c, 0xca, 0x06, 0x34, 0xaf, 0x6d, + 0x93, 0x97, 0xb5, 0x88, 0x45, 0x96, 0x22, 0x64, 0xc9, 0xd7, 0x54, 0x8c, 0xf9, 0x3d, 0xbe, 0xf0, + 0xe5, 0xfb, 0xa0, 0x54, 0xbb, 0xf0, 0xc5, 0xc3, 0xf0, 0x0a, 0xb4, 0xd2, 0x07, 0x5a, 0xcc, 0x4b, + 0x15, 0x9b, 0x09, 0x56, 0x90, 0xcd, 0xd5, 0xd4, 0xfc, 0x31, 0x2f, 0xe9, 0x93, 0xe6, 0xeb, 0x12, + 0x94, 0xe2, 0x44, 0x19, 0x3e, 0xe4, 0x98, 0x41, 0xf2, 0xb4, 0xf3, 0xa1, 0x71, 0x1f, 0x5a, 0x8e, + 0xe7, 0x61, 0xbe, 0xdc, 0x19, 0xed, 0x62, 0x2f, 0xb9, 0xa4, 0x79, 0xac, 0xf9, 0xb7, 0x02, 0xb4, + 0xb7, 0x48, 0x38, 0xfe, 0x08, 0x8f, 0x50, 0x26, 0x82, 0x08, 0x25, 0xd5, 0xcb, 0xce, 0xc7, 0x3c, + 0x5b, 0x3d, 0xc3, 0x23, 0x24, 0xaf, 0x96, 0xdc, 0xd9, 0x2a, 0x47, 0x88, 0x6b, 0xa5, 0x27, 0x93, + 0xb6, 0x5b, 0x53, 0x4e, 0x1e, 0x10, 0x4f, 0xe4, 0xe5, 0x1e, 0xa6, 0x76, 0xd2, 0x64, 0x6b, 0x5a, + 0x15, 0x0f, 0x53, 0x31, 0xa5, 0x0c, 0x59, 0x10, 0x4d, 0xd4, 0xac, 0x21, 0x8b, 0x12, 0xc3, 0x0d, + 0x59, 0x85, 0x45, 0x72, 0x76, 0x16, 0x21, 0x26, 0x32, 0xe8, 0x92, 0xa5, 0xa0, 0x24, 0xcc, 0x55, + 0x33, 0x61, 0xee, 0x16, 0x2c, 0x8b, 0x76, 0xfd, 0x13, 0xea, 0xb8, 0x38, 0x18, 0xe8, 0xe7, 0x61, + 0x05, 0x8c, 0x63, 0x46, 0xc2, 0x69, 0xec, 0x2e, 0x62, 0x87, 0x87, 0x07, 0x3b, 0x17, 0x28, 0x60, + 0x1a, 0xfb, 0x06, 0x54, 0x35, 0xea, 0xbf, 0xe9, 0x65, 0x2e, 0x43, 0x67, 0x17, 0xb1, 0x03, 0xc4, + 0x28, 0x76, 0x93, 0xe7, 0xe8, 0x1e, 0x54, 0x14, 0x86, 0x6f, 0xa9, 0x2f, 0x87, 0x3a, 0xce, 0x2a, + 0xf0, 0xc1, 0xaf, 0x3b, 0x2a, 0x24, 0xab, 0xea, 0xde, 0xd8, 0x85, 0xf6, 0xc4, 0xa7, 0x18, 0x43, + 0xb5, 0x7b, 0x66, 0x7f, 0xa1, 0xe9, 0xad, 0xf6, 0xe5, 0xa7, 0x9d, 0xbe, 0xfe, 0xb4, 0xd3, 0xdf, + 0xf1, 0x43, 0x36, 0x36, 0x76, 0xa0, 0x95, 0xff, 0x68, 0x61, 0x3c, 0xaf, 0xb3, 0xa3, 0x19, 0x9f, + 0x32, 0xe6, 0xb2, 0xd9, 0x85, 0xf6, 0xc4, 0xf7, 0x0b, 0xad, 0xcf, 0xec, 0xcf, 0x1a, 0x73, 0x19, + 0x3d, 0x82, 0x7a, 0xe6, 0x83, 0x85, 0xd1, 0x95, 0x4c, 0xa6, 0xbf, 0x61, 0xcc, 0x65, 0xb0, 0x05, + 0xcd, 0xdc, 0x37, 0x04, 0xa3, 0xa7, 0xec, 0x99, 0xf1, 0x61, 0x61, 0x2e, 0x93, 0x4d, 0xa8, 0x67, + 0x5a, 0xf9, 0x5a, 0x8b, 0xe9, 0xef, 0x05, 0xbd, 0x3b, 0x33, 0x66, 0x54, 0xe4, 0xdf, 0x85, 0xf6, + 0x44, 0x7f, 0x5f, 0xbb, 0x64, 0x76, 0xdb, 0x7f, 0xae, 0x32, 0x9f, 0x88, 0x2d, 0xca, 0x94, 0x6f, + 0x99, 0x2d, 0x9a, 0xee, 0xe6, 0xf7, 0x5e, 0x98, 0x3d, 0xa9, 0xb4, 0xda, 0x81, 0x56, 0xbe, 0x91, + 0xaf, 0x99, 0xcd, 0x6c, 0xef, 0x5f, 0xbd, 0xdf, 0xb9, 0x9e, 0x7e, 0xba, 0xdf, 0xb3, 0x5a, 0xfd, + 0x73, 0x19, 0x3d, 0x06, 0x50, 0xc5, 0x9a, 0x87, 0x83, 0xc4, 0xd1, 0x53, 0x45, 0x62, 0xe2, 0xe8, + 0x19, 0x85, 0xdd, 0x23, 0x00, 0x59, 0x63, 0x79, 0x24, 0x66, 0xc6, 0x6d, 0xad, 0xc6, 0x44, 0x61, + 0xd7, 0xeb, 0x4e, 0x4f, 0x4c, 0x31, 0x40, 0x94, 0x5e, 0x87, 0xc1, 0x87, 0x00, 0x69, 0xed, 0xa6, + 0x19, 0x4c, 0x55, 0x73, 0x57, 0xf8, 0xa0, 0x91, 0xad, 0xd4, 0x0c, 0x65, 0xeb, 0x8c, 0xea, 0xed, + 0x0a, 0x16, 0xed, 0x89, 0x4c, 0x3c, 0x7f, 0xd8, 0x26, 0x13, 0xf4, 0xde, 0x54, 0x36, 0x6e, 0x3c, + 0x84, 0x46, 0x36, 0x05, 0xd7, 0x5a, 0xcc, 0x48, 0xcb, 0x7b, 0xb9, 0x34, 0xdc, 0x78, 0x04, 0xad, + 0x7c, 0xfa, 0xad, 0x8f, 0xd4, 0xcc, 0xa4, 0xbc, 0xa7, 0x9a, 0x4b, 0x19, 0xf2, 0xb7, 0x01, 0xd2, + 0x34, 0x5d, 0xbb, 0x6f, 0x2a, 0x71, 0x9f, 0x90, 0xba, 0x0b, 0xed, 0x89, 0xf4, 0x5b, 0x5b, 0x3c, + 0x3b, 0x2b, 0xbf, 0xca, 0xfb, 0xd9, 0x77, 0x40, 0xdb, 0x3d, 0xe3, 0x6d, 0xb8, 0x2a, 0x68, 0x65, + 0xde, 0x0c, 0x7d, 0x8a, 0xa7, 0x9f, 0x91, 0xb9, 0x0c, 0xde, 0x01, 0x48, 0x5f, 0x06, 0xed, 0x81, + 0xa9, 0xb7, 0xa2, 0xd7, 0xd4, 0xcd, 0x3f, 0x49, 0xb7, 0x05, 0xcd, 0x5c, 0x7d, 0xac, 0x43, 0xdd, + 0xac, 0xa2, 0xf9, 0xaa, 0x07, 0x20, 0x5f, 0x4c, 0xea, 0xdd, 0x9b, 0x59, 0x62, 0x5e, 0xe5, 0xc5, + 0x6c, 0x05, 0xa3, 0xbd, 0x38, 0xa3, 0xaa, 0xf9, 0x8e, 0x98, 0x92, 0xad, 0x52, 0x32, 0x31, 0x65, + 0x46, 0xf1, 0x32, 0x97, 0xd1, 0x1e, 0xb4, 0x77, 0x75, 0x02, 0xaa, 0x92, 0x63, 0xa5, 0xce, 0x8c, + 0x62, 0xa0, 0xd7, 0x9b, 0x35, 0xa5, 0x2e, 0xf6, 0x27, 0xd0, 0x99, 0x4a, 0x8c, 0x8d, 0xb5, 0xa4, + 0x05, 0x3b, 0x33, 0x63, 0x9e, 0xab, 0xd6, 0x3e, 0x2c, 0x4d, 0xe6, 0xc5, 0xc6, 0x8b, 0xea, 0xa8, + 0xcc, 0xce, 0x97, 0xe7, 0xb2, 0x7a, 0x0f, 0xaa, 0x3a, 0x0f, 0x33, 0x54, 0xab, 0x7b, 0x22, 0x2f, + 0x9b, 0xbb, 0xf4, 0x21, 0xd4, 0x33, 0x99, 0x8c, 0x3e, 0xab, 0xd3, 0xc9, 0x4d, 0x4f, 0x75, 0xa6, + 0x35, 0x7a, 0xf3, 0xf2, 0x9b, 0x6f, 0xd7, 0x9e, 0xfb, 0xc7, 0xb7, 0x6b, 0xcf, 0xfd, 0xea, 0xd9, + 0x5a, 0xe1, 0x9b, 0x67, 0x6b, 0x85, 0xbf, 0x3f, 0x5b, 0x2b, 0xfc, 0xeb, 0xd9, 0x5a, 0xe1, 0x27, + 0x3f, 0xff, 0x1f, 0xff, 0xa6, 0x42, 0xe3, 0x80, 0x61, 0x1f, 0x6d, 0x5c, 0x60, 0xca, 0x32, 0x53, + 0xe1, 0xf9, 0x60, 0xea, 0x1f, 0x2c, 0x5c, 0x85, 0xd3, 0x45, 0x01, 0xbf, 0xfd, 0x9f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x23, 0xa0, 0xd8, 0x6f, 0x0f, 0x23, 0x00, 0x00, } func (m *CreateContainerRequest) Marshal() (dAtA []byte, err error) { @@ -3157,90 +3068,6 @@ func (m *WaitProcessResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *ListProcessesRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListProcessesRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListProcessesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.Args) > 0 { - for iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Args[iNdEx]) - copy(dAtA[i:], m.Args[iNdEx]) - i = encodeVarintAgent(dAtA, i, uint64(len(m.Args[iNdEx]))) - i-- - dAtA[i] = 0x1a - } - } - if len(m.Format) > 0 { - i -= len(m.Format) - copy(dAtA[i:], m.Format) - i = encodeVarintAgent(dAtA, i, uint64(len(m.Format))) - i-- - dAtA[i] = 0x12 - } - if len(m.ContainerId) > 0 { - i -= len(m.ContainerId) - copy(dAtA[i:], m.ContainerId) - i = encodeVarintAgent(dAtA, i, uint64(len(m.ContainerId))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *ListProcessesResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *ListProcessesResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *ListProcessesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.XXX_unrecognized != nil { - i -= len(m.XXX_unrecognized) - copy(dAtA[i:], m.XXX_unrecognized) - } - if len(m.ProcessList) > 0 { - i -= len(m.ProcessList) - copy(dAtA[i:], m.ProcessList) - i = encodeVarintAgent(dAtA, i, uint64(len(m.ProcessList))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - func (m *UpdateContainerRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5840,48 +5667,6 @@ func (m *WaitProcessResponse) Size() (n int) { return n } -func (m *ListProcessesRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ContainerId) - if l > 0 { - n += 1 + l + sovAgent(uint64(l)) - } - l = len(m.Format) - if l > 0 { - n += 1 + l + sovAgent(uint64(l)) - } - if len(m.Args) > 0 { - for _, s := range m.Args { - l = len(s) - n += 1 + l + sovAgent(uint64(l)) - } - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - -func (m *ListProcessesResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ProcessList) - if l > 0 { - n += 1 + l + sovAgent(uint64(l)) - } - if m.XXX_unrecognized != nil { - n += len(m.XXX_unrecognized) - } - return n -} - func (m *UpdateContainerRequest) Size() (n int) { if m == nil { return 0 @@ -7109,30 +6894,6 @@ func (this *WaitProcessResponse) String() string { }, "") return s } -func (this *ListProcessesRequest) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ListProcessesRequest{`, - `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, - `Format:` + fmt.Sprintf("%v", this.Format) + `,`, - `Args:` + fmt.Sprintf("%v", this.Args) + `,`, - `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, - `}`, - }, "") - return s -} -func (this *ListProcessesResponse) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&ListProcessesResponse{`, - `ProcessList:` + fmt.Sprintf("%v", this.ProcessList) + `,`, - `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, - `}`, - }, "") - return s -} func (this *UpdateContainerRequest) String() string { if this == nil { return "nil" @@ -7866,7 +7627,6 @@ type AgentServiceService interface { ExecProcess(ctx context.Context, req *ExecProcessRequest) (*types.Empty, error) SignalProcess(ctx context.Context, req *SignalProcessRequest) (*types.Empty, error) WaitProcess(ctx context.Context, req *WaitProcessRequest) (*WaitProcessResponse, error) - ListProcesses(ctx context.Context, req *ListProcessesRequest) (*ListProcessesResponse, error) UpdateContainer(ctx context.Context, req *UpdateContainerRequest) (*types.Empty, error) StatsContainer(ctx context.Context, req *StatsContainerRequest) (*StatsContainerResponse, error) PauseContainer(ctx context.Context, req *PauseContainerRequest) (*types.Empty, error) @@ -7939,13 +7699,6 @@ func RegisterAgentServiceService(srv *github_com_containerd_ttrpc.Server, svc Ag } return svc.WaitProcess(ctx, &req) }, - "ListProcesses": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { - var req ListProcessesRequest - if err := unmarshal(&req); err != nil { - return nil, err - } - return svc.ListProcesses(ctx, &req) - }, "UpdateContainer": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) { var req UpdateContainerRequest if err := unmarshal(&req); err != nil { @@ -8189,14 +7942,6 @@ func (c *agentServiceClient) WaitProcess(ctx context.Context, req *WaitProcessRe return &resp, nil } -func (c *agentServiceClient) ListProcesses(ctx context.Context, req *ListProcessesRequest) (*ListProcessesResponse, error) { - var resp ListProcessesResponse - if err := c.client.Call(ctx, "grpc.AgentService", "ListProcesses", req, &resp); err != nil { - return nil, err - } - return &resp, nil -} - func (c *agentServiceClient) UpdateContainer(ctx context.Context, req *UpdateContainerRequest) (*types.Empty, error) { var resp types.Empty if err := c.client.Call(ctx, "grpc.AgentService", "UpdateContainer", req, &resp); err != nil { @@ -9391,244 +9136,6 @@ func (m *WaitProcessResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *ListProcessesRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListProcessesRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListProcessesRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAgent - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAgent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ContainerId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Format", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAgent - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAgent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Format = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthAgent - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthAgent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Args = append(m.Args, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAgent(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthAgent - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthAgent - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ListProcessesResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ListProcessesResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ListProcessesResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProcessList", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowAgent - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthAgent - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthAgent - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ProcessList = append(m.ProcessList[:0], dAtA[iNdEx:postIndex]...) - if m.ProcessList == nil { - m.ProcessList = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipAgent(dAtA[iNdEx:]) - if err != nil { - return err - } - if skippy < 0 { - return ErrInvalidLengthAgent - } - if (iNdEx + skippy) < 0 { - return ErrInvalidLengthAgent - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} func (m *UpdateContainerRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/src/runtime/virtcontainers/pkg/mock/mock.go b/src/runtime/virtcontainers/pkg/mock/mock.go index a0ab8fce9f..bec736d6e0 100644 --- a/src/runtime/virtcontainers/pkg/mock/mock.go +++ b/src/runtime/virtcontainers/pkg/mock/mock.go @@ -107,10 +107,6 @@ func (p *HybridVSockTTRPCMockImp) WaitProcess(ctx context.Context, req *pb.WaitP return &pb.WaitProcessResponse{}, nil } -func (p *HybridVSockTTRPCMockImp) ListProcesses(ctx context.Context, req *pb.ListProcessesRequest) (*pb.ListProcessesResponse, error) { - return &pb.ListProcessesResponse{}, nil -} - func (p *HybridVSockTTRPCMockImp) UpdateContainer(ctx context.Context, req *pb.UpdateContainerRequest) (*gpb.Empty, error) { return emptyResp, nil } diff --git a/src/runtime/virtcontainers/pkg/vcmock/sandbox.go b/src/runtime/virtcontainers/pkg/vcmock/sandbox.go index 0eee87ef15..17fdeb4bf7 100644 --- a/src/runtime/virtcontainers/pkg/vcmock/sandbox.go +++ b/src/runtime/virtcontainers/pkg/vcmock/sandbox.go @@ -166,11 +166,6 @@ func (s *Sandbox) UpdateContainer(ctx context.Context, containerID string, resou return nil } -// ProcessListContainer implements the VCSandbox function of the same name. -func (s *Sandbox) ProcessListContainer(ctx context.Context, containerID string, options vc.ProcessListOptions) (vc.ProcessList, error) { - return nil, nil -} - // WaitProcess implements the VCSandbox function of the same name. func (s *Sandbox) WaitProcess(ctx context.Context, containerID, processID string) (int32, error) { return 0, nil diff --git a/src/runtime/virtcontainers/pkg/vcmock/types.go b/src/runtime/virtcontainers/pkg/vcmock/types.go index 8c6cd4f512..d0060dbbcc 100644 --- a/src/runtime/virtcontainers/pkg/vcmock/types.go +++ b/src/runtime/virtcontainers/pkg/vcmock/types.go @@ -53,7 +53,6 @@ type Sandbox struct { EnterContainerFunc func(containerID string, cmd types.Cmd) (vc.VCContainer, *vc.Process, error) MonitorFunc func() (chan error, error) UpdateContainerFunc func(containerID string, resources specs.LinuxResources) error - ProcessListContainerFunc func(containerID string, options vc.ProcessListOptions) (vc.ProcessList, error) WaitProcessFunc func(containerID, processID string) (int32, error) SignalProcessFunc func(containerID, processID string, signal syscall.Signal, all bool) error WinsizeProcessFunc func(containerID, processID string, height, width uint32) error diff --git a/src/runtime/virtcontainers/sandbox.go b/src/runtime/virtcontainers/sandbox.go index 33274542ca..e758071fdb 100644 --- a/src/runtime/virtcontainers/sandbox.go +++ b/src/runtime/virtcontainers/sandbox.go @@ -1273,19 +1273,6 @@ func (s *Sandbox) DeleteContainer(ctx context.Context, containerID string) (VCCo return c, nil } -// ProcessListContainer lists every process running inside a specific -// container in the sandbox. -func (s *Sandbox) ProcessListContainer(ctx context.Context, containerID string, options ProcessListOptions) (ProcessList, error) { - // Fetch the container. - c, err := s.findContainer(containerID) - if err != nil { - return nil, err - } - - // Get the process list related to the container. - return c.processList(ctx, options) -} - // StatusContainer gets the status of a container // TODO: update container status properly, see kata-containers/runtime#253 func (s *Sandbox) StatusContainer(containerID string) (ContainerStatus, error) { diff --git a/tools/agent-ctl/Cargo.lock b/tools/agent-ctl/Cargo.lock index 9c61b93bd4..01c7e4aaa2 100644 --- a/tools/agent-ctl/Cargo.lock +++ b/tools/agent-ctl/Cargo.lock @@ -146,14 +146,13 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cgroups-rs" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348eb6d8e20a9f5247209686b7d0ffc2f4df40ddcb95f9940de55a94a655b3f5" +checksum = "d4cec688ee0fcd143ffd7893ce2c9857bfc656eb1f2a27202244b72f08f5f8ed" dependencies = [ "libc", "log", - "nix 0.18.0", - "procinfo", + "nix 0.20.0", "regex", ] @@ -484,9 +483,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.79" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2448f6066e80e3bfc792e9c98bf705b4b0fc6e8ef5b43e5889aff0eaa9c58743" +checksum = "9385f66bf6105b241aa65a61cb923ef20efc665cb9f9bb50ac2f0c4b7f378d41" [[package]] name = "log" @@ -585,18 +584,6 @@ dependencies = [ "void", ] -[[package]] -name = "nix" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83450fe6a6142ddd95fb064b746083fc4ef1705fe81f64a64e1d4b39f54a1055" -dependencies = [ - "bitflags", - "cc", - "cfg-if 0.1.10", - "libc", -] - [[package]] name = "nix" version = "0.19.1" @@ -610,10 +597,16 @@ dependencies = [ ] [[package]] -name = "nom" -version = "2.2.1" +name = "nix" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf51a729ecf40266a2368ad335a5fdde43471f545a967109cd62146ecf8b66ff" +checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a" +dependencies = [ + "bitflags", + "cc", + "cfg-if 1.0.0", + "libc", +] [[package]] name = "ntapi" @@ -738,7 +731,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "059a34f111a9dee2ce1ac2826a68b24601c4298cfeb1a587c3cb493d5ab46f52" dependencies = [ "libc", - "nix 0.18.0", + "nix 0.19.1", ] [[package]] @@ -771,18 +764,6 @@ dependencies = [ "unicode-xid 0.2.1", ] -[[package]] -name = "procinfo" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab1427f3d2635891f842892dda177883dca0639e05fe66796a62c9d2f23b49c" -dependencies = [ - "byteorder", - "libc", - "nom", - "rustc_version", -] - [[package]] name = "prost" version = "0.5.0" @@ -977,15 +958,6 @@ version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver", -] - [[package]] name = "rustjail" version = "0.1.0" @@ -1038,21 +1010,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.114" diff --git a/tools/agent-ctl/src/client.rs b/tools/agent-ctl/src/client.rs index 26f8e2934f..abe58951cd 100644 --- a/tools/agent-ctl/src/client.rs +++ b/tools/agent-ctl/src/client.rs @@ -79,9 +79,6 @@ const CMD_REPEAT: &'static str = "repeat"; const DEFAULT_PROC_SIGNAL: &'static str = "SIGKILL"; -// Format is either "json" or "table". -const DEFAULT_PS_FORMAT: &str = "json"; - const ERR_API_FAILED: &str = "API failed"; static AGENT_CMDS: &'static [AgentCmd] = &[ @@ -155,11 +152,6 @@ static AGENT_CMDS: &'static [AgentCmd] = &[ st: ServiceType::Agent, fp: agent_cmd_sandbox_list_routes, }, - AgentCmd { - name: "ListProcesses", - st: ServiceType::Agent, - fp: agent_cmd_container_list_processes, - }, AgentCmd { name: "MemHotplugByProbe", st: ServiceType::Agent, @@ -1101,40 +1093,6 @@ fn agent_cmd_sandbox_get_guest_details( Ok(()) } -fn agent_cmd_container_list_processes( - ctx: &Context, - client: &AgentServiceClient, - _health: &HealthClient, - options: &mut Options, - args: &str, -) -> Result<()> { - let mut req = ListProcessesRequest::default(); - - let ctx = clone_context(ctx); - - let cid = utils::get_option("cid", options, args); - - let mut list_format = utils::get_option("format", options, args); - - if list_format == "" { - list_format = DEFAULT_PS_FORMAT.to_string(); - } - - req.set_container_id(cid); - req.set_format(list_format); - - debug!(sl!(), "sending request"; "request" => format!("{:?}", req)); - - let reply = client - .list_processes(ctx, &req) - .map_err(|e| anyhow!("{:?}", e).context(ERR_API_FAILED))?; - - info!(sl!(), "response received"; - "response" => format!("{:?}", reply)); - - Ok(()) -} - fn agent_cmd_container_wait_process( ctx: &Context, client: &AgentServiceClient,