Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
helm3
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
helm3
Commits
0b9683e1
Commit
0b9683e1
authored
Apr 18, 2016
by
Matt Butcher
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(tiller): add release server stub
parent
88580563
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
180 additions
and
104 deletions
+180
-104
chart.proto
_proto/hapi/chart/chart.proto
+10
-5
config.proto
_proto/hapi/chart/config.proto
+1
-0
tiller.proto
_proto/hapi/services/tiller.proto
+7
-0
releases_server.go
cmd/tiller/releases_server.go
+47
-0
server.go
cmd/tiller/server.go
+0
-46
server_test.go
cmd/tiller/server_test.go
+3
-4
tiller.go
cmd/tiller/tiller.go
+19
-1
chart.pb.go
pkg/proto/hapi/chart/chart.pb.go
+24
-13
config.pb.go
pkg/proto/hapi/chart/config.pb.go
+6
-4
tiller.pb.go
pkg/proto/hapi/services/tiller.pb.go
+63
-31
No files found.
_proto/hapi/chart/chart.proto
View file @
0b9683e1
...
...
@@ -2,6 +2,7 @@ syntax = "proto3";
package
hapi
.
chart
;
import
"hapi/chart/config.proto"
;
import
"hapi/chart/metadata.proto"
;
import
"hapi/chart/template.proto"
;
...
...
@@ -13,12 +14,16 @@ option go_package = "chart";
// optionally parameterizable templates, and zero or more charts (dependencies).
//
message
Chart
{
//
TODO
//
Contents of the Chartfile.
hapi.chart.Metadata
metadata
=
1
;
// T
ODO
// T
emplates for this chart.
hapi.chart.Templates
templates
=
2
;
//
TODO
//
Charts that this chart depends on.
repeated
Chart
dependencies
=
3
;
// Default config for this template.
hapi.chart.Config
values
=
4
;
}
_proto/hapi/chart/config.proto
View file @
0b9683e1
...
...
@@ -10,4 +10,5 @@ option go_package = "chart";
// A config supplies values to the parametrizable templates of a chart.
//
message
Config
{
string
raw
=
1
;
}
_proto/hapi/services/tiller.proto
View file @
0b9683e1
...
...
@@ -2,6 +2,8 @@ syntax = "proto3";
package
hapi
.
services.tiller
;
import
"hapi/chart/chart.proto"
;
import
"hapi/chart/config.proto"
;
import
"hapi/release/release.proto"
;
import
"hapi/release/status.proto"
;
...
...
@@ -163,6 +165,10 @@ message UpdateReleaseResponse {
// TODO
//
message
InstallReleaseRequest
{
// Chart is the protobuf representation of a chart.
hapi.chart.Chart
chart
=
1
;
// Values is a string containing (unparsed) TOML values.
hapi.chart.Config
values
=
2
;
}
//
...
...
@@ -171,6 +177,7 @@ message InstallReleaseRequest {
// TODO
//
message
InstallReleaseResponse
{
hapi.release.Release
release
=
1
;
}
//
...
...
cmd/tiller/releases_server.go
0 → 100644
View file @
0b9683e1
package
main
import
(
"errors"
"github.com/deis/tiller/cmd/tiller/environment"
"github.com/deis/tiller/pkg/proto/hapi/services"
ctx
"golang.org/x/net/context"
)
func
init
()
{
srv
:=
&
releaseServer
{
env
:
env
,
}
services
.
RegisterReleaseServiceServer
(
rootServer
,
srv
)
}
type
releaseServer
struct
{
env
*
environment
.
Environment
}
// errNotImplemented is a temporary error for uninmplemented callbacks.
var
errNotImplemented
=
errors
.
New
(
"not implemented"
)
func
(
s
*
releaseServer
)
ListReleases
(
req
*
services
.
ListReleasesRequest
,
stream
services
.
ReleaseService_ListReleasesServer
)
error
{
return
errNotImplemented
}
func
(
s
*
releaseServer
)
GetReleaseStatus
(
c
ctx
.
Context
,
req
*
services
.
GetReleaseStatusRequest
)
(
*
services
.
GetReleaseStatusResponse
,
error
)
{
return
nil
,
errNotImplemented
}
func
(
s
*
releaseServer
)
GetReleaseContent
(
c
ctx
.
Context
,
req
*
services
.
GetReleaseContentRequest
)
(
*
services
.
GetReleaseContentResponse
,
error
)
{
return
nil
,
errNotImplemented
}
func
(
s
*
releaseServer
)
UpdateRelease
(
c
ctx
.
Context
,
req
*
services
.
UpdateReleaseRequest
)
(
*
services
.
UpdateReleaseResponse
,
error
)
{
return
nil
,
errNotImplemented
}
func
(
s
*
releaseServer
)
InstallRelease
(
c
ctx
.
Context
,
req
*
services
.
InstallReleaseRequest
)
(
*
services
.
InstallReleaseResponse
,
error
)
{
return
&
services
.
InstallReleaseResponse
{},
errNotImplemented
}
func
(
s
*
releaseServer
)
UninstallRelease
(
c
ctx
.
Context
,
req
*
services
.
UninstallReleaseRequest
)
(
*
services
.
UninstallReleaseResponse
,
error
)
{
return
nil
,
errNotImplemented
}
cmd/tiller/server.go
deleted
100644 → 0
View file @
88580563
package
main
import
(
"net"
"github.com/deis/tiller/cmd/tiller/environment"
"github.com/deis/tiller/pkg/hapi"
ctx
"golang.org/x/net/context"
"google.golang.org/grpc"
)
type
server
struct
{
Environment
*
environment
.
Environment
}
// newServer creates a new server with the default environment.
//
// TODO: This can take a configuration object of some sort so that we can
// initialize the environment with the correct stuff.
func
newServer
()
*
server
{
return
&
server
{
Environment
:
environment
.
New
(),
}
}
func
(
s
*
server
)
Ready
(
c
ctx
.
Context
,
req
*
hapi
.
PingRequest
)
(
*
hapi
.
PingResponse
,
error
)
{
return
&
hapi
.
PingResponse
{
Status
:
"OK"
},
nil
}
// startServer starts a new gRPC server listening on the given address.
//
// addr must conform to the requirements of "net.Listen".
func
startServer
(
addr
string
)
error
{
lstn
,
err
:=
net
.
Listen
(
"tcp"
,
addr
)
if
err
!=
nil
{
return
nil
}
hserver
:=
newServer
()
srv
:=
grpc
.
NewServer
()
hapi
.
RegisterProbeServer
(
srv
,
hserver
)
srv
.
Serve
(
lstn
)
return
nil
}
cmd/tiller/server_test.go
View file @
0b9683e1
...
...
@@ -13,18 +13,17 @@ import (
var
_
environment
.
Engine
=
&
engine
.
Engine
{}
var
_
environment
.
ReleaseStorage
=
storage
.
NewMemory
()
func
Test
NewServer
(
t
*
testing
.
T
)
{
func
Test
Init
(
t
*
testing
.
T
)
{
defer
func
()
{
if
recover
()
!=
nil
{
t
.
Fatalf
(
"Panic trapped. Check EngineYard.Default()"
)
}
}()
s
:=
newServer
()
// This will panic if it is not correct.
s
.
Environment
.
EngineYard
.
Default
()
env
.
EngineYard
.
Default
()
e
,
ok
:=
s
.
Environment
.
EngineYard
.
Get
(
environment
.
GoTplEngine
)
e
,
ok
:=
env
.
EngineYard
.
Get
(
environment
.
GoTplEngine
)
if
!
ok
{
t
.
Fatalf
(
"Could not find GoTplEngine"
)
}
...
...
cmd/tiller/tiller.go
View file @
0b9683e1
...
...
@@ -2,11 +2,20 @@ package main
import
(
"fmt"
"net"
"os"
"github.com/codegangsta/cli"
"github.com/deis/tiller/cmd/tiller/environment"
"google.golang.org/grpc"
)
// rootServer is the root gRPC server.
//
// Each gRPC service registers itself to this server during init().
var
rootServer
*
grpc
.
Server
=
grpc
.
NewServer
()
var
env
=
environment
.
New
()
func
main
()
{
app
:=
cli
.
NewApp
()
app
.
Name
=
"tiller"
...
...
@@ -17,7 +26,16 @@ func main() {
}
func
start
(
c
*
cli
.
Context
)
{
if
err
:=
startServer
(
":44134"
);
err
!=
nil
{
addr
:=
":44134"
lstn
,
err
:=
net
.
Listen
(
"tcp"
,
addr
)
if
err
!=
nil
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Server died: %s
\n
"
,
err
)
os
.
Exit
(
1
)
}
fmt
.
Printf
(
"Tiller is running on %s
\n
"
,
addr
)
if
err
:=
rootServer
.
Serve
(
lstn
);
err
!=
nil
{
fmt
.
Fprintf
(
os
.
Stderr
,
"Server died: %s
\n
"
,
err
)
os
.
Exit
(
1
)
}
...
...
pkg/proto/hapi/chart/chart.pb.go
View file @
0b9683e1
...
...
@@ -40,12 +40,14 @@ const _ = proto.ProtoPackageIsVersion1
// optionally parameterizable templates, and zero or more charts (dependencies).
//
type
Chart
struct
{
//
TODO
//
Contents of the Chartfile.
Metadata
*
Metadata
`protobuf:"bytes,1,opt,name=metadata" json:"metadata,omitempty"`
// T
ODO
// T
emplates for this chart.
Templates
*
Templates
`protobuf:"bytes,2,opt,name=templates" json:"templates,omitempty"`
//
TODO
//
Charts that this chart depends on.
Dependencies
[]
*
Chart
`protobuf:"bytes,3,rep,name=dependencies" json:"dependencies,omitempty"`
// Default config for this template.
Values
*
Config
`protobuf:"bytes,4,opt,name=values" json:"values,omitempty"`
}
func
(
m
*
Chart
)
Reset
()
{
*
m
=
Chart
{}
}
...
...
@@ -74,21 +76,30 @@ func (m *Chart) GetDependencies() []*Chart {
return
nil
}
func
(
m
*
Chart
)
GetValues
()
*
Config
{
if
m
!=
nil
{
return
m
.
Values
}
return
nil
}
func
init
()
{
proto
.
RegisterType
((
*
Chart
)(
nil
),
"hapi.chart.Chart"
)
}
var
fileDescriptor0
=
[]
byte
{
//
169
bytes of a gzipped FileDescriptorProto
//
200
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x09
,
0x6e
,
0x88
,
0x02
,
0xff
,
0xe2
,
0x12
,
0xcb
,
0x48
,
0x2c
,
0xc8
,
0xd4
,
0x4f
,
0xce
,
0x48
,
0x2c
,
0x2a
,
0x81
,
0x90
,
0x7a
,
0x05
,
0x45
,
0xf9
,
0x25
,
0xf9
,
0x42
,
0x5c
,
0x20
,
0x71
,
0x3d
,
0xb0
,
0x88
,
0x94
,
0x24
,
0x92
,
0x9a
,
0xdc
,
0xd4
,
0x92
,
0xc4
,
0x94
,
0xc4
,
0x92
,
0x44
,
0x88
,
0x32
,
0x14
,
0xa9
,
0x92
,
0xd4
,
0xdc
,
0x82
,
0x9c
,
0xc4
,
0x92
,
0x54
,
0x88
,
0x94
,
0xd2
,
0x52
,
0x46
,
0x2e
,
0x56
,
0x67
,
0x90
,
0x84
,
0x90
,
0x01
,
0x17
,
0x07
,
0x4c
,
0x9b
,
0x04
,
0xa3
,
0x02
,
0xa3
,
0x06
,
0xb7
,
0x91
,
0x88
,
0x1e
,
0xc2
,
0x78
,
0x3d
,
0x5f
,
0xa8
,
0x5c
,
0x10
,
0x5c
,
0x95
,
0x90
,
0x31
,
0x17
,
0x27
,
0xcc
,
0xb4
,
0x62
,
0x09
,
0x26
,
0xb0
,
0x16
,
0x51
,
0x64
,
0x2d
,
0x21
,
0x30
,
0xc9
,
0x20
,
0x84
,
0x3a
,
0x21
,
0x53
,
0x2e
,
0x9e
,
0x94
,
0xd4
,
0x82
,
0xd4
,
0xbc
,
0x94
,
0xd4
,
0xbc
,
0xe4
,
0x4c
,
0xa0
,
0x3e
,
0x66
,
0x05
,
0x66
,
0xa0
,
0x3e
,
0x41
,
0x64
,
0x7d
,
0x60
,
0xf7
,
0x04
,
0xa1
,
0x28
,
0x73
,
0x62
,
0x8f
,
0x62
,
0x05
,
0x4b
,
0x26
,
0xb1
,
0x81
,
0xdd
,
0x6d
,
0x0c
,
0x08
,
0x00
,
0x00
,
0xff
,
0xff
,
0xd3
,
0xb1
,
0x38
,
0xe5
,
0x13
,
0x01
,
0x00
,
0x00
,
0x20
,
0x71
,
0x3d
,
0xb0
,
0x88
,
0x94
,
0x38
,
0xb2
,
0x9a
,
0xfc
,
0xbc
,
0xb4
,
0xcc
,
0x74
,
0x88
,
0x22
,
0x29
,
0x49
,
0x24
,
0x89
,
0xdc
,
0xd4
,
0x92
,
0xc4
,
0x94
,
0xc4
,
0x92
,
0x44
,
0x2c
,
0x52
,
0x25
,
0xa9
,
0xb9
,
0x05
,
0x39
,
0x89
,
0x25
,
0xa9
,
0x10
,
0x29
,
0xa5
,
0x8b
,
0x8c
,
0x5c
,
0xac
,
0xce
,
0x20
,
0x09
,
0x21
,
0x03
,
0x2e
,
0x0e
,
0x98
,
0x36
,
0x09
,
0x46
,
0x05
,
0x46
,
0x0d
,
0x6e
,
0x23
,
0x11
,
0x3d
,
0x84
,
0xbd
,
0x7a
,
0xbe
,
0x50
,
0xb9
,
0x20
,
0xb8
,
0x2a
,
0x21
,
0x63
,
0x2e
,
0x4e
,
0x98
,
0x69
,
0xc5
,
0x12
,
0x4c
,
0x60
,
0x2d
,
0xa2
,
0xc8
,
0x5a
,
0x42
,
0x60
,
0x92
,
0x41
,
0x08
,
0x75
,
0x42
,
0xa6
,
0x5c
,
0x3c
,
0x29
,
0xa9
,
0x05
,
0xa9
,
0x79
,
0x29
,
0xa9
,
0x79
,
0xc9
,
0x99
,
0x40
,
0x7d
,
0xcc
,
0x0a
,
0xcc
,
0x40
,
0x7d
,
0x82
,
0xc8
,
0xfa
,
0xc0
,
0xee
,
0x09
,
0x42
,
0x51
,
0x26
,
0xa4
,
0xc5
,
0xc5
,
0x56
,
0x96
,
0x98
,
0x53
,
0x0a
,
0xd4
,
0xc0
,
0x02
,
0xb6
,
0x48
,
0x08
,
0x45
,
0x03
,
0x38
,
0x1c
,
0x82
,
0xa0
,
0x2a
,
0x9c
,
0xd8
,
0xa3
,
0x58
,
0xc1
,
0xe2
,
0x49
,
0x6c
,
0x60
,
0x3f
,
0x1a
,
0x03
,
0x02
,
0x00
,
0x00
,
0xff
,
0xff
,
0x12
,
0xa6
,
0x6a
,
0xa8
,
0x58
,
0x01
,
0x00
,
0x00
,
}
pkg/proto/hapi/chart/config.pb.go
View file @
0b9683e1
...
...
@@ -19,6 +19,7 @@ var _ = math.Inf
// A config supplies values to the parametrizable templates of a chart.
//
type
Config
struct
{
Raw
string
`protobuf:"bytes,1,opt,name=raw" json:"raw,omitempty"`
}
func
(
m
*
Config
)
Reset
()
{
*
m
=
Config
{}
}
...
...
@@ -31,10 +32,11 @@ func init() {
}
var
fileDescriptor1
=
[]
byte
{
//
74
bytes of a gzipped FileDescriptorProto
//
89
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x09
,
0x6e
,
0x88
,
0x02
,
0xff
,
0xe2
,
0x12
,
0xcf
,
0x48
,
0x2c
,
0xc8
,
0xd4
,
0x4f
,
0xce
,
0x48
,
0x2c
,
0x2a
,
0xd1
,
0x4f
,
0xce
,
0xcf
,
0x4b
,
0xcb
,
0x4c
,
0xd7
,
0x2b
,
0x28
,
0xca
,
0x2f
,
0xc9
,
0x17
,
0xe2
,
0x02
,
0x49
,
0xe8
,
0x81
,
0x25
,
0x94
,
0x38
,
0xb8
,
0xd8
,
0x9c
,
0xc1
,
0x72
,
0x4e
,
0xec
,
0x51
,
0xac
,
0x60
,
0xa1
,
0x24
,
0x36
,
0xb0
,
0x2a
,
0x63
,
0x40
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x98
,
0x3b
,
0x34
,
0xb8
,
0x40
,
0x00
,
0x00
,
0x00
,
0xca
,
0x2f
,
0xc9
,
0x17
,
0xe2
,
0x02
,
0x49
,
0xe8
,
0x81
,
0x25
,
0x94
,
0xa4
,
0xb8
,
0xd8
,
0x9c
,
0xc1
,
0x72
,
0x42
,
0x02
,
0x5c
,
0xcc
,
0x45
,
0x89
,
0xe5
,
0x12
,
0x8c
,
0x0a
,
0x8c
,
0x1a
,
0x9c
,
0x41
,
0x20
,
0xa6
,
0x13
,
0x7b
,
0x14
,
0x2b
,
0x58
,
0x51
,
0x12
,
0x1b
,
0x58
,
0x9f
,
0x31
,
0x20
,
0x00
,
0x00
,
0xff
,
0xff
,
0xfe
,
0xa0
,
0x78
,
0x2a
,
0x52
,
0x00
,
0x00
,
0x00
,
}
pkg/proto/hapi/services/tiller.pb.go
View file @
0b9683e1
...
...
@@ -7,6 +7,8 @@ package services
import
proto
"github.com/golang/protobuf/proto"
import
fmt
"fmt"
import
math
"math"
import
hapi_chart3
"github.com/deis/tiller/pkg/proto/hapi/chart"
import
hapi_chart
"github.com/deis/tiller/pkg/proto/hapi/chart"
import
hapi_release2
"github.com/deis/tiller/pkg/proto/hapi/release"
import
hapi_release
"github.com/deis/tiller/pkg/proto/hapi/release"
...
...
@@ -173,6 +175,10 @@ func (*UpdateReleaseResponse) Descriptor() ([]byte, []int) { return fileDescript
// TODO
//
type
InstallReleaseRequest
struct
{
// Chart is the protobuf representation of a chart.
Chart
*
hapi_chart3
.
Chart
`protobuf:"bytes,1,opt,name=chart" json:"chart,omitempty"`
// Values is a string containing (unparsed) TOML values.
Values
*
hapi_chart
.
Config
`protobuf:"bytes,2,opt,name=values" json:"values,omitempty"`
}
func
(
m
*
InstallReleaseRequest
)
Reset
()
{
*
m
=
InstallReleaseRequest
{}
}
...
...
@@ -180,12 +186,27 @@ func (m *InstallReleaseRequest) String() string { return proto.Compac
func
(
*
InstallReleaseRequest
)
ProtoMessage
()
{}
func
(
*
InstallReleaseRequest
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor1
,
[]
int
{
8
}
}
func
(
m
*
InstallReleaseRequest
)
GetChart
()
*
hapi_chart3
.
Chart
{
if
m
!=
nil
{
return
m
.
Chart
}
return
nil
}
func
(
m
*
InstallReleaseRequest
)
GetValues
()
*
hapi_chart
.
Config
{
if
m
!=
nil
{
return
m
.
Values
}
return
nil
}
//
// InstallReleaseResponse:
//
// TODO
//
type
InstallReleaseResponse
struct
{
Release
*
hapi_release2
.
Release
`protobuf:"bytes,1,opt,name=release" json:"release,omitempty"`
}
func
(
m
*
InstallReleaseResponse
)
Reset
()
{
*
m
=
InstallReleaseResponse
{}
}
...
...
@@ -193,6 +214,13 @@ func (m *InstallReleaseResponse) String() string { return proto.Compa
func
(
*
InstallReleaseResponse
)
ProtoMessage
()
{}
func
(
*
InstallReleaseResponse
)
Descriptor
()
([]
byte
,
[]
int
)
{
return
fileDescriptor1
,
[]
int
{
9
}
}
func
(
m
*
InstallReleaseResponse
)
GetRelease
()
*
hapi_release2
.
Release
{
if
m
!=
nil
{
return
m
.
Release
}
return
nil
}
//
// UninstallReleaseRequest:
//
...
...
@@ -509,35 +537,39 @@ var _ReleaseService_serviceDesc = grpc.ServiceDesc{
}
var
fileDescriptor1
=
[]
byte
{
// 469 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x09
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x94
,
0x54
,
0xcd
,
0xd2
,
0xd2
,
0x30
,
0x14
,
0xfd
,
0x2a
,
0x7e
,
0x88
,
0x97
,
0x9f
,
0xd1
,
0x58
,
0xa0
,
0x64
,
0x85
,
0x59
,
0xe1
,
0x5f
,
0xab
,
0xb8
,
0x54
,
0x37
,
0xb2
,
0x70
,
0x9c
,
0x61
,
0x5c
,
0xd4
,
0x61
,
0xe3
,
0xc6
,
0xa9
,
0x18
,
0xc6
,
0x38
,
0xa5
,
0xad
,
0x4d
,
0x60
,
0xe1
,
0x3b
,
0xf8
,
0x3e
,
0x3e
,
0x9e
,
0x34
,
0x3f
,
0x1d
,
0x5a
,
0x9a
,
0xa1
,
0xae
,
0x98
,
0xe4
,
0x9c
,
0x73
,
0xef
,
0xb9
,
0xb9
,
0xa7
,
0x00
,
0xfe
,
0x11
,
0x65
,
0x2c
,
0xe0
,
0x34
,
0x3f
,
0xb2
,
0x2d
,
0xe5
,
0x81
,
0x60
,
0x71
,
0x4c
,
0x73
,
0x3f
,
0xcb
,
0x53
,
0x91
,
0x22
,
0xb7
,
0xc0
,
0x7c
,
0x83
,
0xf9
,
0x0a
,
0xc3
,
0x4a
,
0x91
,
0xd3
,
0x98
,
0x46
,
0x9c
,
0x9a
,
0x5f
,
0xa5
,
0xc0
,
0xb3
,
0x0a
,
0xc6
,
0x45
,
0x24
,
0x0e
,
0x5c
,
0x41
,
0x64
,
0x05
,
0x8f
,
0xd6
,
0x8c
,
0x8b
,
0x50
,
0x61
,
0x3c
,
0xa4
,
0xbf
,
0x0e
,
0x94
,
0x0b
,
0xe4
,
0xc2
,
0x6d
,
0xcc
,
0xf6
,
0x4c
,
0x78
,
0xce
,
0xdc
,
0x59
,
0x74
,
0x42
,
0x75
,
0x40
,
0x13
,
0xe8
,
0xa6
,
0xbb
,
0x1d
,
0xa7
,
0xc2
,
0xbb
,
0x23
,
0xaf
,
0xf5
,
0x89
,
0xfc
,
0x71
,
0xc0
,
0xad
,
0x56
,
0xe1
,
0x59
,
0x9a
,
0x70
,
0x5a
,
0x94
,
0xd9
,
0xa6
,
0x87
,
0xa4
,
0x2c
,
0x23
,
0x0f
,
0xb6
,
0x32
,
0x05
,
0x5b
,
0xa4
,
0x22
,
0x8a
,
0xbd
,
0x8e
,
0x62
,
0xcb
,
0x03
,
0x7a
,
0x05
,
0x3d
,
0xed
,
0x9c
,
0x7b
,
0x77
,
0xe7
,
0x9d
,
0x45
,
0x7f
,
0x39
,
0xf6
,
0xe5
,
0x0b
,
0x98
,
0x19
,
0x75
,
0xd7
,
0xb0
,
0xa4
,
0x91
,
0xb7
,
0x30
,
0xfd
,
0x40
,
0x8d
,
0x9b
,
0xcf
,
0x72
,
0x5c
,
0x33
,
0xd8
,
0x63
,
0x18
,
0x68
,
0xda
,
0xd7
,
0x24
,
0xda
,
0x53
,
0x69
,
0xec
,
0x7e
,
0xd8
,
0xd7
,
0x77
,
0x9f
,
0x4e
,
0x57
,
0xe4
,
0x37
,
0x78
,
0x97
,
0x6a
,
0x3d
,
0xd0
,
0x75
,
0x39
,
0x7a
,
0x03
,
0x23
,
0x43
,
0x51
,
0x2f
,
0x2d
,
0xa7
,
0xec
,
0x2f
,
0xdd
,
0xaa
,
0x6b
,
0x5d
,
0x78
,
0x98
,
0x9f
,
0xf7
,
0x21
,
0xef
,
0xce
,
0x7b
,
0xaf
,
0xd2
,
0x44
,
0xd0
,
0x44
,
0xfc
,
0x87
,
0xf5
,
0x35
,
0xcc
,
0x1a
,
0xe4
,
0xda
,
0x7b
,
0x00
,
0xf7
,
0x34
,
0x57
,
0x4a
,
0xad
,
0xef
,
0x68
,
0x58
,
0x64
,
0x02
,
0xee
,
0x26
,
0xfb
,
0x1e
,
0x09
,
0x6a
,
0x10
,
0x65
,
0x84
,
0x4c
,
0x61
,
0x5c
,
0xbb
,
0x57
,
0x1d
,
0x0a
,
0xe0
,
0x63
,
0x72
,
0x1a
,
0x3a
,
0x8e
,
0x6b
,
0x0a
,
0x0f
,
0x26
,
0x75
,
0x40
,
0x4b
,
0x66
,
0x30
,
0xdd
,
0x24
,
0xac
,
0x51
,
0x84
,
0xc1
,
0xbb
,
0x84
,
0x94
,
0x6c
,
0xf9
,
0xf7
,
0x16
,
0x46
,
0x66
,
0x43
,
0xea
,
0x43
,
0x40
,
0x0c
,
0x06
,
0xe7
,
0x19
,
0x44
,
0x4f
,
0xfc
,
0xa6
,
0xef
,
0xc4
,
0x6f
,
0x48
,
0x3b
,
0x7e
,
0xda
,
0x86
,
0xaa
,
0x0d
,
0xdf
,
0xbc
,
0x74
,
0x10
,
0x87
,
0x07
,
0xf5
,
0x84
,
0xa0
,
0x17
,
0xcd
,
0x35
,
0x2c
,
0x39
,
0xc4
,
0x7e
,
0x5b
,
0xba
,
0x69
,
0x8b
,
0x8e
,
0xf0
,
0xf0
,
0x62
,
0xb7
,
0xe8
,
0x6a
,
0x99
,
0x6a
,
0x86
,
0x70
,
0xd0
,
0x9a
,
0x5f
,
0xf6
,
0xfd
,
0x09
,
0xc3
,
0xca
,
0xb6
,
0x91
,
0xe5
,
0xb5
,
0x9a
,
0xa2
,
0x82
,
0x9f
,
0xb5
,
0xe2
,
0x96
,
0xbd
,
0xf6
,
0x30
,
0xaa
,
0xe6
,
0x04
,
0x59
,
0x0a
,
0x34
,
0xc6
,
0x0c
,
0x3f
,
0x6f
,
0x47
,
0x2e
,
0xdb
,
0x9d
,
0xf6
,
0x58
,
0x4f
,
0x98
,
0x6d
,
0x8f
,
0x96
,
0x90
,
0xda
,
0xf6
,
0x68
,
0x0b
,
0x2e
,
0xb9
,
0x79
,
0x0f
,
0x5f
,
0x7a
,
0x86
,
0xfd
,
0xad
,
0x2b
,
0xff
,
0x84
,
0x5f
,
0xff
,
0x0b
,
0x00
,
0x00
,
0xff
,
0xff
,
0x35
,
0x75
,
0xc2
,
0x92
,
0xef
,
0x05
,
0x00
,
0x00
,
// 529 bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x09
,
0x6e
,
0x88
,
0x02
,
0xff
,
0x9c
,
0x55
,
0x4d
,
0x73
,
0xd3
,
0x30
,
0x10
,
0x6d
,
0x08
,
0x0d
,
0x65
,
0xd3
,
0x66
,
0xa8
,
0x70
,
0x12
,
0x47
,
0xa7
,
0xa2
,
0x0b
,
0xa5
,
0x80
,
0x03
,
0xe1
,
0x08
,
0x5c
,
0xc8
,
0x81
,
0xe9
,
0x4c
,
0x87
,
0x83
,
0x99
,
0x5e
,
0xb8
,
0x30
,
0x26
,
0x28
,
0x54
,
0x8c
,
0x62
,
0x07
,
0x4b
,
0xc9
,
0x81
,
0xff
,
0xc0
,
0xff
,
0xe1
,
0xe7
,
0x61
,
0xeb
,
0xc3
,
0x13
,
0x39
,
0xd6
,
0xd4
,
0xf4
,
0xe2
,
0x8c
,
0xf4
,
0xde
,
0xee
,
0xdb
,
0x5d
,
0xbd
,
0x9d
,
0x00
,
0xbe
,
0x49
,
0xd6
,
0x6c
,
0x2a
,
0x68
,
0xbe
,
0x65
,
0x0b
,
0x2a
,
0xa6
,
0x92
,
0x71
,
0x4e
,
0xf3
,
0x68
,
0x9d
,
0x67
,
0x32
,
0x43
,
0x41
,
0x89
,
0x45
,
0x16
,
0x8b
,
0x34
,
0x86
,
0x47
,
0x2a
,
0x62
,
0x71
,
0x93
,
0xe4
,
0x52
,
0x7f
,
0x35
,
0x1b
,
0x8f
,
0x77
,
0xef
,
0xb3
,
0x74
,
0xc9
,
0x7e
,
0x18
,
0x40
,
0x4b
,
0xe4
,
0x94
,
0xd3
,
0x44
,
0x50
,
0xfb
,
0x6b
,
0xb0
,
0x89
,
0x83
,
0x09
,
0x99
,
0xc8
,
0x8d
,
0xd0
,
0x10
,
0x99
,
0xc3
,
0xe3
,
0x2b
,
0x26
,
0x64
,
0xac
,
0x31
,
0x11
,
0xd3
,
0x5f
,
0x1b
,
0x2a
,
0x24
,
0x0a
,
0xe0
,
0x90
,
0xb3
,
0x15
,
0x93
,
0x61
,
0xe7
,
0xac
,
0x73
,
0xde
,
0x8d
,
0xf5
,
0x01
,
0x8d
,
0xa0
,
0x97
,
0x2d
,
0x97
,
0x82
,
0xca
,
0xf0
,
0x9e
,
0xba
,
0x36
,
0x27
,
0xf2
,
0xa7
,
0x03
,
0x81
,
0x9b
,
0x45
,
0xac
,
0xb3
,
0x54
,
0xd0
,
0x32
,
0xcd
,
0x22
,
0xdb
,
0xa4
,
0x55
,
0x1a
,
0x75
,
0xf0
,
0xa5
,
0x29
,
0xd9
,
0x32
,
0x93
,
0x09
,
0x0f
,
0xbb
,
0x9a
,
0xad
,
0x0e
,
0xe8
,
0x35
,
0x1c
,
0x99
,
0xca
,
0x45
,
0x78
,
0xff
,
0xac
,
0x7b
,
0xde
,
0x9f
,
0x0d
,
0x23
,
0x35
,
0x32
,
0xdb
,
0xa3
,
0x51
,
0x8d
,
0x2b
,
0x1a
,
0x79
,
0x07
,
0xe3
,
0x8f
,
0xd4
,
0x56
,
0xf3
,
0x59
,
0xb5
,
0x6b
,
0x1b
,
0x7b
,
0x02
,
0xc7
,
0x86
,
0xf6
,
0x35
,
0x4d
,
0x56
,
0x54
,
0x15
,
0xf6
,
0x30
,
0xee
,
0x9b
,
0xbb
,
0x4f
,
0xc5
,
0x15
,
0xf9
,
0x0d
,
0xe1
,
0x7e
,
0xb4
,
0x69
,
0xe8
,
0xf6
,
0x70
,
0xf4
,
0x16
,
0x06
,
0x96
,
0xa2
,
0x27
,
0xad
,
0xba
,
0xec
,
0xcf
,
0x02
,
0xb7
,
0x6a
,
0x93
,
0xf8
,
0x24
,
0xdf
,
0xd5
,
0x21
,
0xef
,
0x77
,
0xb5
,
0xe7
,
0x59
,
0x2a
,
0x69
,
0x2a
,
0xff
,
0xa3
,
0xf4
,
0x2b
,
0x98
,
0x34
,
0x84
,
0x9b
,
0xda
,
0xa7
,
0xf0
,
0xc0
,
0x70
,
0x55
,
0xa8
,
0x77
,
0x8e
,
0x96
,
0x45
,
0x46
,
0x10
,
0x5c
,
0xaf
,
0xbf
,
0x27
,
0x92
,
0x5a
,
0x44
,
0x17
,
0x42
,
0xc6
,
0x30
,
0xac
,
0xdd
,
0x6b
,
0x05
,
0xc2
,
0x61
,
0x78
,
0x99
,
0x16
,
0x4d
,
0x73
,
0xee
,
0x46
,
0xa0
,
0xa7
,
0x85
,
0x0f
,
0x4a
,
0xcb
,
0x1a
,
0xe1
,
0x53
,
0x2d
,
0xac
,
0x7d
,
0x3d
,
0x2f
,
0xbf
,
0xb1
,
0xc6
,
0xd1
,
0x05
,
0xf4
,
0xb6
,
0x09
,
0x2f
,
0x62
,
0xcc
,
0xd0
,
0x90
,
0xc3
,
0x54
,
0x7e
,
0x8f
,
0x0d
,
0x83
,
0x5c
,
0xc2
,
0xa8
,
0xae
,
0x76
,
0xd7
,
0x4e
,
0x27
,
0x30
,
0xbe
,
0x4e
,
0x59
,
0x53
,
0xe9
,
0x04
,
0x43
,
0xb8
,
0x0f
,
0x69
,
0x9d
,
0xd9
,
0xdf
,
0x43
,
0x18
,
0x58
,
0x9f
,
0xe8
,
0xfd
,
0x45
,
0x0c
,
0x8e
,
0x77
,
0x37
,
0x01
,
0x3d
,
0x8b
,
0x9a
,
0xd6
,
0x3b
,
0x6a
,
0xd8
,
0x39
,
0x7c
,
0xd1
,
0x86
,
0x6a
,
0x26
,
0x7d
,
0xf0
,
0xaa
,
0x83
,
0x04
,
0x3c
,
0xaa
,
0xfb
,
0x14
,
0xbd
,
0x6c
,
0xce
,
0xe1
,
0xd9
,
0x06
,
0x1c
,
0xb5
,
0xa5
,
0x5b
,
0x59
,
0xb4
,
0x85
,
0xd3
,
0x3d
,
0x87
,
0xa1
,
0x5b
,
0xd3
,
0xb8
,
0x4e
,
0xc6
,
0xd3
,
0xd6
,
0xfc
,
0x4a
,
0xf7
,
0x27
,
0x9c
,
0x38
,
0x9e
,
0x43
,
0x9e
,
0x69
,
0x35
,
0x19
,
0x16
,
0x3f
,
0x6f
,
0xc5
,
0xad
,
0xb4
,
0x56
,
0x30
,
0x70
,
0x8d
,
0x85
,
0x3c
,
0x09
,
0x1a
,
0xcd
,
0x8e
,
0x5f
,
0xb4
,
0x23
,
0x57
,
0x72
,
0xc5
,
0x3b
,
0xd6
,
0x1d
,
0xe6
,
0x7b
,
0x47
,
0x8f
,
0x49
,
0x7d
,
0xef
,
0xe8
,
0x33
,
0x2e
,
0x39
,
0xf8
,
0x00
,
0x5f
,
0x8e
,
0x2c
,
0xfb
,
0x5b
,
0x4f
,
0xfd
,
0x15
,
0xbc
,
0xf9
,
0x17
,
0x00
,
0x00
,
0xff
,
0xff
,
0x75
,
0xe1
,
0x2e
,
0x4f
,
0xa6
,
0x06
,
0x00
,
0x00
,
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment