summaryrefslogtreecommitdiffstats
path: root/vendor/github.com
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com')
-rw-r--r--vendor/github.com/d5/tengo/v2/README.md3
-rw-r--r--vendor/github.com/d5/tengo/v2/objects.go7
-rw-r--r--vendor/github.com/d5/tengo/v2/stdlib/source_modules.go2
-rw-r--r--vendor/github.com/d5/tengo/v2/stdlib/srcmod_enum.tengo3
-rw-r--r--vendor/github.com/gomarkdown/markdown/README.md20
-rw-r--r--vendor/github.com/gomarkdown/markdown/parser/block.go9
-rw-r--r--vendor/github.com/gomarkdown/markdown/parser/block_table.go15
-rw-r--r--vendor/github.com/gorilla/websocket/README.md39
-rw-r--r--vendor/github.com/gorilla/websocket/client.go77
-rw-r--r--vendor/github.com/gorilla/websocket/client_clone.go16
-rw-r--r--vendor/github.com/gorilla/websocket/client_clone_legacy.go38
-rw-r--r--vendor/github.com/gorilla/websocket/conn.go63
-rw-r--r--vendor/github.com/gorilla/websocket/conn_write.go15
-rw-r--r--vendor/github.com/gorilla/websocket/conn_write_legacy.go18
-rw-r--r--vendor/github.com/gorilla/websocket/mask.go1
-rw-r--r--vendor/github.com/gorilla/websocket/mask_safe.go1
-rw-r--r--vendor/github.com/gorilla/websocket/proxy.go2
-rw-r--r--vendor/github.com/gorilla/websocket/server.go8
-rw-r--r--vendor/github.com/gorilla/websocket/tls_handshake.go21
-rw-r--r--vendor/github.com/gorilla/websocket/tls_handshake_116.go21
-rw-r--r--vendor/github.com/gorilla/websocket/trace.go19
-rw-r--r--vendor/github.com/gorilla/websocket/trace_17.go12
-rw-r--r--vendor/github.com/harmony-development/shibshib/gen/chat/v1/chat_hrpc_client.pb.go3
-rw-r--r--vendor/github.com/harmony-development/shibshib/gen/chat/v1/guilds.pb.go1154
-rw-r--r--vendor/github.com/harmony-development/shibshib/gen/chat/v1/stream.pb.go1314
-rw-r--r--vendor/github.com/harmony-development/shibshib/gen/profile/v1/appdata.pb.go400
-rw-r--r--vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go1397
-rw-r--r--vendor/github.com/labstack/echo/v4/CHANGELOG.md21
-rw-r--r--vendor/github.com/labstack/echo/v4/README.md16
-rw-r--r--vendor/github.com/labstack/echo/v4/bind.go10
-rw-r--r--vendor/github.com/labstack/echo/v4/context.go32
-rw-r--r--vendor/github.com/labstack/echo/v4/context_fs.go33
-rw-r--r--vendor/github.com/labstack/echo/v4/context_fs_go1.16.go52
-rw-r--r--vendor/github.com/labstack/echo/v4/echo.go85
-rw-r--r--vendor/github.com/labstack/echo/v4/echo_fs.go62
-rw-r--r--vendor/github.com/labstack/echo/v4/echo_fs_go1.16.go145
-rw-r--r--vendor/github.com/labstack/echo/v4/group.go5
-rw-r--r--vendor/github.com/labstack/echo/v4/group_fs.go9
-rw-r--r--vendor/github.com/labstack/echo/v4/group_fs_go1.16.go33
-rw-r--r--vendor/github.com/labstack/echo/v4/ip.go142
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/cors.go69
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/csrf.go110
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/extractor.go184
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/jwt.go209
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/key_auth.go173
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/middleware.go4
-rw-r--r--vendor/github.com/labstack/echo/v4/middleware/recover.go21
-rw-r--r--vendor/github.com/labstack/echo/v4/router.go95
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/NOTICE.txt2
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/channel.go6
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/channel_count.go2
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/client4.go5
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/cloud.go26
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/config.go46
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/data_retention_policy.go2
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/feature_flags.go15
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/post.go6
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/post_list.go6
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/post_metadata.go2
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/post_search_results.go6
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/role.go2
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/session.go1
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/team_member.go1
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/user.go6
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/user_serial_gen.go34
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/utils.go27
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/model/version.go3
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/shared/filestore/s3_overrides.go2
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v6/shared/mlog/mlog.go4
-rw-r--r--vendor/github.com/slack-go/slack/README.md11
-rw-r--r--vendor/github.com/slack-go/slack/block_conv.go3
-rw-r--r--vendor/github.com/slack-go/slack/messages.go1
-rw-r--r--vendor/github.com/slack-go/slack/oauth.go10
-rw-r--r--vendor/github.com/slack-go/slack/webhooks_go112.go10
-rw-r--r--vendor/github.com/slack-go/slack/webhooks_go113.go10
75 files changed, 3904 insertions, 2533 deletions
diff --git a/vendor/github.com/d5/tengo/v2/README.md b/vendor/github.com/d5/tengo/v2/README.md
index c19c5699..aa9caa73 100644
--- a/vendor/github.com/d5/tengo/v2/README.md
+++ b/vendor/github.com/d5/tengo/v2/README.md
@@ -147,7 +147,4 @@ fmt.Println(res) // "success"
- Syntax Highlighters: [VSCode](https://github.com/lissein/vscode-tengo), [Atom](https://github.com/d5/tengo-atom)
- **Why the name Tengo?** It's from [1Q84](https://en.wikipedia.org/wiki/1Q84).
-##
-
-:hearts: Like writing Go code? Come work at Skool. [We're hiring!](https://jobs.lever.co/skool)
diff --git a/vendor/github.com/d5/tengo/v2/objects.go b/vendor/github.com/d5/tengo/v2/objects.go
index 30913db5..25745586 100644
--- a/vendor/github.com/d5/tengo/v2/objects.go
+++ b/vendor/github.com/d5/tengo/v2/objects.go
@@ -1577,9 +1577,8 @@ func (o *Undefined) Value() Object {
// UserFunction represents a user function.
type UserFunction struct {
ObjectImpl
- Name string
- Value CallableFunc
- EncodingID string
+ Name string
+ Value CallableFunc
}
// TypeName returns the name of the type.
@@ -1593,7 +1592,7 @@ func (o *UserFunction) String() string {
// Copy returns a copy of the type.
func (o *UserFunction) Copy() Object {
- return &UserFunction{Value: o.Value}
+ return &UserFunction{Value: o.Value, Name: o.Name}
}
// Equals returns true if the value of the type is equal to the value of
diff --git a/vendor/github.com/d5/tengo/v2/stdlib/source_modules.go b/vendor/github.com/d5/tengo/v2/stdlib/source_modules.go
index ca69d7d1..50e09287 100644
--- a/vendor/github.com/d5/tengo/v2/stdlib/source_modules.go
+++ b/vendor/github.com/d5/tengo/v2/stdlib/source_modules.go
@@ -4,5 +4,5 @@ package stdlib
// SourceModules are source type standard library modules.
var SourceModules = map[string]string{
- "enum": "is_enumerable := func(x) {\n return is_array(x) || is_map(x) || is_immutable_array(x) || is_immutable_map(x)\n}\n\nis_array_like := func(x) {\n return is_array(x) || is_immutable_array(x)\n}\n\nexport {\n // all returns true if the given function `fn` evaluates to a truthy value on\n // all of the items in `x`. It returns undefined if `x` is not enumerable.\n all: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if !fn(k, v) { return false }\n }\n\n return true\n },\n // any returns true if the given function `fn` evaluates to a truthy value on\n // any of the items in `x`. It returns undefined if `x` is not enumerable.\n any: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if fn(k, v) { return true }\n }\n\n return false\n },\n // chunk returns an array of elements split into groups the length of size.\n // If `x` can't be split evenly, the final chunk will be the remaining elements.\n // It returns undefined if `x` is not array.\n chunk: func(x, size) {\n if !is_array_like(x) || !size { return undefined }\n\n numElements := len(x)\n if !numElements { return [] }\n\n res := []\n idx := 0\n for idx < numElements {\n res = append(res, x[idx:idx+size])\n idx += size\n }\n\n return res\n },\n // at returns an element at the given index (if `x` is array) or\n // key (if `x` is map). It returns undefined if `x` is not enumerable.\n at: func(x, key) {\n if !is_enumerable(x) { return undefined }\n\n if is_array_like(x) {\n if !is_int(key) { return undefined }\n } else {\n if !is_string(key) { return undefined }\n }\n\n return x[key]\n },\n // each iterates over elements of `x` and invokes `fn` for each element. `fn` is\n // invoked with two arguments: `key` and `value`. `key` is an int index\n // if `x` is array. `key` is a string key if `x` is map. It does not iterate\n // and returns undefined if `x` is not enumerable.\n each: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n fn(k, v)\n }\n },\n // filter iterates over elements of `x`, returning an array of all elements `fn`\n // returns truthy for. `fn` is invoked with two arguments: `key` and `value`.\n // `key` is an int index if `x` is array. `key` is a string key if `x` is map.\n // It returns undefined if `x` is not enumerable.\n filter: func(x, fn) {\n if !is_array_like(x) { return undefined }\n\n dst := []\n for k, v in x {\n if fn(k, v) { dst = append(dst, v) }\n }\n\n return dst\n },\n // find iterates over elements of `x`, returning value of the first element `fn`\n // returns truthy for. `fn` is invoked with two arguments: `key` and `value`.\n // `key` is an int index if `x` is array. `key` is a string key if `x` is map.\n // It returns undefined if `x` is not enumerable.\n find: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if fn(k, v) { return v }\n }\n },\n // find_key iterates over elements of `x`, returning key or index of the first\n // element `fn` returns truthy for. `fn` is invoked with two arguments: `key`\n // and `value`. `key` is an int index if `x` is array. `key` is a string key if\n // `x` is map. It returns undefined if `x` is not enumerable.\n find_key: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if fn(k, v) { return k }\n }\n },\n // map creates an array of values by running each element in `x` through `fn`.\n // `fn` is invoked with two arguments: `key` and `value`. `key` is an int index\n // if `x` is array. `key` is a string key if `x` is map. It returns undefined\n // if `x` is not enumerable.\n map: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n dst := []\n for k, v in x {\n dst = append(dst, fn(k, v))\n }\n\n return dst\n },\n // key returns the first argument.\n key: func(k, _) { return k },\n // value returns the second argument.\n value: func(_, v) { return v }\n}\n",
+ "enum": "is_enumerable := func(x) {\n return is_array(x) || is_map(x) || is_immutable_array(x) || is_immutable_map(x)\n}\n\nis_array_like := func(x) {\n return is_array(x) || is_immutable_array(x)\n}\n\nexport {\n // all returns true if the given function `fn` evaluates to a truthy value on\n // all of the items in `x`. It returns undefined if `x` is not enumerable.\n all: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if !fn(k, v) { return false }\n }\n\n return true\n },\n // any returns true if the given function `fn` evaluates to a truthy value on\n // any of the items in `x`. It returns undefined if `x` is not enumerable.\n any: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if fn(k, v) { return true }\n }\n\n return false\n },\n // chunk returns an array of elements split into groups the length of size.\n // If `x` can't be split evenly, the final chunk will be the remaining elements.\n // It returns undefined if `x` is not array.\n chunk: func(x, size) {\n if !is_array_like(x) || !size { return undefined }\n\n numElements := len(x)\n if !numElements { return [] }\n\n res := []\n idx := 0\n for idx < numElements {\n res = append(res, x[idx:idx+size])\n idx += size\n }\n\n return res\n },\n // at returns an element at the given index (if `x` is array) or\n // key (if `x` is map). It returns undefined if `x` is not enumerable.\n at: func(x, key) {\n if !is_enumerable(x) { return undefined }\n\n if is_array_like(x) {\n if !is_int(key) { return undefined }\n } else {\n if !is_string(key) { return undefined }\n }\n\n return x[key]\n },\n // each iterates over elements of `x` and invokes `fn` for each element. `fn` is\n // invoked with two arguments: `key` and `value`. `key` is an int index\n // if `x` is array. `key` is a string key if `x` is map. It does not iterate\n // and returns undefined if `x` is not enumerable.\n each: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n fn(k, v)\n }\n },\n // filter iterates over elements of `x`, returning an array of all elements `fn`\n // returns truthy for. `fn` is invoked with two arguments: `key` and `value`.\n // `key` is an int index if `x` is array. It returns undefined if `x` is not array.\n filter: func(x, fn) {\n if !is_array_like(x) { return undefined }\n\n dst := []\n for k, v in x {\n if fn(k, v) { dst = append(dst, v) }\n }\n\n return dst\n },\n // find iterates over elements of `x`, returning value of the first element `fn`\n // returns truthy for. `fn` is invoked with two arguments: `key` and `value`.\n // `key` is an int index if `x` is array. `key` is a string key if `x` is map.\n // It returns undefined if `x` is not enumerable.\n find: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if fn(k, v) { return v }\n }\n },\n // find_key iterates over elements of `x`, returning key or index of the first\n // element `fn` returns truthy for. `fn` is invoked with two arguments: `key`\n // and `value`. `key` is an int index if `x` is array. `key` is a string key if\n // `x` is map. It returns undefined if `x` is not enumerable.\n find_key: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n for k, v in x {\n if fn(k, v) { return k }\n }\n },\n // map creates an array of values by running each element in `x` through `fn`.\n // `fn` is invoked with two arguments: `key` and `value`. `key` is an int index\n // if `x` is array. `key` is a string key if `x` is map. It returns undefined\n // if `x` is not enumerable.\n map: func(x, fn) {\n if !is_enumerable(x) { return undefined }\n\n dst := []\n for k, v in x {\n dst = append(dst, fn(k, v))\n }\n\n return dst\n },\n // key returns the first argument.\n key: func(k, _) { return k },\n // value returns the second argument.\n value: func(_, v) { return v }\n}\n",
}
diff --git a/vendor/github.com/d5/tengo/v2/stdlib/srcmod_enum.tengo b/vendor/github.com/d5/tengo/v2/stdlib/srcmod_enum.tengo
index 7a5ea637..1db13fea 100644
--- a/vendor/github.com/d5/tengo/v2/stdlib/srcmod_enum.tengo
+++ b/vendor/github.com/d5/tengo/v2/stdlib/srcmod_enum.tengo
@@ -73,8 +73,7 @@ export {
},
// filter iterates over elements of `x`, returning an array of all elements `fn`
// returns truthy for. `fn` is invoked with two arguments: `key` and `value`.
- // `key` is an int index if `x` is array. `key` is a string key if `x` is map.
- // It returns undefined if `x` is not enumerable.
+ // `key` is an int index if `x` is array. It returns undefined if `x` is not array.
filter: func(x, fn) {
if !is_array_like(x) { return undefined }
diff --git a/vendor/github.com/gomarkdown/markdown/README.md b/vendor/github.com/gomarkdown/markdown/README.md
index 7efc1919..91397534 100644
--- a/vendor/github.com/gomarkdown/markdown/README.md
+++ b/vendor/github.com/gomarkdown/markdown/README.md
@@ -1,6 +1,6 @@
# Markdown Parser and HTML Renderer for Go
-[![GoDoc](https://godoc.org/github.com/gomarkdown/markdown?status.svg)](https://godoc.org/github.com/gomarkdown/markdown) [![codecov](https://codecov.io/gh/gomarkdown/markdown/branch/master/graph/badge.svg)](https://codecov.io/gh/gomarkdown/markdown)
+[![pkg.go.dev](https://pkg.go.dev/badge/github.com/gomarkdown/markdown)](https://pkg.go.dev/badge/github.com/gomarkdown/markdown)
Package `github.com/gomarkdown/markdown` is a very fast Go library for parsing [Markdown](https://daringfireball.net/projects/markdown/) documents and rendering them to HTML.
@@ -8,10 +8,10 @@ It's fast and supports common extensions.
## API Docs:
-- https://godoc.org/github.com/gomarkdown/markdown : top level package
-- https://godoc.org/github.com/gomarkdown/markdown/ast : defines abstract syntax tree of parsed markdown document
-- https://godoc.org/github.com/gomarkdown/markdown/parser : parser
-- https://godoc.org/github.com/gomarkdown/markdown/html : html renderer
+- https://pkg.go.dev/github.com/gomarkdown/markdown : top level package
+- https://pkg.go.dev/github.com/gomarkdown/markdown/ast : defines abstract syntax tree of parsed markdown document
+- https://pkg.go.dev/github.com/gomarkdown/markdown/parser : parser
+- https://pkg.go.dev/github.com/gomarkdown/markdown/html : html renderer
## Users
@@ -40,7 +40,7 @@ output := markdown.ToHTML(md, nil, nil)
Markdown format is loosely specified and there are multiple extensions invented after original specification was created.
-The parser supports several [extensions](https://godoc.org/github.com/gomarkdown/markdown/parser#Extensions).
+The parser supports several [extensions](https://pkg.go.dev/github.com/gomarkdown/markdown/parser#Extensions).
Default parser uses most common `parser.CommonExtensions` but you can easily use parser with custom extension:
@@ -59,7 +59,7 @@ html := markdown.ToHTML(md, parser, nil)
## Customizing HTML renderer
-Similarly, HTML renderer can be configured with different [options](https://godoc.org/github.com/gomarkdown/markdown/html#RendererOptions)
+Similarly, HTML renderer can be configured with different [options](https://pkg.go.dev/github.com/gomarkdown/markdown/html#RendererOptions)
Here's how to use a custom renderer:
@@ -77,9 +77,9 @@ md := []byte("markdown text")
html := markdown.ToHTML(md, nil, renderer)
```
-HTML renderer also supports reusing most of the logic and overriding rendering of only specifc nodes.
+HTML renderer also supports reusing most of the logic and overriding rendering of only specific nodes.
-You can provide [RenderNodeFunc](https://godoc.org/github.com/gomarkdown/markdown/html#RenderNodeFunc) in [RendererOptions](https://godoc.org/github.com/gomarkdown/markdown/html#RendererOptions).
+You can provide [RenderNodeFunc](https://pkg.go.dev/github.com/gomarkdown/markdown/html#RenderNodeFunc) in [RendererOptions](https://pkg.go.dev/github.com/gomarkdown/markdown/html#RendererOptions).
The function is called for each node in AST, you can implement custom rendering logic and tell HTML renderer to skip rendering this node.
@@ -134,7 +134,7 @@ html := bluemonday.UGCPolicy().SanitizeBytes(maybeUnsafeHTML)
## Windows / Mac newlines
The library only supports Unix newlines. If you have markdown text with possibly
-Windows / Mac newlines, normalize newlines before caling this librar using
+Windows / Mac newlines, normalize newlines before calling this library using
`d = markdown.NormalizeNewlines(d)`
## mdtohtml command-line tool
diff --git a/vendor/github.com/gomarkdown/markdown/parser/block.go b/vendor/github.com/gomarkdown/markdown/parser/block.go
index 32194d9f..2b48d52d 100644
--- a/vendor/github.com/gomarkdown/markdown/parser/block.go
+++ b/vendor/github.com/gomarkdown/markdown/parser/block.go
@@ -1412,6 +1412,13 @@ gatherlines:
// is this a nested list item?
case (p.uliPrefix(chunk) > 0 && !p.isHRule(chunk)) || p.oliPrefix(chunk) > 0 || p.dliPrefix(chunk) > 0:
+ // if indent is 4 or more spaces on unordered or ordered lists
+ // we need to add leadingWhiteSpaces + 1 spaces in the beginning of the chunk
+ if indentIndex >= 4 && p.dliPrefix(chunk) <= 0 {
+ leadingWhiteSpaces := skipChar(chunk, 0, ' ')
+ chunk = data[ line+indentIndex - (leadingWhiteSpaces + 1) : i]
+ }
+
// to be a nested list, it must be indented more
// if not, it is either a different kind of list
// or the next item in the same list
@@ -1484,7 +1491,7 @@ gatherlines:
}
// add the line into the working buffer without prefix
- raw.Write(data[line+indentIndex : i])
+ raw.Write(chunk)
line = i
}
diff --git a/vendor/github.com/gomarkdown/markdown/parser/block_table.go b/vendor/github.com/gomarkdown/markdown/parser/block_table.go
index 53fbd471..0bf4f4ad 100644
--- a/vendor/github.com/gomarkdown/markdown/parser/block_table.go
+++ b/vendor/github.com/gomarkdown/markdown/parser/block_table.go
@@ -25,6 +25,11 @@ func (p *Parser) tableRow(data []byte, columns []ast.CellAlignFlags, header bool
cellStart := i
+ // If we are in a codespan we should discount any | we see, check for that here and skip ahead.
+ if isCode, _ := codeSpan(p, data[i:], 0); isCode > 0 {
+ i += isCode - 1
+ }
+
for i < n && (data[i] != '|' || isBackslashEscaped(data, i)) && data[i] != '\n' {
i++
}
@@ -84,6 +89,11 @@ func (p *Parser) tableFooter(data []byte) bool {
n := len(data)
i := skipCharN(data, 0, ' ', 3)
for ; i < n && data[i] != '\n'; i++ {
+ // If we are in a codespan we should discount any | we see, check for that here and skip ahead.
+ if isCode, _ := codeSpan(p, data[i:], 0); isCode > 0 {
+ i += isCode - 1
+ }
+
if data[i] == '|' && !isBackslashEscaped(data, i) {
colCount++
continue
@@ -111,6 +121,11 @@ func (p *Parser) tableHeader(data []byte, doRender bool) (size int, columns []as
headerIsUnderline := true
headerIsWithEmptyFields := true
for i = 0; i < len(data) && data[i] != '\n'; i++ {
+ // If we are in a codespan we should discount any | we see, check for that here and skip ahead.
+ if isCode, _ := codeSpan(p, data[i:], 0); isCode > 0 {
+ i += isCode - 1
+ }
+
if data[i] == '|' && !isBackslashEscaped(data, i) {
colCount++
}
diff --git a/vendor/github.com/gorilla/websocket/README.md b/vendor/github.com/gorilla/websocket/README.md
index 19aa2e75..2517a287 100644
--- a/vendor/github.com/gorilla/websocket/README.md
+++ b/vendor/github.com/gorilla/websocket/README.md
@@ -6,6 +6,13 @@
Gorilla WebSocket is a [Go](http://golang.org/) implementation of the
[WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol.
+
+---
+
+⚠️ **[The Gorilla WebSocket Package is looking for a new maintainer](https://github.com/gorilla/websocket/issues/370)**
+
+---
+
### Documentation
* [API Reference](https://pkg.go.dev/github.com/gorilla/websocket?tab=doc)
@@ -30,35 +37,3 @@ The Gorilla WebSocket package passes the server tests in the [Autobahn Test
Suite](https://github.com/crossbario/autobahn-testsuite) using the application in the [examples/autobahn
subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn).
-### Gorilla WebSocket compared with other packages
-
-<table>
-<tr>
-<th></th>
-<th><a href="http://godoc.org/github.com/gorilla/websocket">github.com/gorilla</a></th>
-<th><a href="http://godoc.org/golang.org/x/net/websocket">golang.org/x/net</a></th>
-</tr>
-<tr>
-<tr><td colspan="3"><a href="http://tools.ietf.org/html/rfc6455">RFC 6455</a> Features</td></tr>
-<tr><td>Passes <a href="https://github.com/crossbario/autobahn-testsuite">Autobahn Test Suite</a></td><td><a href="https://github.com/gorilla/websocket/tree/master/examples/autobahn">Yes</a></td><td>No</td></tr>
-<tr><td>Receive <a href="https://tools.ietf.org/html/rfc6455#section-5.4">fragmented</a> message<td>Yes</td><td><a href="https://code.google.com/p/go/issues/detail?id=7632">No</a>, see note 1</td></tr>
-<tr><td>Send <a href="https://tools.ietf.org/html/rfc6455#section-5.5.1">close</a> message</td><td><a href="http://godoc.org/github.com/gorilla/websocket#hdr-Control_Messages">Yes</a></td><td><a href="https://code.google.com/p/go/issues/detail?id=4588">No</a></td></tr>
-<tr><td>Send <a href="https://tools.ietf.org/html/rfc6455#section-5.5.2">pings</a> and receive <a href="https://tools.ietf.org/html/rfc6455#section-5.5.3">pongs</a></td><td><a href="http://godoc.org/github.com/gorilla/websocket#hdr-Control_Messages">Yes</a></td><td>No</td></tr>
-<tr><td>Get the <a href="https://tools.ietf.org/html/rfc6455#section-5.6">type</a> of a received data message</td><td>Yes</td><td>Yes, see note 2</td></tr>
-<tr><td colspan="3">Other Features</tr></td>
-<tr><td><a href="https://tools.ietf.org/html/rfc7692">Compression Extensions</a></td><td>Experimental</td><td>No</td></tr>
-<tr><td>Read message using io.Reader</td><td><a href="http://godoc.org/github.com/gorilla/websocket#Conn.NextReader">Yes</a></td><td>No, see note 3</td></tr>
-<tr><td>Write message using io.WriteCloser</td><td><a href="http://godoc.org/github.com/gorilla/websocket#Conn.NextWriter">Yes</a></td><td>No, see note 3</td></tr>
-</table>
-
-Notes:
-
-1. Large messages are fragmented in [Chrome's new WebSocket implementation](http://www.ietf.org/mail-archive/web/hybi/current/msg10503.html).
-2. The application can get the type of a received data message by implementing
- a [Codec marshal](http://godoc.org/golang.org/x/net/websocket#Codec.Marshal)
- function.
-3. The go.net io.Reader and io.Writer operate across WebSocket frame boundaries.
- Read returns when the input buffer is full or a frame boundary is
- encountered. Each call to Write sends a single frame message. The Gorilla
- io.Reader and io.WriteCloser operate on a single WebSocket message.
-
diff --git a/vendor/github.com/gorilla/websocket/client.go b/vendor/github.com/gorilla/websocket/client.go
index 962c06a3..2efd8355 100644
--- a/vendor/github.com/gorilla/websocket/client.go
+++ b/vendor/github.com/gorilla/websocket/client.go
@@ -48,15 +48,23 @@ func NewClient(netConn net.Conn, u *url.URL, requestHeader http.Header, readBufS
}
// A Dialer contains options for connecting to WebSocket server.
+//
+// It is safe to call Dialer's methods concurrently.
type Dialer struct {
// NetDial specifies the dial function for creating TCP connections. If
// NetDial is nil, net.Dial is used.
NetDial func(network, addr string) (net.Conn, error)
// NetDialContext specifies the dial function for creating TCP connections. If
- // NetDialContext is nil, net.DialContext is used.
+ // NetDialContext is nil, NetDial is used.
NetDialContext func(ctx context.Context, network, addr string) (net.Conn, error)
+ // NetDialTLSContext specifies the dial function for creating TLS/TCP connections. If
+ // NetDialTLSContext is nil, NetDialContext is used.
+ // If NetDialTLSContext is set, Dial assumes the TLS handshake is done there and
+ // TLSClientConfig is ignored.
+ NetDialTLSContext func(ctx context.Context, network, addr string) (net.Conn, error)
+
// Proxy specifies a function to return a proxy for a given
// Request. If the function returns a non-nil error, the
// request is aborted with the provided error.
@@ -65,6 +73,8 @@ type Dialer struct {
// TLSClientConfig specifies the TLS configuration to use with tls.Client.
// If nil, the default configuration is used.
+ // If either NetDialTLS or NetDialTLSContext are set, Dial assumes the TLS handshake
+ // is done there and TLSClientConfig is ignored.
TLSClientConfig *tls.Config
// HandshakeTimeout specifies the duration for the handshake to complete.
@@ -176,7 +186,7 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
}
req := &http.Request{
- Method: "GET",
+ Method: http.MethodGet,
URL: u,
Proto: "HTTP/1.1",
ProtoMajor: 1,
@@ -237,13 +247,32 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
// Get network dial function.
var netDial func(network, add string) (net.Conn, error)
- if d.NetDialContext != nil {
- netDial = func(network, addr string) (net.Conn, error) {
- return d.NetDialContext(ctx, network, addr)
+ switch u.Scheme {
+ case "http":
+ if d.NetDialContext != nil {
+ netDial = func(network, addr string) (net.Conn, error) {
+ return d.NetDialContext(ctx, network, addr)
+ }
+ } else if d.NetDial != nil {
+ netDial = d.NetDial
}
- } else if d.NetDial != nil {
- netDial = d.NetDial
- } else {
+ case "https":
+ if d.NetDialTLSContext != nil {
+ netDial = func(network, addr string) (net.Conn, error) {
+ return d.NetDialTLSContext(ctx, network, addr)
+ }
+ } else if d.NetDialContext != nil {
+ netDial = func(network, addr string) (net.Conn, error) {
+ return d.NetDialContext(ctx, network, addr)
+ }
+ } else if d.NetDial != nil {
+ netDial = d.NetDial
+ }
+ default:
+ return nil, nil, errMalformedURL
+ }
+
+ if netDial == nil {
netDialer := &net.Dialer{}
netDial = func(network, addr string) (net.Conn, error) {
return netDialer.DialContext(ctx, network, addr)
@@ -304,7 +333,9 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
}
}()
- if u.Scheme == "https" {
+ if u.Scheme == "https" && d.NetDialTLSContext == nil {
+ // If NetDialTLSContext is set, assume that the TLS handshake has already been done
+
cfg := cloneTLSConfig(d.TLSClientConfig)
if cfg.ServerName == "" {
cfg.ServerName = hostNoPort
@@ -312,11 +343,12 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
tlsConn := tls.Client(netConn, cfg)
netConn = tlsConn
- var err error
- if trace != nil {
- err = doHandshakeWithTrace(trace, tlsConn, cfg)
- } else {
- err = doHandshake(tlsConn, cfg)
+ if trace != nil && trace.TLSHandshakeStart != nil {
+ trace.TLSHandshakeStart()
+ }
+ err := doHandshake(ctx, tlsConn, cfg)
+ if trace != nil && trace.TLSHandshakeDone != nil {
+ trace.TLSHandshakeDone(tlsConn.ConnectionState(), err)
}
if err != nil {
@@ -348,8 +380,8 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
}
if resp.StatusCode != 101 ||
- !strings.EqualFold(resp.Header.Get("Upgrade"), "websocket") ||
- !strings.EqualFold(resp.Header.Get("Connection"), "upgrade") ||
+ !tokenListContainsValue(resp.Header, "Upgrade", "websocket") ||
+ !tokenListContainsValue(resp.Header, "Connection", "upgrade") ||
resp.Header.Get("Sec-Websocket-Accept") != computeAcceptKey(challengeKey) {
// Before closing the network connection on return from this
// function, slurp up some of the response to aid application
@@ -382,14 +414,9 @@ func (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader h
return conn, resp, nil
}
-func doHandshake(tlsConn *tls.Conn, cfg *tls.Config) error {
- if err := tlsConn.Handshake(); err != nil {
- return err
- }
- if !cfg.InsecureSkipVerify {
- if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil {
- return err
- }
+func cloneTLSConfig(cfg *tls.Config) *tls.Config {
+ if cfg == nil {
+ return &tls.Config{}
}
- return nil
+ return cfg.Clone()
}
diff --git a/vendor/github.com/gorilla/websocket/client_clone.go b/vendor/github.com/gorilla/websocket/client_clone.go
deleted file mode 100644
index 4f0d9437..00000000
--- a/vendor/github.com/gorilla/websocket/client_clone.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.8
-
-package websocket
-
-import "crypto/tls"
-
-func cloneTLSConfig(cfg *tls.Config) *tls.Config {
- if cfg == nil {
- return &tls.Config{}
- }
- return cfg.Clone()
-}
diff --git a/vendor/github.com/gorilla/websocket/client_clone_legacy.go b/vendor/github.com/gorilla/websocket/client_clone_legacy.go
deleted file mode 100644
index babb007f..00000000
--- a/vendor/github.com/gorilla/websocket/client_clone_legacy.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.8
-
-package websocket
-
-import "crypto/tls"
-
-// cloneTLSConfig clones all public fields except the fields
-// SessionTicketsDisabled and SessionTicketKey. This avoids copying the
-// sync.Mutex in the sync.Once and makes it safe to call cloneTLSConfig on a
-// config in active use.
-func cloneTLSConfig(cfg *tls.Config) *tls.Config {
- if cfg == nil {
- return &tls.Config{}
- }
- return &tls.Config{
- Rand: cfg.Rand,
- Time: cfg.Time,
- Certificates: cfg.Certificates,
- NameToCertificate: cfg.NameToCertificate,
- GetCertificate: cfg.GetCertificate,
- RootCAs: cfg.RootCAs,
- NextProtos: cfg.NextProtos,
- ServerName: cfg.ServerName,
- ClientAuth: cfg.ClientAuth,
- ClientCAs: cfg.ClientCAs,
- InsecureSkipVerify: cfg.InsecureSkipVerify,
- CipherSuites: cfg.CipherSuites,
- PreferServerCipherSuites: cfg.PreferServerCipherSuites,
- ClientSessionCache: cfg.ClientSessionCache,
- MinVersion: cfg.MinVersion,
- MaxVersion: cfg.MaxVersion,
- CurvePreferences: cfg.CurvePreferences,
- }
-}
diff --git a/vendor/github.com/gorilla/websocket/conn.go b/vendor/github.com/gorilla/websocket/conn.go
index ca46d2f7..331eebc8 100644
--- a/vendor/github.com/gorilla/websocket/conn.go
+++ b/vendor/github.com/gorilla/websocket/conn.go
@@ -13,6 +13,7 @@ import (
"math/rand"
"net"
"strconv"
+ "strings"
"sync"
"time"
"unicode/utf8"
@@ -401,6 +402,12 @@ func (c *Conn) write(frameType int, deadline time.Time, buf0, buf1 []byte) error
return nil
}
+func (c *Conn) writeBufs(bufs ...[]byte) error {
+ b := net.Buffers(bufs)
+ _, err := b.WriteTo(c.conn)
+ return err
+}
+
// WriteControl writes a control message with the given deadline. The allowed
// message types are CloseMessage, PingMessage and PongMessage.
func (c *Conn) WriteControl(messageType int, data []byte, deadline time.Time) error {
@@ -794,47 +801,69 @@ func (c *Conn) advanceFrame() (int, error) {
}
// 2. Read and parse first two bytes of frame header.
+ // To aid debugging, collect and report all errors in the first two bytes
+ // of the header.
+
+ var errors []string
p, err := c.read(2)
if err != nil {
return noFrame, err
}
- final := p[0]&finalBit != 0
frameType := int(p[0] & 0xf)
+ final := p[0]&finalBit != 0
+ rsv1 := p[0]&rsv1Bit != 0
+ rsv2 := p[0]&rsv2Bit != 0
+ rsv3 := p[0]&rsv3Bit != 0
mask := p[1]&maskBit != 0
c.setReadRemaining(int64(p[1] & 0x7f))
c.readDecompress = false
- if c.newDecompressionReader != nil && (p[0]&rsv1Bit) != 0 {
- c.readDecompress = true
- p[0] &^= rsv1Bit
+ if rsv1 {
+ if c.newDecompressionReader != nil {
+ c.readDecompress = true
+ } else {
+ errors = append(errors, "RSV1 set")
+ }
+ }
+
+ if rsv2 {
+ errors = append(errors, "RSV2 set")
}
- if rsv := p[0] & (rsv1Bit | rsv2Bit | rsv3Bit); rsv != 0 {
- return noFrame, c.handleProtocolError("unexpected reserved bits 0x" + strconv.FormatInt(int64(rsv), 16))
+ if rsv3 {
+ errors = append(errors, "RSV3 set")
}
switch frameType {
case CloseMessage, PingMessage, PongMessage:
if c.readRemaining > maxControlFramePayloadSize {
- return noFrame, c.handleProtocolError("control frame length > 125")
+ errors = append(errors, "len > 125 for control")
}
if !final {
- return noFrame, c.handleProtocolError("control frame not final")
+ errors = append(errors, "FIN not set on control")
}
case TextMessage, BinaryMessage:
if !c.readFinal {
- return noFrame, c.handleProtocolError("message start before final message frame")
+ errors = append(errors, "data before FIN")
}
c.readFinal = final
case continuationFrame:
if c.readFinal {
- return noFrame, c.handleProtocolError("continuation after final message frame")
+ errors = append(errors, "continuation after FIN")
}
c.readFinal = final
default:
- return noFrame, c.handleProtocolError("unknown opcode " + strconv.Itoa(frameType))
+ errors = append(errors, "bad opcode "+strconv.Itoa(frameType))
+ }
+
+ if mask != c.isServer {
+ errors = append(errors, "bad MASK")
+ }
+
+ if len(errors) > 0 {
+ return noFrame, c.handleProtocolError(strings.Join(errors, ", "))
}
// 3. Read and parse frame length as per
@@ -872,10 +901,6 @@ func (c *Conn) advanceFrame() (int, error) {
// 4. Handle frame masking.
- if mask != c.isServer {
- return noFrame, c.handleProtocolError("incorrect mask flag")
- }
-
if mask {
c.readMaskPos = 0
p, err := c.read(len(c.readMaskKey))
@@ -935,7 +960,7 @@ func (c *Conn) advanceFrame() (int, error) {
if len(payload) >= 2 {
closeCode = int(binary.BigEndian.Uint16(payload))
if !isValidReceivedCloseCode(closeCode) {
- return noFrame, c.handleProtocolError("invalid close code")
+ return noFrame, c.handleProtocolError("bad close code " + strconv.Itoa(closeCode))
}
closeText = string(payload[2:])
if !utf8.ValidString(closeText) {
@@ -952,7 +977,11 @@ func (c *Conn) advanceFrame() (int, error) {
}
func (c *Conn) handleProtocolError(message string) error {
- c.WriteControl(CloseMessage, FormatCloseMessage(CloseProtocolError, message), time.Now().Add(writeWait))
+ data := FormatCloseMessage(CloseProtocolError, message)
+ if len(data) > maxControlFramePayloadSize {
+ data = data[:maxControlFramePayloadSize]
+ }
+ c.WriteControl(CloseMessage, data, time.Now().Add(writeWait))
return errors.New("websocket: " + message)
}
diff --git a/vendor/github.com/gorilla/websocket/conn_write.go b/vendor/github.com/gorilla/websocket/conn_write.go
deleted file mode 100644
index a509a21f..00000000
--- a/vendor/github.com/gorilla/websocket/conn_write.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build go1.8
-
-package websocket
-
-import "net"
-
-func (c *Conn) writeBufs(bufs ...[]byte) error {
- b := net.Buffers(bufs)
- _, err := b.WriteTo(c.conn)
- return err
-}
diff --git a/vendor/github.com/gorilla/websocket/conn_write_legacy.go b/vendor/github.com/gorilla/websocket/conn_write_legacy.go
deleted file mode 100644
index 37edaff5..00000000
--- a/vendor/github.com/gorilla/websocket/conn_write_legacy.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !go1.8
-
-package websocket
-
-func (c *Conn) writeBufs(bufs ...[]byte) error {
- for _, buf := range bufs {
- if len(buf) > 0 {
- if _, err := c.conn.Write(buf); err != nil {
- return err
- }
- }
- }
- return nil
-}
diff --git a/vendor/github.com/gorilla/websocket/mask.go b/vendor/github.com/gorilla/websocket/mask.go
index 577fce9e..d0742bf2 100644
--- a/vendor/github.com/gorilla/websocket/mask.go
+++ b/vendor/github.com/gorilla/websocket/mask.go
@@ -2,6 +2,7 @@
// this source code is governed by a BSD-style license that can be found in the
// LICENSE file.
+//go:build !appengine
// +build !appengine
package websocket
diff --git a/vendor/github.com/gorilla/websocket/mask_safe.go b/vendor/github.com/gorilla/websocket/mask_safe.go
index 2aac060e..36250ca7 100644
--- a/vendor/github.com/gorilla/websocket/mask_safe.go
+++ b/vendor/github.com/gorilla/websocket/mask_safe.go
@@ -2,6 +2,7 @@
// this source code is governed by a BSD-style license that can be found in the
// LICENSE file.
+//go:build appengine
// +build appengine
package websocket
diff --git a/vendor/github.com/gorilla/websocket/proxy.go b/vendor/github.com/gorilla/websocket/proxy.go
index e87a8c9f..e0f466b7 100644
--- a/vendor/github.com/gorilla/websocket/proxy.go
+++ b/vendor/github.com/gorilla/websocket/proxy.go
@@ -48,7 +48,7 @@ func (hpd *httpProxyDialer) Dial(network string, addr string) (net.Conn, error)
}
connectReq := &http.Request{
- Method: "CONNECT",
+ Method: http.MethodConnect,
URL: &url.URL{Opaque: addr},
Host: addr,
Header: connectHeader,
diff --git a/vendor/github.com/gorilla/websocket/server.go b/vendor/github.com/gorilla/websocket/server.go
index 887d5589..24d53b38 100644
--- a/vendor/github.com/gorilla/websocket/server.go
+++ b/vendor/github.com/gorilla/websocket/server.go
@@ -23,6 +23,8 @@ func (e HandshakeError) Error() string { return e.message }
// Upgrader specifies parameters for upgrading an HTTP connection to a
// WebSocket connection.
+//
+// It is safe to call Upgrader's methods concurrently.
type Upgrader struct {
// HandshakeTimeout specifies the duration for the handshake to complete.
HandshakeTimeout time.Duration
@@ -115,8 +117,8 @@ func (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header
// Upgrade upgrades the HTTP server connection to the WebSocket protocol.
//
// The responseHeader is included in the response to the client's upgrade
-// request. Use the responseHeader to specify cookies (Set-Cookie) and the
-// application negotiated subprotocol (Sec-WebSocket-Protocol).
+// request. Use the responseHeader to specify cookies (Set-Cookie). To specify
+// subprotocols supported by the server, set Upgrader.Subprotocols directly.
//
// If the upgrade fails, then Upgrade replies to the client with an HTTP error
// response.
@@ -131,7 +133,7 @@ func (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeade
return u.returnError(w, r, http.StatusBadRequest, badHandshake+"'websocket' token not found in 'Upgrade' header")
}
- if r.Method != "GET" {
+ if r.Method != http.MethodGet {
return u.returnError(w, r, http.StatusMethodNotAllowed, badHandshake+"request method is not GET")
}
diff --git a/vendor/github.com/gorilla/websocket/tls_handshake.go b/vendor/github.com/gorilla/websocket/tls_handshake.go
new file mode 100644
index 00000000..a62b68cc
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/tls_handshake.go
@@ -0,0 +1,21 @@
+//go:build go1.17
+// +build go1.17
+
+package websocket
+
+import (
+ "context"
+ "crypto/tls"
+)
+
+func doHandshake(ctx context.Context, tlsConn *tls.Conn, cfg *tls.Config) error {
+ if err := tlsConn.HandshakeContext(ctx); err != nil {
+ return err
+ }
+ if !cfg.InsecureSkipVerify {
+ if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/gorilla/websocket/tls_handshake_116.go b/vendor/github.com/gorilla/websocket/tls_handshake_116.go
new file mode 100644
index 00000000..e1b2b44f
--- /dev/null
+++ b/vendor/github.com/gorilla/websocket/tls_handshake_116.go
@@ -0,0 +1,21 @@
+//go:build !go1.17
+// +build !go1.17
+
+package websocket
+
+import (
+ "context"
+ "crypto/tls"
+)
+
+func doHandshake(ctx context.Context, tlsConn *tls.Conn, cfg *tls.Config) error {
+ if err := tlsConn.Handshake(); err != nil {
+ return err
+ }
+ if !cfg.InsecureSkipVerify {
+ if err := tlsConn.VerifyHostname(cfg.ServerName); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/gorilla/websocket/trace.go b/vendor/github.com/gorilla/websocket/trace.go
deleted file mode 100644
index 834f122a..00000000
--- a/vendor/github.com/gorilla/websocket/trace.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// +build go1.8
-
-package websocket
-
-import (
- "crypto/tls"
- "net/http/httptrace"
-)
-
-func doHandshakeWithTrace(trace *httptrace.ClientTrace, tlsConn *tls.Conn, cfg *tls.Config) error {
- if trace.TLSHandshakeStart != nil {
- trace.TLSHandshakeStart()
- }
- err := doHandshake(tlsConn, cfg)
- if trace.TLSHandshakeDone != nil {
- trace.TLSHandshakeDone(tlsConn.ConnectionState(), err)
- }
- return err
-}
diff --git a/vendor/github.com/gorilla/websocket/trace_17.go b/vendor/github.com/gorilla/websocket/trace_17.go
deleted file mode 100644
index 77d05a0b..00000000
--- a/vendor/github.com/gorilla/websocket/trace_17.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// +build !go1.8
-
-package websocket
-
-import (
- "crypto/tls"
- "net/http/httptrace"
-)
-
-func doHandshakeWithTrace(trace *httptrace.ClientTrace, tlsConn *tls.Conn, cfg *tls.Config) error {
- return doHandshake(tlsConn, cfg)
-}
diff --git a/vendor/github.com/harmony-development/shibshib/gen/chat/v1/chat_hrpc_client.pb.go b/vendor/github.com/harmony-development/shibshib/gen/chat/v1/chat_hrpc_client.pb.go
index 62c02415..bb2ebde9 100644
--- a/vendor/github.com/harmony-development/shibshib/gen/chat/v1/chat_hrpc_client.pb.go
+++ b/vendor/github.com/harmony-development/shibshib/gen/chat/v1/chat_hrpc_client.pb.go
@@ -156,6 +156,9 @@ type ChatServiceClient interface {
// Endpoint to unpin a message in a guild channel.
UnpinMessage(context.Context, *UnpinMessageRequest) (*UnpinMessageResponse, error)
// Endpoint to stream events from the homeserver.
+ // By default, this endpoint will subscribe to all events.
+ // Any guilds joined in the future will be added to the subscription as well.
+ // Use the UnsubscribeFromAll event for unsubscribing from all current subscriptions and disable the automatic guild subscriptions
StreamEvents(context.Context, chan *StreamEventsRequest) (chan *StreamEventsResponse, error)
// Endpoint to add a reaction to a message.
AddReaction(context.Context, *AddReactionRequest) (*AddReactionResponse, error)
diff --git a/vendor/github.com/harmony-development/shibshib/gen/chat/v1/guilds.pb.go b/vendor/github.com/harmony-development/shibshib/gen/chat/v1/guilds.pb.go
index b60867fb..0ffc53c8 100644
--- a/vendor/github.com/harmony-development/shibshib/gen/chat/v1/guilds.pb.go
+++ b/vendor/github.com/harmony-development/shibshib/gen/chat/v1/guilds.pb.go
@@ -268,6 +268,64 @@ func (x *Guild) GetMetadata() *v1.Metadata {
return nil
}
+// Object representing a guild with the ID part.
+type GuildWithId struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The ID of the guild.
+ GuildId uint64 `protobuf:"varint,1,opt,name=guild_id,json=guildId,proto3" json:"guild_id,omitempty"`
+ // The guild.
+ Guild *Guild `protobuf:"bytes,2,opt,name=guild,proto3" json:"guild,omitempty"`
+}
+
+func (x *GuildWithId) Reset() {
+ *x = GuildWithId{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_chat_v1_guilds_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *GuildWithId) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GuildWithId) ProtoMessage() {}
+
+func (x *GuildWithId) ProtoReflect() protoreflect.Message {
+ mi := &file_chat_v1_guilds_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GuildWithId.ProtoReflect.Descriptor instead.
+func (*GuildWithId) Descriptor() ([]byte, []int) {
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *GuildWithId) GetGuildId() uint64 {
+ if x != nil {
+ return x.GuildId
+ }
+ return 0
+}
+
+func (x *GuildWithId) GetGuild() *Guild {
+ if x != nil {
+ return x.Guild
+ }
+ return nil
+}
+
// Object representing an invite without the ID part.
type Invite struct {
state protoimpl.MessageState
@@ -283,7 +341,7 @@ type Invite struct {
func (x *Invite) Reset() {
*x = Invite{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[2]
+ mi := &file_chat_v1_guilds_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -296,7 +354,7 @@ func (x *Invite) String() string {
func (*Invite) ProtoMessage() {}
func (x *Invite) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[2]
+ mi := &file_chat_v1_guilds_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -309,7 +367,7 @@ func (x *Invite) ProtoReflect() protoreflect.Message {
// Deprecated: Use Invite.ProtoReflect.Descriptor instead.
func (*Invite) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{2}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{3}
}
func (x *Invite) GetPossibleUses() uint32 {
@@ -341,7 +399,7 @@ type InviteWithId struct {
func (x *InviteWithId) Reset() {
*x = InviteWithId{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[3]
+ mi := &file_chat_v1_guilds_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -354,7 +412,7 @@ func (x *InviteWithId) String() string {
func (*InviteWithId) ProtoMessage() {}
func (x *InviteWithId) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[3]
+ mi := &file_chat_v1_guilds_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -367,7 +425,7 @@ func (x *InviteWithId) ProtoReflect() protoreflect.Message {
// Deprecated: Use InviteWithId.ProtoReflect.Descriptor instead.
func (*InviteWithId) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{3}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{4}
}
func (x *InviteWithId) GetInviteId() string {
@@ -401,7 +459,7 @@ type PendingInvite struct {
func (x *PendingInvite) Reset() {
*x = PendingInvite{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[4]
+ mi := &file_chat_v1_guilds_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -414,7 +472,7 @@ func (x *PendingInvite) String() string {
func (*PendingInvite) ProtoMessage() {}
func (x *PendingInvite) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[4]
+ mi := &file_chat_v1_guilds_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -427,7 +485,7 @@ func (x *PendingInvite) ProtoReflect() protoreflect.Message {
// Deprecated: Use PendingInvite.ProtoReflect.Descriptor instead.
func (*PendingInvite) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{4}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{5}
}
func (x *PendingInvite) GetInviteId() string {
@@ -466,7 +524,7 @@ type GuildListEntry struct {
func (x *GuildListEntry) Reset() {
*x = GuildListEntry{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[5]
+ mi := &file_chat_v1_guilds_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -479,7 +537,7 @@ func (x *GuildListEntry) String() string {
func (*GuildListEntry) ProtoMessage() {}
func (x *GuildListEntry) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[5]
+ mi := &file_chat_v1_guilds_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -492,7 +550,7 @@ func (x *GuildListEntry) ProtoReflect() protoreflect.Message {
// Deprecated: Use GuildListEntry.ProtoReflect.Descriptor instead.
func (*GuildListEntry) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{5}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{6}
}
func (x *GuildListEntry) GetGuildId() uint64 {
@@ -526,7 +584,7 @@ type CreateGuildRequest struct {
func (x *CreateGuildRequest) Reset() {
*x = CreateGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[6]
+ mi := &file_chat_v1_guilds_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -539,7 +597,7 @@ func (x *CreateGuildRequest) String() string {
func (*CreateGuildRequest) ProtoMessage() {}
func (x *CreateGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[6]
+ mi := &file_chat_v1_guilds_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -552,7 +610,7 @@ func (x *CreateGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateGuildRequest.ProtoReflect.Descriptor instead.
func (*CreateGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{6}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{7}
}
func (x *CreateGuildRequest) GetName() string {
@@ -589,7 +647,7 @@ type CreateGuildResponse struct {
func (x *CreateGuildResponse) Reset() {
*x = CreateGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[7]
+ mi := &file_chat_v1_guilds_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -602,7 +660,7 @@ func (x *CreateGuildResponse) String() string {
func (*CreateGuildResponse) ProtoMessage() {}
func (x *CreateGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[7]
+ mi := &file_chat_v1_guilds_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -615,7 +673,7 @@ func (x *CreateGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateGuildResponse.ProtoReflect.Descriptor instead.
func (*CreateGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{7}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{8}
}
func (x *CreateGuildResponse) GetGuildId() uint64 {
@@ -642,7 +700,7 @@ type CreateRoomRequest struct {
func (x *CreateRoomRequest) Reset() {
*x = CreateRoomRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[8]
+ mi := &file_chat_v1_guilds_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -655,7 +713,7 @@ func (x *CreateRoomRequest) String() string {
func (*CreateRoomRequest) ProtoMessage() {}
func (x *CreateRoomRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[8]
+ mi := &file_chat_v1_guilds_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -668,7 +726,7 @@ func (x *CreateRoomRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateRoomRequest.ProtoReflect.Descriptor instead.
func (*CreateRoomRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{8}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{9}
}
func (x *CreateRoomRequest) GetName() string {
@@ -705,7 +763,7 @@ type CreateRoomResponse struct {
func (x *CreateRoomResponse) Reset() {
*x = CreateRoomResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[9]
+ mi := &file_chat_v1_guilds_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -718,7 +776,7 @@ func (x *CreateRoomResponse) String() string {
func (*CreateRoomResponse) ProtoMessage() {}
func (x *CreateRoomResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[9]
+ mi := &file_chat_v1_guilds_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -731,7 +789,7 @@ func (x *CreateRoomResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateRoomResponse.ProtoReflect.Descriptor instead.
func (*CreateRoomResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{9}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{10}
}
func (x *CreateRoomResponse) GetGuildId() uint64 {
@@ -758,7 +816,7 @@ type CreateDirectMessageRequest struct {
func (x *CreateDirectMessageRequest) Reset() {
*x = CreateDirectMessageRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[10]
+ mi := &file_chat_v1_guilds_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -771,7 +829,7 @@ func (x *CreateDirectMessageRequest) String() string {
func (*CreateDirectMessageRequest) ProtoMessage() {}
func (x *CreateDirectMessageRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[10]
+ mi := &file_chat_v1_guilds_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -784,7 +842,7 @@ func (x *CreateDirectMessageRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateDirectMessageRequest.ProtoReflect.Descriptor instead.
func (*CreateDirectMessageRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{10}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{11}
}
func (x *CreateDirectMessageRequest) GetUserName() string {
@@ -814,7 +872,7 @@ type CreateDirectMessageResponse struct {
func (x *CreateDirectMessageResponse) Reset() {
*x = CreateDirectMessageResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[11]
+ mi := &file_chat_v1_guilds_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -827,7 +885,7 @@ func (x *CreateDirectMessageResponse) String() string {
func (*CreateDirectMessageResponse) ProtoMessage() {}
func (x *CreateDirectMessageResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[11]
+ mi := &file_chat_v1_guilds_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -840,7 +898,7 @@ func (x *CreateDirectMessageResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateDirectMessageResponse.ProtoReflect.Descriptor instead.
func (*CreateDirectMessageResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{11}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{12}
}
func (x *CreateDirectMessageResponse) GetGuildId() uint64 {
@@ -869,7 +927,7 @@ type CreateInviteRequest struct {
func (x *CreateInviteRequest) Reset() {
*x = CreateInviteRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[12]
+ mi := &file_chat_v1_guilds_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -882,7 +940,7 @@ func (x *CreateInviteRequest) String() string {
func (*CreateInviteRequest) ProtoMessage() {}
func (x *CreateInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[12]
+ mi := &file_chat_v1_guilds_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -895,7 +953,7 @@ func (x *CreateInviteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateInviteRequest.ProtoReflect.Descriptor instead.
func (*CreateInviteRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{12}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{13}
}
func (x *CreateInviteRequest) GetGuildId() uint64 {
@@ -932,7 +990,7 @@ type CreateInviteResponse struct {
func (x *CreateInviteResponse) Reset() {
*x = CreateInviteResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[13]
+ mi := &file_chat_v1_guilds_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -945,7 +1003,7 @@ func (x *CreateInviteResponse) String() string {
func (*CreateInviteResponse) ProtoMessage() {}
func (x *CreateInviteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[13]
+ mi := &file_chat_v1_guilds_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -958,7 +1016,7 @@ func (x *CreateInviteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateInviteResponse.ProtoReflect.Descriptor instead.
func (*CreateInviteResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{13}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{14}
}
func (x *CreateInviteResponse) GetInviteId() string {
@@ -978,7 +1036,7 @@ type GetGuildListRequest struct {
func (x *GetGuildListRequest) Reset() {
*x = GetGuildListRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[14]
+ mi := &file_chat_v1_guilds_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -991,7 +1049,7 @@ func (x *GetGuildListRequest) String() string {
func (*GetGuildListRequest) ProtoMessage() {}
func (x *GetGuildListRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[14]
+ mi := &file_chat_v1_guilds_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1004,7 +1062,7 @@ func (x *GetGuildListRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildListRequest.ProtoReflect.Descriptor instead.
func (*GetGuildListRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{14}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{15}
}
// Used in the `GetGuildList` endpoint.
@@ -1020,7 +1078,7 @@ type GetGuildListResponse struct {
func (x *GetGuildListResponse) Reset() {
*x = GetGuildListResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[15]
+ mi := &file_chat_v1_guilds_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1033,7 +1091,7 @@ func (x *GetGuildListResponse) String() string {
func (*GetGuildListResponse) ProtoMessage() {}
func (x *GetGuildListResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[15]
+ mi := &file_chat_v1_guilds_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1046,7 +1104,7 @@ func (x *GetGuildListResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildListResponse.ProtoReflect.Descriptor instead.
func (*GetGuildListResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{15}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{16}
}
func (x *GetGuildListResponse) GetGuilds() []*GuildListEntry {
@@ -1069,7 +1127,7 @@ type GetGuildRequest struct {
func (x *GetGuildRequest) Reset() {
*x = GetGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[16]
+ mi := &file_chat_v1_guilds_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1082,7 +1140,7 @@ func (x *GetGuildRequest) String() string {
func (*GetGuildRequest) ProtoMessage() {}
func (x *GetGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[16]
+ mi := &file_chat_v1_guilds_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1095,7 +1153,7 @@ func (x *GetGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildRequest.ProtoReflect.Descriptor instead.
func (*GetGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{16}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{17}
}
func (x *GetGuildRequest) GetGuildId() uint64 {
@@ -1118,7 +1176,7 @@ type GetGuildResponse struct {
func (x *GetGuildResponse) Reset() {
*x = GetGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[17]
+ mi := &file_chat_v1_guilds_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1131,7 +1189,7 @@ func (x *GetGuildResponse) String() string {
func (*GetGuildResponse) ProtoMessage() {}
func (x *GetGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[17]
+ mi := &file_chat_v1_guilds_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1144,7 +1202,7 @@ func (x *GetGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildResponse.ProtoReflect.Descriptor instead.
func (*GetGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{17}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{18}
}
func (x *GetGuildResponse) GetGuild() *Guild {
@@ -1167,7 +1225,7 @@ type GetGuildInvitesRequest struct {
func (x *GetGuildInvitesRequest) Reset() {
*x = GetGuildInvitesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[18]
+ mi := &file_chat_v1_guilds_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1180,7 +1238,7 @@ func (x *GetGuildInvitesRequest) String() string {
func (*GetGuildInvitesRequest) ProtoMessage() {}
func (x *GetGuildInvitesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[18]
+ mi := &file_chat_v1_guilds_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1193,7 +1251,7 @@ func (x *GetGuildInvitesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildInvitesRequest.ProtoReflect.Descriptor instead.
func (*GetGuildInvitesRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{18}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{19}
}
func (x *GetGuildInvitesRequest) GetGuildId() uint64 {
@@ -1216,7 +1274,7 @@ type GetGuildInvitesResponse struct {
func (x *GetGuildInvitesResponse) Reset() {
*x = GetGuildInvitesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[19]
+ mi := &file_chat_v1_guilds_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1229,7 +1287,7 @@ func (x *GetGuildInvitesResponse) String() string {
func (*GetGuildInvitesResponse) ProtoMessage() {}
func (x *GetGuildInvitesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[19]
+ mi := &file_chat_v1_guilds_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1242,7 +1300,7 @@ func (x *GetGuildInvitesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildInvitesResponse.ProtoReflect.Descriptor instead.
func (*GetGuildInvitesResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{19}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{20}
}
func (x *GetGuildInvitesResponse) GetInvites() []*InviteWithId {
@@ -1265,7 +1323,7 @@ type GetGuildMembersRequest struct {
func (x *GetGuildMembersRequest) Reset() {
*x = GetGuildMembersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[20]
+ mi := &file_chat_v1_guilds_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1278,7 +1336,7 @@ func (x *GetGuildMembersRequest) String() string {
func (*GetGuildMembersRequest) ProtoMessage() {}
func (x *GetGuildMembersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[20]
+ mi := &file_chat_v1_guilds_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1291,7 +1349,7 @@ func (x *GetGuildMembersRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildMembersRequest.ProtoReflect.Descriptor instead.
func (*GetGuildMembersRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{20}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{21}
}
func (x *GetGuildMembersRequest) GetGuildId() uint64 {
@@ -1314,7 +1372,7 @@ type GetGuildMembersResponse struct {
func (x *GetGuildMembersResponse) Reset() {
*x = GetGuildMembersResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[21]
+ mi := &file_chat_v1_guilds_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1327,7 +1385,7 @@ func (x *GetGuildMembersResponse) String() string {
func (*GetGuildMembersResponse) ProtoMessage() {}
func (x *GetGuildMembersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[21]
+ mi := &file_chat_v1_guilds_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1340,7 +1398,7 @@ func (x *GetGuildMembersResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetGuildMembersResponse.ProtoReflect.Descriptor instead.
func (*GetGuildMembersResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{21}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{22}
}
func (x *GetGuildMembersResponse) GetMembers() []uint64 {
@@ -1369,7 +1427,7 @@ type UpdateGuildInformationRequest struct {
func (x *UpdateGuildInformationRequest) Reset() {
*x = UpdateGuildInformationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[22]
+ mi := &file_chat_v1_guilds_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1382,7 +1440,7 @@ func (x *UpdateGuildInformationRequest) String() string {
func (*UpdateGuildInformationRequest) ProtoMessage() {}
func (x *UpdateGuildInformationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[22]
+ mi := &file_chat_v1_guilds_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1395,7 +1453,7 @@ func (x *UpdateGuildInformationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateGuildInformationRequest.ProtoReflect.Descriptor instead.
func (*UpdateGuildInformationRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{22}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{23}
}
func (x *UpdateGuildInformationRequest) GetGuildId() uint64 {
@@ -1436,7 +1494,7 @@ type UpdateGuildInformationResponse struct {
func (x *UpdateGuildInformationResponse) Reset() {
*x = UpdateGuildInformationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[23]
+ mi := &file_chat_v1_guilds_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1449,7 +1507,7 @@ func (x *UpdateGuildInformationResponse) String() string {
func (*UpdateGuildInformationResponse) ProtoMessage() {}
func (x *UpdateGuildInformationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[23]
+ mi := &file_chat_v1_guilds_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1462,7 +1520,7 @@ func (x *UpdateGuildInformationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateGuildInformationResponse.ProtoReflect.Descriptor instead.
func (*UpdateGuildInformationResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{23}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{24}
}
// Used in the `UpgradeRoomToGuild` endpoint.
@@ -1478,7 +1536,7 @@ type UpgradeRoomToGuildRequest struct {
func (x *UpgradeRoomToGuildRequest) Reset() {
*x = UpgradeRoomToGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[24]
+ mi := &file_chat_v1_guilds_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1491,7 +1549,7 @@ func (x *UpgradeRoomToGuildRequest) String() string {
func (*UpgradeRoomToGuildRequest) ProtoMessage() {}
func (x *UpgradeRoomToGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[24]
+ mi := &file_chat_v1_guilds_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1504,7 +1562,7 @@ func (x *UpgradeRoomToGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpgradeRoomToGuildRequest.ProtoReflect.Descriptor instead.
func (*UpgradeRoomToGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{24}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{25}
}
func (x *UpgradeRoomToGuildRequest) GetGuildId() uint64 {
@@ -1524,7 +1582,7 @@ type UpgradeRoomToGuildResponse struct {
func (x *UpgradeRoomToGuildResponse) Reset() {
*x = UpgradeRoomToGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[25]
+ mi := &file_chat_v1_guilds_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1537,7 +1595,7 @@ func (x *UpgradeRoomToGuildResponse) String() string {
func (*UpgradeRoomToGuildResponse) ProtoMessage() {}
func (x *UpgradeRoomToGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[25]
+ mi := &file_chat_v1_guilds_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1550,7 +1608,7 @@ func (x *UpgradeRoomToGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpgradeRoomToGuildResponse.ProtoReflect.Descriptor instead.
func (*UpgradeRoomToGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{25}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{26}
}
// Used in the `DeleteGuild` endpoint.
@@ -1566,7 +1624,7 @@ type DeleteGuildRequest struct {
func (x *DeleteGuildRequest) Reset() {
*x = DeleteGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[26]
+ mi := &file_chat_v1_guilds_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1579,7 +1637,7 @@ func (x *DeleteGuildRequest) String() string {
func (*DeleteGuildRequest) ProtoMessage() {}
func (x *DeleteGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[26]
+ mi := &file_chat_v1_guilds_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1592,7 +1650,7 @@ func (x *DeleteGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteGuildRequest.ProtoReflect.Descriptor instead.
func (*DeleteGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{26}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{27}
}
func (x *DeleteGuildRequest) GetGuildId() uint64 {
@@ -1612,7 +1670,7 @@ type DeleteGuildResponse struct {
func (x *DeleteGuildResponse) Reset() {
*x = DeleteGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[27]
+ mi := &file_chat_v1_guilds_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1625,7 +1683,7 @@ func (x *DeleteGuildResponse) String() string {
func (*DeleteGuildResponse) ProtoMessage() {}
func (x *DeleteGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[27]
+ mi := &file_chat_v1_guilds_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1638,7 +1696,7 @@ func (x *DeleteGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteGuildResponse.ProtoReflect.Descriptor instead.
func (*DeleteGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{27}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{28}
}
// Used in the `DeleteInvite` endpoint.
@@ -1656,7 +1714,7 @@ type DeleteInviteRequest struct {
func (x *DeleteInviteRequest) Reset() {
*x = DeleteInviteRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[28]
+ mi := &file_chat_v1_guilds_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1669,7 +1727,7 @@ func (x *DeleteInviteRequest) String() string {
func (*DeleteInviteRequest) ProtoMessage() {}
func (x *DeleteInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[28]
+ mi := &file_chat_v1_guilds_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1682,7 +1740,7 @@ func (x *DeleteInviteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteInviteRequest.ProtoReflect.Descriptor instead.
func (*DeleteInviteRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{28}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{29}
}
func (x *DeleteInviteRequest) GetGuildId() uint64 {
@@ -1709,7 +1767,7 @@ type DeleteInviteResponse struct {
func (x *DeleteInviteResponse) Reset() {
*x = DeleteInviteResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[29]
+ mi := &file_chat_v1_guilds_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1722,7 +1780,7 @@ func (x *DeleteInviteResponse) String() string {
func (*DeleteInviteResponse) ProtoMessage() {}
func (x *DeleteInviteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[29]
+ mi := &file_chat_v1_guilds_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1735,7 +1793,7 @@ func (x *DeleteInviteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteInviteResponse.ProtoReflect.Descriptor instead.
func (*DeleteInviteResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{29}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{30}
}
// Used in the `JoinGuild` endpoint.
@@ -1751,7 +1809,7 @@ type JoinGuildRequest struct {
func (x *JoinGuildRequest) Reset() {
*x = JoinGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[30]
+ mi := &file_chat_v1_guilds_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1764,7 +1822,7 @@ func (x *JoinGuildRequest) String() string {
func (*JoinGuildRequest) ProtoMessage() {}
func (x *JoinGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[30]
+ mi := &file_chat_v1_guilds_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1777,7 +1835,7 @@ func (x *JoinGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use JoinGuildRequest.ProtoReflect.Descriptor instead.
func (*JoinGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{30}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{31}
}
func (x *JoinGuildRequest) GetInviteId() string {
@@ -1800,7 +1858,7 @@ type JoinGuildResponse struct {
func (x *JoinGuildResponse) Reset() {
*x = JoinGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[31]
+ mi := &file_chat_v1_guilds_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1813,7 +1871,7 @@ func (x *JoinGuildResponse) String() string {
func (*JoinGuildResponse) ProtoMessage() {}
func (x *JoinGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[31]
+ mi := &file_chat_v1_guilds_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1826,7 +1884,7 @@ func (x *JoinGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use JoinGuildResponse.ProtoReflect.Descriptor instead.
func (*JoinGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{31}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{32}
}
func (x *JoinGuildResponse) GetGuildId() uint64 {
@@ -1849,7 +1907,7 @@ type PreviewGuildRequest struct {
func (x *PreviewGuildRequest) Reset() {
*x = PreviewGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[32]
+ mi := &file_chat_v1_guilds_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1862,7 +1920,7 @@ func (x *PreviewGuildRequest) String() string {
func (*PreviewGuildRequest) ProtoMessage() {}
func (x *PreviewGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[32]
+ mi := &file_chat_v1_guilds_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1875,7 +1933,7 @@ func (x *PreviewGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use PreviewGuildRequest.ProtoReflect.Descriptor instead.
func (*PreviewGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{32}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{33}
}
func (x *PreviewGuildRequest) GetInviteId() string {
@@ -1902,7 +1960,7 @@ type PreviewGuildResponse struct {
func (x *PreviewGuildResponse) Reset() {
*x = PreviewGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[33]
+ mi := &file_chat_v1_guilds_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1915,7 +1973,7 @@ func (x *PreviewGuildResponse) String() string {
func (*PreviewGuildResponse) ProtoMessage() {}
func (x *PreviewGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[33]
+ mi := &file_chat_v1_guilds_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1928,7 +1986,7 @@ func (x *PreviewGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use PreviewGuildResponse.ProtoReflect.Descriptor instead.
func (*PreviewGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{33}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{34}
}
func (x *PreviewGuildResponse) GetName() string {
@@ -1965,7 +2023,7 @@ type LeaveGuildRequest struct {
func (x *LeaveGuildRequest) Reset() {
*x = LeaveGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[34]
+ mi := &file_chat_v1_guilds_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1978,7 +2036,7 @@ func (x *LeaveGuildRequest) String() string {
func (*LeaveGuildRequest) ProtoMessage() {}
func (x *LeaveGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[34]
+ mi := &file_chat_v1_guilds_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1991,7 +2049,7 @@ func (x *LeaveGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use LeaveGuildRequest.ProtoReflect.Descriptor instead.
func (*LeaveGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{34}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{35}
}
func (x *LeaveGuildRequest) GetGuildId() uint64 {
@@ -2011,7 +2069,7 @@ type LeaveGuildResponse struct {
func (x *LeaveGuildResponse) Reset() {
*x = LeaveGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[35]
+ mi := &file_chat_v1_guilds_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2024,7 +2082,7 @@ func (x *LeaveGuildResponse) String() string {
func (*LeaveGuildResponse) ProtoMessage() {}
func (x *LeaveGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[35]
+ mi := &file_chat_v1_guilds_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2037,7 +2095,7 @@ func (x *LeaveGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use LeaveGuildResponse.ProtoReflect.Descriptor instead.
func (*LeaveGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{35}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{36}
}
// Used in `BanUser` endpoint.
@@ -2055,7 +2113,7 @@ type BanUserRequest struct {
func (x *BanUserRequest) Reset() {
*x = BanUserRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[36]
+ mi := &file_chat_v1_guilds_proto_msgTypes[37]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2068,7 +2126,7 @@ func (x *BanUserRequest) String() string {
func (*BanUserRequest) ProtoMessage() {}
func (x *BanUserRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[36]
+ mi := &file_chat_v1_guilds_proto_msgTypes[37]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2081,7 +2139,7 @@ func (x *BanUserRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use BanUserRequest.ProtoReflect.Descriptor instead.
func (*BanUserRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{36}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{37}
}
func (x *BanUserRequest) GetGuildId() uint64 {
@@ -2108,7 +2166,7 @@ type BanUserResponse struct {
func (x *BanUserResponse) Reset() {
*x = BanUserResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[37]
+ mi := &file_chat_v1_guilds_proto_msgTypes[38]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2121,7 +2179,7 @@ func (x *BanUserResponse) String() string {
func (*BanUserResponse) ProtoMessage() {}
func (x *BanUserResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[37]
+ mi := &file_chat_v1_guilds_proto_msgTypes[38]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2134,7 +2192,7 @@ func (x *BanUserResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use BanUserResponse.ProtoReflect.Descriptor instead.
func (*BanUserResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{37}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{38}
}
// Used in `KickUser` endpoint.
@@ -2152,7 +2210,7 @@ type KickUserRequest struct {
func (x *KickUserRequest) Reset() {
*x = KickUserRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[38]
+ mi := &file_chat_v1_guilds_proto_msgTypes[39]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2165,7 +2223,7 @@ func (x *KickUserRequest) String() string {
func (*KickUserRequest) ProtoMessage() {}
func (x *KickUserRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[38]
+ mi := &file_chat_v1_guilds_proto_msgTypes[39]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2178,7 +2236,7 @@ func (x *KickUserRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use KickUserRequest.ProtoReflect.Descriptor instead.
func (*KickUserRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{38}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{39}
}
func (x *KickUserRequest) GetGuildId() uint64 {
@@ -2205,7 +2263,7 @@ type KickUserResponse struct {
func (x *KickUserResponse) Reset() {
*x = KickUserResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[39]
+ mi := &file_chat_v1_guilds_proto_msgTypes[40]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2218,7 +2276,7 @@ func (x *KickUserResponse) String() string {
func (*KickUserResponse) ProtoMessage() {}
func (x *KickUserResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[39]
+ mi := &file_chat_v1_guilds_proto_msgTypes[40]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2231,7 +2289,7 @@ func (x *KickUserResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use KickUserResponse.ProtoReflect.Descriptor instead.
func (*KickUserResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{39}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{40}
}
// Used in `UnbanUser` endpoint.
@@ -2249,7 +2307,7 @@ type UnbanUserRequest struct {
func (x *UnbanUserRequest) Reset() {
*x = UnbanUserRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[40]
+ mi := &file_chat_v1_guilds_proto_msgTypes[41]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2262,7 +2320,7 @@ func (x *UnbanUserRequest) String() string {
func (*UnbanUserRequest) ProtoMessage() {}
func (x *UnbanUserRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[40]
+ mi := &file_chat_v1_guilds_proto_msgTypes[41]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2275,7 +2333,7 @@ func (x *UnbanUserRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use UnbanUserRequest.ProtoReflect.Descriptor instead.
func (*UnbanUserRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{40}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{41}
}
func (x *UnbanUserRequest) GetGuildId() uint64 {
@@ -2302,7 +2360,7 @@ type UnbanUserResponse struct {
func (x *UnbanUserResponse) Reset() {
*x = UnbanUserResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[41]
+ mi := &file_chat_v1_guilds_proto_msgTypes[42]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2315,7 +2373,7 @@ func (x *UnbanUserResponse) String() string {
func (*UnbanUserResponse) ProtoMessage() {}
func (x *UnbanUserResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[41]
+ mi := &file_chat_v1_guilds_proto_msgTypes[42]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2328,7 +2386,7 @@ func (x *UnbanUserResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UnbanUserResponse.ProtoReflect.Descriptor instead.
func (*UnbanUserResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{41}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{42}
}
// Used in `GetBannedUsers` endpoint.
@@ -2344,7 +2402,7 @@ type GetBannedUsersRequest struct {
func (x *GetBannedUsersRequest) Reset() {
*x = GetBannedUsersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[42]
+ mi := &file_chat_v1_guilds_proto_msgTypes[43]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2357,7 +2415,7 @@ func (x *GetBannedUsersRequest) String() string {
func (*GetBannedUsersRequest) ProtoMessage() {}
func (x *GetBannedUsersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[42]
+ mi := &file_chat_v1_guilds_proto_msgTypes[43]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2370,7 +2428,7 @@ func (x *GetBannedUsersRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetBannedUsersRequest.ProtoReflect.Descriptor instead.
func (*GetBannedUsersRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{42}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{43}
}
func (x *GetBannedUsersRequest) GetGuildId() uint64 {
@@ -2393,7 +2451,7 @@ type GetBannedUsersResponse struct {
func (x *GetBannedUsersResponse) Reset() {
*x = GetBannedUsersResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[43]
+ mi := &file_chat_v1_guilds_proto_msgTypes[44]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2406,7 +2464,7 @@ func (x *GetBannedUsersResponse) String() string {
func (*GetBannedUsersResponse) ProtoMessage() {}
func (x *GetBannedUsersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[43]
+ mi := &file_chat_v1_guilds_proto_msgTypes[44]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2419,7 +2477,7 @@ func (x *GetBannedUsersResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetBannedUsersResponse.ProtoReflect.Descriptor instead.
func (*GetBannedUsersResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{43}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{44}
}
func (x *GetBannedUsersResponse) GetBannedUsers() []uint64 {
@@ -2444,7 +2502,7 @@ type GrantOwnershipRequest struct {
func (x *GrantOwnershipRequest) Reset() {
*x = GrantOwnershipRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[44]
+ mi := &file_chat_v1_guilds_proto_msgTypes[45]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2457,7 +2515,7 @@ func (x *GrantOwnershipRequest) String() string {
func (*GrantOwnershipRequest) ProtoMessage() {}
func (x *GrantOwnershipRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[44]
+ mi := &file_chat_v1_guilds_proto_msgTypes[45]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2470,7 +2528,7 @@ func (x *GrantOwnershipRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GrantOwnershipRequest.ProtoReflect.Descriptor instead.
func (*GrantOwnershipRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{44}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{45}
}
func (x *GrantOwnershipRequest) GetGuildId() uint64 {
@@ -2497,7 +2555,7 @@ type GrantOwnershipResponse struct {
func (x *GrantOwnershipResponse) Reset() {
*x = GrantOwnershipResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[45]
+ mi := &file_chat_v1_guilds_proto_msgTypes[46]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2510,7 +2568,7 @@ func (x *GrantOwnershipResponse) String() string {
func (*GrantOwnershipResponse) ProtoMessage() {}
func (x *GrantOwnershipResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[45]
+ mi := &file_chat_v1_guilds_proto_msgTypes[46]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2523,7 +2581,7 @@ func (x *GrantOwnershipResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GrantOwnershipResponse.ProtoReflect.Descriptor instead.
func (*GrantOwnershipResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{45}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{46}
}
// Request for GiveUpOwnership
@@ -2539,7 +2597,7 @@ type GiveUpOwnershipRequest struct {
func (x *GiveUpOwnershipRequest) Reset() {
*x = GiveUpOwnershipRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[46]
+ mi := &file_chat_v1_guilds_proto_msgTypes[47]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2552,7 +2610,7 @@ func (x *GiveUpOwnershipRequest) String() string {
func (*GiveUpOwnershipRequest) ProtoMessage() {}
func (x *GiveUpOwnershipRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[46]
+ mi := &file_chat_v1_guilds_proto_msgTypes[47]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2565,7 +2623,7 @@ func (x *GiveUpOwnershipRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GiveUpOwnershipRequest.ProtoReflect.Descriptor instead.
func (*GiveUpOwnershipRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{46}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{47}
}
func (x *GiveUpOwnershipRequest) GetGuildId() uint64 {
@@ -2585,7 +2643,7 @@ type GiveUpOwnershipResponse struct {
func (x *GiveUpOwnershipResponse) Reset() {
*x = GiveUpOwnershipResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[47]
+ mi := &file_chat_v1_guilds_proto_msgTypes[48]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2598,7 +2656,7 @@ func (x *GiveUpOwnershipResponse) String() string {
func (*GiveUpOwnershipResponse) ProtoMessage() {}
func (x *GiveUpOwnershipResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[47]
+ mi := &file_chat_v1_guilds_proto_msgTypes[48]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2611,7 +2669,7 @@ func (x *GiveUpOwnershipResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GiveUpOwnershipResponse.ProtoReflect.Descriptor instead.
func (*GiveUpOwnershipResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{47}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{48}
}
// Used in `GetPendingInvites` endpoint.
@@ -2624,7 +2682,7 @@ type GetPendingInvitesRequest struct {
func (x *GetPendingInvitesRequest) Reset() {
*x = GetPendingInvitesRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[48]
+ mi := &file_chat_v1_guilds_proto_msgTypes[49]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2637,7 +2695,7 @@ func (x *GetPendingInvitesRequest) String() string {
func (*GetPendingInvitesRequest) ProtoMessage() {}
func (x *GetPendingInvitesRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[48]
+ mi := &file_chat_v1_guilds_proto_msgTypes[49]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2650,7 +2708,7 @@ func (x *GetPendingInvitesRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetPendingInvitesRequest.ProtoReflect.Descriptor instead.
func (*GetPendingInvitesRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{48}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{49}
}
// Used in `GetPendingInvites` endpoint.
@@ -2666,7 +2724,7 @@ type GetPendingInvitesResponse struct {
func (x *GetPendingInvitesResponse) Reset() {
*x = GetPendingInvitesResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[49]
+ mi := &file_chat_v1_guilds_proto_msgTypes[50]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2679,7 +2737,7 @@ func (x *GetPendingInvitesResponse) String() string {
func (*GetPendingInvitesResponse) ProtoMessage() {}
func (x *GetPendingInvitesResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[49]
+ mi := &file_chat_v1_guilds_proto_msgTypes[50]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2692,7 +2750,7 @@ func (x *GetPendingInvitesResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetPendingInvitesResponse.ProtoReflect.Descriptor instead.
func (*GetPendingInvitesResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{49}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{50}
}
func (x *GetPendingInvitesResponse) GetPendingInvites() []*PendingInvite {
@@ -2717,7 +2775,7 @@ type RejectPendingInviteRequest struct {
func (x *RejectPendingInviteRequest) Reset() {
*x = RejectPendingInviteRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[50]
+ mi := &file_chat_v1_guilds_proto_msgTypes[51]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2730,7 +2788,7 @@ func (x *RejectPendingInviteRequest) String() string {
func (*RejectPendingInviteRequest) ProtoMessage() {}
func (x *RejectPendingInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[50]
+ mi := &file_chat_v1_guilds_proto_msgTypes[51]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2743,7 +2801,7 @@ func (x *RejectPendingInviteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use RejectPendingInviteRequest.ProtoReflect.Descriptor instead.
func (*RejectPendingInviteRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{50}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{51}
}
func (x *RejectPendingInviteRequest) GetInviteId() string {
@@ -2770,7 +2828,7 @@ type RejectPendingInviteResponse struct {
func (x *RejectPendingInviteResponse) Reset() {
*x = RejectPendingInviteResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[51]
+ mi := &file_chat_v1_guilds_proto_msgTypes[52]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2783,7 +2841,7 @@ func (x *RejectPendingInviteResponse) String() string {
func (*RejectPendingInviteResponse) ProtoMessage() {}
func (x *RejectPendingInviteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[51]
+ mi := &file_chat_v1_guilds_proto_msgTypes[52]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2796,7 +2854,7 @@ func (x *RejectPendingInviteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RejectPendingInviteResponse.ProtoReflect.Descriptor instead.
func (*RejectPendingInviteResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{51}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{52}
}
// Used in `IgnorePendingInvite` endpoint.
@@ -2814,7 +2872,7 @@ type IgnorePendingInviteRequest struct {
func (x *IgnorePendingInviteRequest) Reset() {
*x = IgnorePendingInviteRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[52]
+ mi := &file_chat_v1_guilds_proto_msgTypes[53]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2827,7 +2885,7 @@ func (x *IgnorePendingInviteRequest) String() string {
func (*IgnorePendingInviteRequest) ProtoMessage() {}
func (x *IgnorePendingInviteRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[52]
+ mi := &file_chat_v1_guilds_proto_msgTypes[53]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2840,7 +2898,7 @@ func (x *IgnorePendingInviteRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use IgnorePendingInviteRequest.ProtoReflect.Descriptor instead.
func (*IgnorePendingInviteRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{52}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{53}
}
func (x *IgnorePendingInviteRequest) GetInviteId() string {
@@ -2867,7 +2925,7 @@ type IgnorePendingInviteResponse struct {
func (x *IgnorePendingInviteResponse) Reset() {
*x = IgnorePendingInviteResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[53]
+ mi := &file_chat_v1_guilds_proto_msgTypes[54]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2880,7 +2938,7 @@ func (x *IgnorePendingInviteResponse) String() string {
func (*IgnorePendingInviteResponse) ProtoMessage() {}
func (x *IgnorePendingInviteResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[53]
+ mi := &file_chat_v1_guilds_proto_msgTypes[54]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2893,7 +2951,7 @@ func (x *IgnorePendingInviteResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use IgnorePendingInviteResponse.ProtoReflect.Descriptor instead.
func (*IgnorePendingInviteResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{53}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{54}
}
// Used in `InviteUserToGuild` endpoint.
@@ -2913,7 +2971,7 @@ type InviteUserToGuildRequest struct {
func (x *InviteUserToGuildRequest) Reset() {
*x = InviteUserToGuildRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[54]
+ mi := &file_chat_v1_guilds_proto_msgTypes[55]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2926,7 +2984,7 @@ func (x *InviteUserToGuildRequest) String() string {
func (*InviteUserToGuildRequest) ProtoMessage() {}
func (x *InviteUserToGuildRequest) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[54]
+ mi := &file_chat_v1_guilds_proto_msgTypes[55]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2939,7 +2997,7 @@ func (x *InviteUserToGuildRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use InviteUserToGuildRequest.ProtoReflect.Descriptor instead.
func (*InviteUserToGuildRequest) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{54}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{55}
}
func (x *InviteUserToGuildRequest) GetUserName() string {
@@ -2973,7 +3031,7 @@ type InviteUserToGuildResponse struct {
func (x *InviteUserToGuildResponse) Reset() {
*x = InviteUserToGuildResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[55]
+ mi := &file_chat_v1_guilds_proto_msgTypes[56]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2986,7 +3044,7 @@ func (x *InviteUserToGuildResponse) String() string {
func (*InviteUserToGuildResponse) ProtoMessage() {}
func (x *InviteUserToGuildResponse) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[55]
+ mi := &file_chat_v1_guilds_proto_msgTypes[56]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2999,7 +3057,7 @@ func (x *InviteUserToGuildResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use InviteUserToGuildResponse.ProtoReflect.Descriptor instead.
func (*InviteUserToGuildResponse) Descriptor() ([]byte, []int) {
- return file_chat_v1_guilds_proto_rawDescGZIP(), []int{55}
+ return file_chat_v1_guilds_proto_rawDescGZIP(), []int{56}
}
// A "normal" guild as in a guild that allows multiple channels.
@@ -3012,7 +3070,7 @@ type GuildKind_Normal struct {
func (x *GuildKind_Normal) Reset() {
*x = GuildKind_Normal{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[56]
+ mi := &file_chat_v1_guilds_proto_msgTypes[57]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3025,7 +3083,7 @@ func (x *GuildKind_Normal) String() string {
func (*GuildKind_Normal) ProtoMessage() {}
func (x *GuildKind_Normal) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[56]
+ mi := &file_chat_v1_guilds_proto_msgTypes[57]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3053,7 +3111,7 @@ type GuildKind_Room struct {
func (x *GuildKind_Room) Reset() {
*x = GuildKind_Room{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[57]
+ mi := &file_chat_v1_guilds_proto_msgTypes[58]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3066,7 +3124,7 @@ func (x *GuildKind_Room) String() string {
func (*GuildKind_Room) ProtoMessage() {}
func (x *GuildKind_Room) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[57]
+ mi := &file_chat_v1_guilds_proto_msgTypes[58]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3105,7 +3163,7 @@ type GuildKind_DirectMessage struct {
func (x *GuildKind_DirectMessage) Reset() {
*x = GuildKind_DirectMessage{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_guilds_proto_msgTypes[58]
+ mi := &file_chat_v1_guilds_proto_msgTypes[59]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -3118,7 +3176,7 @@ func (x *GuildKind_DirectMessage) String() string {
func (*GuildKind_DirectMessage) ProtoMessage() {}
func (x *GuildKind_DirectMessage) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_guilds_proto_msgTypes[58]
+ mi := &file_chat_v1_guilds_proto_msgTypes[59]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -3180,45 +3238,37 @@ var file_chat_v1_guilds_proto_rawDesc = []byte{
0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74,
0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
0x61, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65,
- 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4a, 0x0a,
- 0x06, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x73, 0x69,
- 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c,
- 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09,
- 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52,
- 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0c, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x22, 0x7b, 0x0a, 0x0d, 0x50, 0x65, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72,
- 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x48, 0x0a, 0x0e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69,
- 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22,
- 0xa5, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x69,
- 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70,
- 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79,
- 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48,
- 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0a,
- 0x0a, 0x08, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x30, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19,
- 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x11, 0x43, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x57, 0x0a,
+ 0x0b, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
+ 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
+ 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52,
+ 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x4a, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c,
+ 0x65, 0x55, 0x73, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x75,
+ 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x75, 0x73, 0x65, 0x43, 0x6f, 0x75,
+ 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0c, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68,
+ 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12,
+ 0x30, 0x0a, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
+ 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x06, 0x69, 0x6e, 0x76, 0x69, 0x74,
+ 0x65, 0x22, 0x7b, 0x0a, 0x0d, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12,
+ 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01,
+ 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
+ 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64,
+ 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x48,
+ 0x0a, 0x0e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0xa5, 0x01, 0x0a, 0x12, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88,
@@ -3228,205 +3278,219 @@ var file_chat_v1_guilds_proto_rawDesc = []byte{
0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61,
0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x69, 0x63, 0x74,
0x75, 0x72, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x22, 0x2f, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49,
- 0x64, 0x22, 0x69, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63,
- 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
- 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09,
- 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48,
- 0x00, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c,
- 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x1b,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67,
- 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
- 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x69, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
- 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a,
- 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d,
- 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x55, 0x73, 0x65,
- 0x73, 0x22, 0x33, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69,
- 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a,
- 0x14, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69,
- 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22,
- 0x2c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x41, 0x0a,
- 0x10, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
- 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x22, 0x33, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75,
- 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75,
- 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c,
- 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x12, 0x38, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
- 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49,
- 0x64, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x16, 0x47, 0x65,
- 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22,
- 0x33, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65,
- 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65,
- 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d,
- 0x62, 0x65, 0x72, 0x73, 0x22, 0xfa, 0x01, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47,
- 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49,
- 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01,
- 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x63,
- 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x6d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
+ 0x22, 0x30, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x49, 0x64, 0x22, 0xa4, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f,
+ 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07,
+ 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79,
0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65,
- 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
- 0x61, 0x22, 0x20, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x22, 0x36, 0x0a, 0x19, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x6f,
- 0x6f, 0x6d, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x55,
- 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c,
- 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x12, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x61, 0x48, 0x01, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01,
+ 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0b, 0x0a, 0x09,
+ 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2f, 0x0a, 0x12, 0x43, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65,
- 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x4d, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64,
- 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e,
- 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
- 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x11, 0x4a, 0x6f, 0x69,
- 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19,
- 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x32, 0x0a, 0x13, 0x50, 0x72, 0x65,
- 0x76, 0x69, 0x65, 0x77, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x78, 0x0a,
- 0x14, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x69, 0x63,
- 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x69,
- 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62,
- 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
- 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f,
- 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x2e, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x76, 0x65,
- 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08,
- 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
- 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x76, 0x65,
- 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x0a,
- 0x0e, 0x42, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x69, 0x0a, 0x1a, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72,
+ 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65,
+ 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76,
+ 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x38, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44,
+ 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22,
+ 0x69, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49,
+ 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x73, 0x69, 0x62, 0x6c,
+ 0x65, 0x5f, 0x75, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x70, 0x6f,
+ 0x73, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x14, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22,
+ 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69,
+ 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38,
+ 0x0a, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
+ 0x31, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
+ 0x52, 0x06, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47,
+ 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69,
+ 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x67, 0x75,
+ 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x75, 0x69,
+ 0x6c, 0x64, 0x52, 0x05, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x22, 0x33, 0x0a, 0x16, 0x47, 0x65, 0x74,
+ 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x53,
+ 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x69, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x64, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x4d,
+ 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a,
+ 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x33, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47,
+ 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0xfa, 0x01,
+ 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66,
+ 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65,
- 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x42, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x0a, 0x0f, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73,
- 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69,
+ 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65,
+ 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07,
+ 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65,
+ 0x77, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x01, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01,
+ 0x12, 0x4a, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76,
+ 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x65,
+ 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09,
+ 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65,
+ 0x77, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65,
+ 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x20, 0x0a, 0x1e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x0a, 0x19,
+ 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x6f, 0x47, 0x75, 0x69,
+ 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69,
0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69,
- 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x12, 0x0a,
- 0x10, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x22, 0x46, 0x0a, 0x10, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65,
+ 0x6c, 0x64, 0x49, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52,
+ 0x6f, 0x6f, 0x6d, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6c,
+ 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x49, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x75, 0x69,
+ 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x13, 0x44, 0x65,
+ 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x22, 0x2f, 0x0a, 0x10, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x49, 0x64, 0x22, 0x2e, 0x0a, 0x11, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x49, 0x64, 0x22, 0x32, 0x0a, 0x13, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x47, 0x75, 0x69,
+ 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x78, 0x0a, 0x14, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65,
+ 0x77, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12,
+ 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
+ 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01,
+ 0x01, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e,
+ 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43,
+ 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65,
+ 0x22, 0x2e, 0x0a, 0x11, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64,
- 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x6e, 0x62,
- 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32,
- 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55,
- 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c,
- 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03,
- 0x28, 0x04, 0x52, 0x0b, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x22,
- 0x54, 0x0a, 0x15, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69,
- 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
+ 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x0a, 0x0e, 0x42, 0x61, 0x6e, 0x55, 0x73, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x4f, 0x77,
- 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x4f, 0x77,
- 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x33, 0x0a, 0x16, 0x47, 0x69, 0x76, 0x65, 0x55, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68,
- 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69,
- 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69,
- 0x6c, 0x64, 0x49, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x69, 0x76, 0x65, 0x55, 0x70, 0x4f, 0x77,
- 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x65, 0x0a, 0x19, 0x47,
- 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
- 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x52, 0x0e, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x73, 0x22, 0x69, 0x0a, 0x1a, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x64,
- 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a,
- 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42,
- 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x1d, 0x0a,
- 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x1a,
- 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e,
- 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65,
- 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x49, 0x67, 0x6e, 0x6f, 0x72,
- 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65,
+ 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x11, 0x0a, 0x0f,
+ 0x42, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x45, 0x0a, 0x0f, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a,
+ 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06,
+ 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x4b, 0x69, 0x63, 0x6b, 0x55, 0x73,
+ 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x10, 0x55, 0x6e,
+ 0x62, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19,
+ 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
+ 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
+ 0x49, 0x64, 0x22, 0x13, 0x0a, 0x11, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x61,
+ 0x6e, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x16, 0x47,
+ 0x65, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f,
+ 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x61, 0x6e,
+ 0x6e, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x22, 0x54, 0x0a, 0x15, 0x47, 0x72, 0x61, 0x6e,
+ 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+ 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c,
+ 0x6e, 0x65, 0x77, 0x5f, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x22, 0x18,
+ 0x0a, 0x16, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x16, 0x47, 0x69, 0x76, 0x65,
+ 0x55, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x22, 0x19, 0x0a,
+ 0x17, 0x47, 0x69, 0x76, 0x65, 0x55, 0x70, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50,
+ 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x22, 0x65, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69,
+ 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65,
+ 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x0e, 0x70, 0x65, 0x6e,
+ 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x73, 0x22, 0x69, 0x0a, 0x1a, 0x52,
+ 0x65, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76,
+ 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74,
+ 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x1a, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x50,
+ 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64,
0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88,
- 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x0c, 0x0a,
- 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x49,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x67, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76,
- 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x22, 0x4c, 0x45, 0x41, 0x56, 0x45,
- 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x4c,
- 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
- 0x17, 0x0a, 0x13, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f,
- 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x45, 0x41, 0x56,
- 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x45, 0x44, 0x10,
- 0x02, 0x42, 0xc1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x47, 0x75, 0x69, 0x6c,
- 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75,
- 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65,
- 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68,
- 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x63,
- 0x68, 0x61, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x10, 0x50, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02,
- 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56,
- 0x31, 0xe2, 0x02, 0x1c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61,
- 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0xea, 0x02, 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x61,
- 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x22, 0x1d, 0x0a, 0x1b, 0x49, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e,
+ 0x67, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x82, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x54, 0x6f,
+ 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09,
+ 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x75, 0x73, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x5f, 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x55, 0x73,
+ 0x65, 0x72, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+ 0x65, 0x2a, 0x67, 0x0a, 0x0b, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
+ 0x12, 0x26, 0x0a, 0x22, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e,
+ 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x49, 0x4e, 0x47, 0x4c, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
+ 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x45, 0x41, 0x56,
+ 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10,
+ 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f,
+ 0x4e, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x42, 0xc1, 0x01, 0x0a, 0x14, 0x63,
+ 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
+ 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68,
+ 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65,
+ 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f,
+ 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68, 0x61, 0x74, 0x76, 0x31, 0xa2, 0x02,
+ 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
+ 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x50, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50,
+ 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x61, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3442,89 +3506,91 @@ func file_chat_v1_guilds_proto_rawDescGZIP() []byte {
}
var file_chat_v1_guilds_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_chat_v1_guilds_proto_msgTypes = make([]protoimpl.MessageInfo, 59)
+var file_chat_v1_guilds_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
var file_chat_v1_guilds_proto_goTypes = []interface{}{
(LeaveReason)(0), // 0: protocol.chat.v1.LeaveReason
(*GuildKind)(nil), // 1: protocol.chat.v1.GuildKind
(*Guild)(nil), // 2: protocol.chat.v1.Guild
- (*Invite)(nil), // 3: protocol.chat.v1.Invite
- (*InviteWithId)(nil), // 4: protocol.chat.v1.InviteWithId
- (*PendingInvite)(nil), // 5: protocol.chat.v1.PendingInvite
- (*GuildListEntry)(nil), // 6: protocol.chat.v1.GuildListEntry
- (*CreateGuildRequest)(nil), // 7: protocol.chat.v1.CreateGuildRequest
- (*CreateGuildResponse)(nil), // 8: protocol.chat.v1.CreateGuildResponse
- (*CreateRoomRequest)(nil), // 9: protocol.chat.v1.CreateRoomRequest
- (*CreateRoomResponse)(nil), // 10: protocol.chat.v1.CreateRoomResponse
- (*CreateDirectMessageRequest)(nil), // 11: protocol.chat.v1.CreateDirectMessageRequest
- (*CreateDirectMessageResponse)(nil), // 12: protocol.chat.v1.CreateDirectMessageResponse
- (*CreateInviteRequest)(nil), // 13: protocol.chat.v1.CreateInviteRequest
- (*CreateInviteResponse)(nil), // 14: protocol.chat.v1.CreateInviteResponse
- (*GetGuildListRequest)(nil), // 15: protocol.chat.v1.GetGuildListRequest
- (*GetGuildListResponse)(nil), // 16: protocol.chat.v1.GetGuildListResponse
- (*GetGuildRequest)(nil), // 17: protocol.chat.v1.GetGuildRequest
- (*GetGuildResponse)(nil), // 18: protocol.chat.v1.GetGuildResponse
- (*GetGuildInvitesRequest)(nil), // 19: protocol.chat.v1.GetGuildInvitesRequest
- (*GetGuildInvitesResponse)(nil), // 20: protocol.chat.v1.GetGuildInvitesResponse
- (*GetGuildMembersRequest)(nil), // 21: protocol.chat.v1.GetGuildMembersRequest
- (*GetGuildMembersResponse)(nil), // 22: protocol.chat.v1.GetGuildMembersResponse
- (*UpdateGuildInformationRequest)(nil), // 23: protocol.chat.v1.UpdateGuildInformationRequest
- (*UpdateGuildInformationResponse)(nil), // 24: protocol.chat.v1.UpdateGuildInformationResponse
- (*UpgradeRoomToGuildRequest)(nil), // 25: protocol.chat.v1.UpgradeRoomToGuildRequest
- (*UpgradeRoomToGuildResponse)(nil), // 26: protocol.chat.v1.UpgradeRoomToGuildResponse
- (*DeleteGuildRequest)(nil), // 27: protocol.chat.v1.DeleteGuildRequest
- (*DeleteGuildResponse)(nil), // 28: protocol.chat.v1.DeleteGuildResponse
- (*DeleteInviteRequest)(nil), // 29: protocol.chat.v1.DeleteInviteRequest
- (*DeleteInviteResponse)(nil), // 30: protocol.chat.v1.DeleteInviteResponse
- (*JoinGuildRequest)(nil), // 31: protocol.chat.v1.JoinGuildRequest
- (*JoinGuildResponse)(nil), // 32: protocol.chat.v1.JoinGuildResponse
- (*PreviewGuildRequest)(nil), // 33: protocol.chat.v1.PreviewGuildRequest
- (*PreviewGuildResponse)(nil), // 34: protocol.chat.v1.PreviewGuildResponse
- (*LeaveGuildRequest)(nil), // 35: protocol.chat.v1.LeaveGuildRequest
- (*LeaveGuildResponse)(nil), // 36: protocol.chat.v1.LeaveGuildResponse
- (*BanUserRequest)(nil), // 37: protocol.chat.v1.BanUserRequest
- (*BanUserResponse)(nil), // 38: protocol.chat.v1.BanUserResponse
- (*KickUserRequest)(nil), // 39: protocol.chat.v1.KickUserRequest
- (*KickUserResponse)(nil), // 40: protocol.chat.v1.KickUserResponse
- (*UnbanUserRequest)(nil), // 41: protocol.chat.v1.UnbanUserRequest
- (*UnbanUserResponse)(nil), // 42: protocol.chat.v1.UnbanUserResponse
- (*GetBannedUsersRequest)(nil), // 43: protocol.chat.v1.GetBannedUsersRequest
- (*GetBannedUsersResponse)(nil), // 44: protocol.chat.v1.GetBannedUsersResponse
- (*GrantOwnershipRequest)(nil), // 45: protocol.chat.v1.GrantOwnershipRequest
- (*GrantOwnershipResponse)(nil), // 46: protocol.chat.v1.GrantOwnershipResponse
- (*GiveUpOwnershipRequest)(nil), // 47: protocol.chat.v1.GiveUpOwnershipRequest
- (*GiveUpOwnershipResponse)(nil), // 48: protocol.chat.v1.GiveUpOwnershipResponse
- (*GetPendingInvitesRequest)(nil), // 49: protocol.chat.v1.GetPendingInvitesRequest
- (*GetPendingInvitesResponse)(nil), // 50: protocol.chat.v1.GetPendingInvitesResponse
- (*RejectPendingInviteRequest)(nil), // 51: protocol.chat.v1.RejectPendingInviteRequest
- (*RejectPendingInviteResponse)(nil), // 52: protocol.chat.v1.RejectPendingInviteResponse
- (*IgnorePendingInviteRequest)(nil), // 53: protocol.chat.v1.IgnorePendingInviteRequest
- (*IgnorePendingInviteResponse)(nil), // 54: protocol.chat.v1.IgnorePendingInviteResponse
- (*InviteUserToGuildRequest)(nil), // 55: protocol.chat.v1.InviteUserToGuildRequest
- (*InviteUserToGuildResponse)(nil), // 56: protocol.chat.v1.InviteUserToGuildResponse
- (*GuildKind_Normal)(nil), // 57: protocol.chat.v1.GuildKind.Normal
- (*GuildKind_Room)(nil), // 58: protocol.chat.v1.GuildKind.Room
- (*GuildKind_DirectMessage)(nil), // 59: protocol.chat.v1.GuildKind.DirectMessage
- (*v1.Metadata)(nil), // 60: protocol.harmonytypes.v1.Metadata
+ (*GuildWithId)(nil), // 3: protocol.chat.v1.GuildWithId
+ (*Invite)(nil), // 4: protocol.chat.v1.Invite
+ (*InviteWithId)(nil), // 5: protocol.chat.v1.InviteWithId
+ (*PendingInvite)(nil), // 6: protocol.chat.v1.PendingInvite
+ (*GuildListEntry)(nil), // 7: protocol.chat.v1.GuildListEntry
+ (*CreateGuildRequest)(nil), // 8: protocol.chat.v1.CreateGuildRequest
+ (*CreateGuildResponse)(nil), // 9: protocol.chat.v1.CreateGuildResponse
+ (*CreateRoomRequest)(nil), // 10: protocol.chat.v1.CreateRoomRequest
+ (*CreateRoomResponse)(nil), // 11: protocol.chat.v1.CreateRoomResponse
+ (*CreateDirectMessageRequest)(nil), // 12: protocol.chat.v1.CreateDirectMessageRequest
+ (*CreateDirectMessageResponse)(nil), // 13: protocol.chat.v1.CreateDirectMessageResponse
+ (*CreateInviteRequest)(nil), // 14: protocol.chat.v1.CreateInviteRequest
+ (*CreateInviteResponse)(nil), // 15: protocol.chat.v1.CreateInviteResponse
+ (*GetGuildListRequest)(nil), // 16: protocol.chat.v1.GetGuildListRequest
+ (*GetGuildListResponse)(nil), // 17: protocol.chat.v1.GetGuildListResponse
+ (*GetGuildRequest)(nil), // 18: protocol.chat.v1.GetGuildRequest
+ (*GetGuildResponse)(nil), // 19: protocol.chat.v1.GetGuildResponse
+ (*GetGuildInvitesRequest)(nil), // 20: protocol.chat.v1.GetGuildInvitesRequest
+ (*GetGuildInvitesResponse)(nil), // 21: protocol.chat.v1.GetGuildInvitesResponse
+ (*GetGuildMembersRequest)(nil), // 22: protocol.chat.v1.GetGuildMembersRequest
+ (*GetGuildMembersResponse)(nil), // 23: protocol.chat.v1.GetGuildMembersResponse
+ (*UpdateGuildInformationRequest)(nil), // 24: protocol.chat.v1.UpdateGuildInformationRequest
+ (*UpdateGuildInformationResponse)(nil), // 25: protocol.chat.v1.UpdateGuildInformationResponse
+ (*UpgradeRoomToGuildRequest)(nil), // 26: protocol.chat.v1.UpgradeRoomToGuildRequest
+ (*UpgradeRoomToGuildResponse)(nil), // 27: protocol.chat.v1.UpgradeRoomToGuildResponse
+ (*DeleteGuildRequest)(nil), // 28: protocol.chat.v1.DeleteGuildRequest
+ (*DeleteGuildResponse)(nil), // 29: protocol.chat.v1.DeleteGuildResponse
+ (*DeleteInviteRequest)(nil), // 30: protocol.chat.v1.DeleteInviteRequest
+ (*DeleteInviteResponse)(nil), // 31: protocol.chat.v1.DeleteInviteResponse
+ (*JoinGuildRequest)(nil), // 32: protocol.chat.v1.JoinGuildRequest
+ (*JoinGuildResponse)(nil), // 33: protocol.chat.v1.JoinGuildResponse
+ (*PreviewGuildRequest)(nil), // 34: protocol.chat.v1.PreviewGuildRequest
+ (*PreviewGuildResponse)(nil), // 35: protocol.chat.v1.PreviewGuildResponse
+ (*LeaveGuildRequest)(nil), // 36: protocol.chat.v1.LeaveGuildRequest
+ (*LeaveGuildResponse)(nil), // 37: protocol.chat.v1.LeaveGuildResponse
+ (*BanUserRequest)(nil), // 38: protocol.chat.v1.BanUserRequest
+ (*BanUserResponse)(nil), // 39: protocol.chat.v1.BanUserResponse
+ (*KickUserRequest)(nil), // 40: protocol.chat.v1.KickUserRequest
+ (*KickUserResponse)(nil), // 41: protocol.chat.v1.KickUserResponse
+ (*UnbanUserRequest)(nil), // 42: protocol.chat.v1.UnbanUserRequest
+ (*UnbanUserResponse)(nil), // 43: protocol.chat.v1.UnbanUserResponse
+ (*GetBannedUsersRequest)(nil), // 44: protocol.chat.v1.GetBannedUsersRequest
+ (*GetBannedUsersResponse)(nil), // 45: protocol.chat.v1.GetBannedUsersResponse
+ (*GrantOwnershipRequest)(nil), // 46: protocol.chat.v1.GrantOwnershipRequest
+ (*GrantOwnershipResponse)(nil), // 47: protocol.chat.v1.GrantOwnershipResponse
+ (*GiveUpOwnershipRequest)(nil), // 48: protocol.chat.v1.GiveUpOwnershipRequest
+ (*GiveUpOwnershipResponse)(nil), // 49: protocol.chat.v1.GiveUpOwnershipResponse
+ (*GetPendingInvitesRequest)(nil), // 50: protocol.chat.v1.GetPendingInvitesRequest
+ (*GetPendingInvitesResponse)(nil), // 51: protocol.chat.v1.GetPendingInvitesResponse
+ (*RejectPendingInviteRequest)(nil), // 52: protocol.chat.v1.RejectPendingInviteRequest
+ (*RejectPendingInviteResponse)(nil), // 53: protocol.chat.v1.RejectPendingInviteResponse
+ (*IgnorePendingInviteRequest)(nil), // 54: protocol.chat.v1.IgnorePendingInviteRequest
+ (*IgnorePendingInviteResponse)(nil), // 55: protocol.chat.v1.IgnorePendingInviteResponse
+ (*InviteUserToGuildRequest)(nil), // 56: protocol.chat.v1.InviteUserToGuildRequest
+ (*InviteUserToGuildResponse)(nil), // 57: protocol.chat.v1.InviteUserToGuildResponse
+ (*GuildKind_Normal)(nil), // 58: protocol.chat.v1.GuildKind.Normal
+ (*GuildKind_Room)(nil), // 59: protocol.chat.v1.GuildKind.Room
+ (*GuildKind_DirectMessage)(nil), // 60: protocol.chat.v1.GuildKind.DirectMessage
+ (*v1.Metadata)(nil), // 61: protocol.harmonytypes.v1.Metadata
}
var file_chat_v1_guilds_proto_depIdxs = []int32{
- 57, // 0: protocol.chat.v1.GuildKind.normal:type_name -> protocol.chat.v1.GuildKind.Normal
- 58, // 1: protocol.chat.v1.GuildKind.room:type_name -> protocol.chat.v1.GuildKind.Room
- 59, // 2: protocol.chat.v1.GuildKind.direct_message:type_name -> protocol.chat.v1.GuildKind.DirectMessage
+ 58, // 0: protocol.chat.v1.GuildKind.normal:type_name -> protocol.chat.v1.GuildKind.Normal
+ 59, // 1: protocol.chat.v1.GuildKind.room:type_name -> protocol.chat.v1.GuildKind.Room
+ 60, // 2: protocol.chat.v1.GuildKind.direct_message:type_name -> protocol.chat.v1.GuildKind.DirectMessage
1, // 3: protocol.chat.v1.Guild.kind:type_name -> protocol.chat.v1.GuildKind
- 60, // 4: protocol.chat.v1.Guild.metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 3, // 5: protocol.chat.v1.InviteWithId.invite:type_name -> protocol.chat.v1.Invite
- 60, // 6: protocol.chat.v1.CreateGuildRequest.metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 60, // 7: protocol.chat.v1.CreateRoomRequest.metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 6, // 8: protocol.chat.v1.GetGuildListResponse.guilds:type_name -> protocol.chat.v1.GuildListEntry
- 2, // 9: protocol.chat.v1.GetGuildResponse.guild:type_name -> protocol.chat.v1.Guild
- 4, // 10: protocol.chat.v1.GetGuildInvitesResponse.invites:type_name -> protocol.chat.v1.InviteWithId
- 60, // 11: protocol.chat.v1.UpdateGuildInformationRequest.new_metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 5, // 12: protocol.chat.v1.GetPendingInvitesResponse.pending_invites:type_name -> protocol.chat.v1.PendingInvite
- 13, // [13:13] is the sub-list for method output_type
- 13, // [13:13] is the sub-list for method input_type
- 13, // [13:13] is the sub-list for extension type_name
- 13, // [13:13] is the sub-list for extension extendee
- 0, // [0:13] is the sub-list for field type_name
+ 61, // 4: protocol.chat.v1.Guild.metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 2, // 5: protocol.chat.v1.GuildWithId.guild:type_name -> protocol.chat.v1.Guild
+ 4, // 6: protocol.chat.v1.InviteWithId.invite:type_name -> protocol.chat.v1.Invite
+ 61, // 7: protocol.chat.v1.CreateGuildRequest.metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 61, // 8: protocol.chat.v1.CreateRoomRequest.metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 7, // 9: protocol.chat.v1.GetGuildListResponse.guilds:type_name -> protocol.chat.v1.GuildListEntry
+ 2, // 10: protocol.chat.v1.GetGuildResponse.guild:type_name -> protocol.chat.v1.Guild
+ 5, // 11: protocol.chat.v1.GetGuildInvitesResponse.invites:type_name -> protocol.chat.v1.InviteWithId
+ 61, // 12: protocol.chat.v1.UpdateGuildInformationRequest.new_metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 6, // 13: protocol.chat.v1.GetPendingInvitesResponse.pending_invites:type_name -> protocol.chat.v1.PendingInvite
+ 14, // [14:14] is the sub-list for method output_type
+ 14, // [14:14] is the sub-list for method input_type
+ 14, // [14:14] is the sub-list for extension type_name
+ 14, // [14:14] is the sub-list for extension extendee
+ 0, // [0:14] is the sub-list for field type_name
}
func init() { file_chat_v1_guilds_proto_init() }
@@ -3558,7 +3624,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*Invite); i {
+ switch v := v.(*GuildWithId); i {
case 0:
return &v.state
case 1:
@@ -3570,7 +3636,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InviteWithId); i {
+ switch v := v.(*Invite); i {
case 0:
return &v.state
case 1:
@@ -3582,7 +3648,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PendingInvite); i {
+ switch v := v.(*InviteWithId); i {
case 0:
return &v.state
case 1:
@@ -3594,7 +3660,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GuildListEntry); i {
+ switch v := v.(*PendingInvite); i {
case 0:
return &v.state
case 1:
@@ -3606,7 +3672,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateGuildRequest); i {
+ switch v := v.(*GuildListEntry); i {
case 0:
return &v.state
case 1:
@@ -3618,7 +3684,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateGuildResponse); i {
+ switch v := v.(*CreateGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3630,7 +3696,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateRoomRequest); i {
+ switch v := v.(*CreateGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3642,7 +3708,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateRoomResponse); i {
+ switch v := v.(*CreateRoomRequest); i {
case 0:
return &v.state
case 1:
@@ -3654,7 +3720,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateDirectMessageRequest); i {
+ switch v := v.(*CreateRoomResponse); i {
case 0:
return &v.state
case 1:
@@ -3666,7 +3732,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateDirectMessageResponse); i {
+ switch v := v.(*CreateDirectMessageRequest); i {
case 0:
return &v.state
case 1:
@@ -3678,7 +3744,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateInviteRequest); i {
+ switch v := v.(*CreateDirectMessageResponse); i {
case 0:
return &v.state
case 1:
@@ -3690,7 +3756,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateInviteResponse); i {
+ switch v := v.(*CreateInviteRequest); i {
case 0:
return &v.state
case 1:
@@ -3702,7 +3768,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildListRequest); i {
+ switch v := v.(*CreateInviteResponse); i {
case 0:
return &v.state
case 1:
@@ -3714,7 +3780,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildListResponse); i {
+ switch v := v.(*GetGuildListRequest); i {
case 0:
return &v.state
case 1:
@@ -3726,7 +3792,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildRequest); i {
+ switch v := v.(*GetGuildListResponse); i {
case 0:
return &v.state
case 1:
@@ -3738,7 +3804,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildResponse); i {
+ switch v := v.(*GetGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3750,7 +3816,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildInvitesRequest); i {
+ switch v := v.(*GetGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3762,7 +3828,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildInvitesResponse); i {
+ switch v := v.(*GetGuildInvitesRequest); i {
case 0:
return &v.state
case 1:
@@ -3774,7 +3840,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildMembersRequest); i {
+ switch v := v.(*GetGuildInvitesResponse); i {
case 0:
return &v.state
case 1:
@@ -3786,7 +3852,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetGuildMembersResponse); i {
+ switch v := v.(*GetGuildMembersRequest); i {
case 0:
return &v.state
case 1:
@@ -3798,7 +3864,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateGuildInformationRequest); i {
+ switch v := v.(*GetGuildMembersResponse); i {
case 0:
return &v.state
case 1:
@@ -3810,7 +3876,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateGuildInformationResponse); i {
+ switch v := v.(*UpdateGuildInformationRequest); i {
case 0:
return &v.state
case 1:
@@ -3822,7 +3888,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpgradeRoomToGuildRequest); i {
+ switch v := v.(*UpdateGuildInformationResponse); i {
case 0:
return &v.state
case 1:
@@ -3834,7 +3900,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpgradeRoomToGuildResponse); i {
+ switch v := v.(*UpgradeRoomToGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3846,7 +3912,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteGuildRequest); i {
+ switch v := v.(*UpgradeRoomToGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3858,7 +3924,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteGuildResponse); i {
+ switch v := v.(*DeleteGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3870,7 +3936,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteInviteRequest); i {
+ switch v := v.(*DeleteGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3882,7 +3948,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteInviteResponse); i {
+ switch v := v.(*DeleteInviteRequest); i {
case 0:
return &v.state
case 1:
@@ -3894,7 +3960,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*JoinGuildRequest); i {
+ switch v := v.(*DeleteInviteResponse); i {
case 0:
return &v.state
case 1:
@@ -3906,7 +3972,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*JoinGuildResponse); i {
+ switch v := v.(*JoinGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3918,7 +3984,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewGuildRequest); i {
+ switch v := v.(*JoinGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3930,7 +3996,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*PreviewGuildResponse); i {
+ switch v := v.(*PreviewGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3942,7 +4008,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LeaveGuildRequest); i {
+ switch v := v.(*PreviewGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3954,7 +4020,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*LeaveGuildResponse); i {
+ switch v := v.(*LeaveGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -3966,7 +4032,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BanUserRequest); i {
+ switch v := v.(*LeaveGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -3978,7 +4044,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*BanUserResponse); i {
+ switch v := v.(*BanUserRequest); i {
case 0:
return &v.state
case 1:
@@ -3990,7 +4056,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KickUserRequest); i {
+ switch v := v.(*BanUserResponse); i {
case 0:
return &v.state
case 1:
@@ -4002,7 +4068,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*KickUserResponse); i {
+ switch v := v.(*KickUserRequest); i {
case 0:
return &v.state
case 1:
@@ -4014,7 +4080,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UnbanUserRequest); i {
+ switch v := v.(*KickUserResponse); i {
case 0:
return &v.state
case 1:
@@ -4026,7 +4092,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UnbanUserResponse); i {
+ switch v := v.(*UnbanUserRequest); i {
case 0:
return &v.state
case 1:
@@ -4038,7 +4104,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetBannedUsersRequest); i {
+ switch v := v.(*UnbanUserResponse); i {
case 0:
return &v.state
case 1:
@@ -4050,7 +4116,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetBannedUsersResponse); i {
+ switch v := v.(*GetBannedUsersRequest); i {
case 0:
return &v.state
case 1:
@@ -4062,7 +4128,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrantOwnershipRequest); i {
+ switch v := v.(*GetBannedUsersResponse); i {
case 0:
return &v.state
case 1:
@@ -4074,7 +4140,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GrantOwnershipResponse); i {
+ switch v := v.(*GrantOwnershipRequest); i {
case 0:
return &v.state
case 1:
@@ -4086,7 +4152,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GiveUpOwnershipRequest); i {
+ switch v := v.(*GrantOwnershipResponse); i {
case 0:
return &v.state
case 1:
@@ -4098,7 +4164,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GiveUpOwnershipResponse); i {
+ switch v := v.(*GiveUpOwnershipRequest); i {
case 0:
return &v.state
case 1:
@@ -4110,7 +4176,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPendingInvitesRequest); i {
+ switch v := v.(*GiveUpOwnershipResponse); i {
case 0:
return &v.state
case 1:
@@ -4122,7 +4188,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetPendingInvitesResponse); i {
+ switch v := v.(*GetPendingInvitesRequest); i {
case 0:
return &v.state
case 1:
@@ -4134,7 +4200,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RejectPendingInviteRequest); i {
+ switch v := v.(*GetPendingInvitesResponse); i {
case 0:
return &v.state
case 1:
@@ -4146,7 +4212,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RejectPendingInviteResponse); i {
+ switch v := v.(*RejectPendingInviteRequest); i {
case 0:
return &v.state
case 1:
@@ -4158,7 +4224,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IgnorePendingInviteRequest); i {
+ switch v := v.(*RejectPendingInviteResponse); i {
case 0:
return &v.state
case 1:
@@ -4170,7 +4236,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*IgnorePendingInviteResponse); i {
+ switch v := v.(*IgnorePendingInviteRequest); i {
case 0:
return &v.state
case 1:
@@ -4182,7 +4248,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InviteUserToGuildRequest); i {
+ switch v := v.(*IgnorePendingInviteResponse); i {
case 0:
return &v.state
case 1:
@@ -4194,7 +4260,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*InviteUserToGuildResponse); i {
+ switch v := v.(*InviteUserToGuildRequest); i {
case 0:
return &v.state
case 1:
@@ -4206,7 +4272,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GuildKind_Normal); i {
+ switch v := v.(*InviteUserToGuildResponse); i {
case 0:
return &v.state
case 1:
@@ -4218,7 +4284,7 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GuildKind_Room); i {
+ switch v := v.(*GuildKind_Normal); i {
case 0:
return &v.state
case 1:
@@ -4230,6 +4296,18 @@ func file_chat_v1_guilds_proto_init() {
}
}
file_chat_v1_guilds_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*GuildKind_Room); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_chat_v1_guilds_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*GuildKind_DirectMessage); i {
case 0:
return &v.state
@@ -4248,22 +4326,22 @@ func file_chat_v1_guilds_proto_init() {
(*GuildKind_DirectMessage_)(nil),
}
file_chat_v1_guilds_proto_msgTypes[1].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[4].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[6].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[8].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[10].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[22].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[33].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[50].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[52].OneofWrappers = []interface{}{}
- file_chat_v1_guilds_proto_msgTypes[54].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[5].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[7].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[9].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[11].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[23].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[34].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[51].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[53].OneofWrappers = []interface{}{}
+ file_chat_v1_guilds_proto_msgTypes[55].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_chat_v1_guilds_proto_rawDesc,
NumEnums: 1,
- NumMessages: 59,
+ NumMessages: 60,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/vendor/github.com/harmony-development/shibshib/gen/chat/v1/stream.pb.go b/vendor/github.com/harmony-development/shibshib/gen/chat/v1/stream.pb.go
index 8ff28f1a..792d3e78 100644
--- a/vendor/github.com/harmony-development/shibshib/gen/chat/v1/stream.pb.go
+++ b/vendor/github.com/harmony-development/shibshib/gen/chat/v1/stream.pb.go
@@ -29,6 +29,9 @@ const (
const _ = proto.ProtoPackageIsVersion4
// Request type for use in the `StreamEvents` endpoint.
+// By default, this endpoint will subscribe to all events.
+// Any guilds joined in the future will be added to the subscription as well.
+// Use the UnsubscribeFromAll event for unsubscribing from all current subscriptions and disable the automatic guild subscriptions
type StreamEventsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -40,6 +43,7 @@ type StreamEventsRequest struct {
// *StreamEventsRequest_SubscribeToGuild_
// *StreamEventsRequest_SubscribeToActions_
// *StreamEventsRequest_SubscribeToHomeserverEvents_
+ // *StreamEventsRequest_UnsubscribeFromAll_
Request isStreamEventsRequest_Request `protobuf_oneof:"request"`
}
@@ -103,6 +107,13 @@ func (x *StreamEventsRequest) GetSubscribeToHomeserverEvents() *StreamEventsRequ
return nil
}
+func (x *StreamEventsRequest) GetUnsubscribeFromAll() *StreamEventsRequest_UnsubscribeFromAll {
+ if x, ok := x.GetRequest().(*StreamEventsRequest_UnsubscribeFromAll_); ok {
+ return x.UnsubscribeFromAll
+ }
+ return nil
+}
+
type isStreamEventsRequest_Request interface {
isStreamEventsRequest_Request()
}
@@ -122,12 +133,19 @@ type StreamEventsRequest_SubscribeToHomeserverEvents_ struct {
SubscribeToHomeserverEvents *StreamEventsRequest_SubscribeToHomeserverEvents `protobuf:"bytes,3,opt,name=subscribe_to_homeserver_events,json=subscribeToHomeserverEvents,proto3,oneof"`
}
+type StreamEventsRequest_UnsubscribeFromAll_ struct {
+ // Unsubscribe from all events.
+ UnsubscribeFromAll *StreamEventsRequest_UnsubscribeFromAll `protobuf:"bytes,4,opt,name=unsubscribe_from_all,json=unsubscribeFromAll,proto3,oneof"`
+}
+
func (*StreamEventsRequest_SubscribeToGuild_) isStreamEventsRequest_Request() {}
func (*StreamEventsRequest_SubscribeToActions_) isStreamEventsRequest_Request() {}
func (*StreamEventsRequest_SubscribeToHomeserverEvents_) isStreamEventsRequest_Request() {}
+func (*StreamEventsRequest_UnsubscribeFromAll_) isStreamEventsRequest_Request() {}
+
// Used in the `StreamEvents` endpoint.
type StreamEventsResponse struct {
state protoimpl.MessageState
@@ -860,6 +878,45 @@ func (*StreamEventsRequest_SubscribeToHomeserverEvents) Descriptor() ([]byte, []
return file_chat_v1_stream_proto_rawDescGZIP(), []int{0, 2}
}
+// Event to unsubscribe from all events.
+type StreamEventsRequest_UnsubscribeFromAll struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+}
+
+func (x *StreamEventsRequest_UnsubscribeFromAll) Reset() {
+ *x = StreamEventsRequest_UnsubscribeFromAll{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_chat_v1_stream_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *StreamEventsRequest_UnsubscribeFromAll) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StreamEventsRequest_UnsubscribeFromAll) ProtoMessage() {}
+
+func (x *StreamEventsRequest_UnsubscribeFromAll) ProtoReflect() protoreflect.Message {
+ mi := &file_chat_v1_stream_proto_msgTypes[6]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use StreamEventsRequest_UnsubscribeFromAll.ProtoReflect.Descriptor instead.
+func (*StreamEventsRequest_UnsubscribeFromAll) Descriptor() ([]byte, []int) {
+ return file_chat_v1_stream_proto_rawDescGZIP(), []int{0, 3}
+}
+
// Event sent when a new message is sent.
type StreamEvent_MessageSent struct {
state protoimpl.MessageState
@@ -881,7 +938,7 @@ type StreamEvent_MessageSent struct {
func (x *StreamEvent_MessageSent) Reset() {
*x = StreamEvent_MessageSent{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[6]
+ mi := &file_chat_v1_stream_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -894,7 +951,7 @@ func (x *StreamEvent_MessageSent) String() string {
func (*StreamEvent_MessageSent) ProtoMessage() {}
func (x *StreamEvent_MessageSent) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[6]
+ mi := &file_chat_v1_stream_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -966,7 +1023,7 @@ type StreamEvent_MessageUpdated struct {
func (x *StreamEvent_MessageUpdated) Reset() {
*x = StreamEvent_MessageUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[7]
+ mi := &file_chat_v1_stream_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -979,7 +1036,7 @@ func (x *StreamEvent_MessageUpdated) String() string {
func (*StreamEvent_MessageUpdated) ProtoMessage() {}
func (x *StreamEvent_MessageUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[7]
+ mi := &file_chat_v1_stream_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1047,7 +1104,7 @@ type StreamEvent_MessageDeleted struct {
func (x *StreamEvent_MessageDeleted) Reset() {
*x = StreamEvent_MessageDeleted{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[8]
+ mi := &file_chat_v1_stream_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1060,7 +1117,7 @@ func (x *StreamEvent_MessageDeleted) String() string {
func (*StreamEvent_MessageDeleted) ProtoMessage() {}
func (x *StreamEvent_MessageDeleted) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[8]
+ mi := &file_chat_v1_stream_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1120,7 +1177,7 @@ type StreamEvent_ChannelCreated struct {
func (x *StreamEvent_ChannelCreated) Reset() {
*x = StreamEvent_ChannelCreated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[9]
+ mi := &file_chat_v1_stream_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1133,7 +1190,7 @@ func (x *StreamEvent_ChannelCreated) String() string {
func (*StreamEvent_ChannelCreated) ProtoMessage() {}
func (x *StreamEvent_ChannelCreated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[9]
+ mi := &file_chat_v1_stream_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1210,7 +1267,7 @@ type StreamEvent_ChannelUpdated struct {
func (x *StreamEvent_ChannelUpdated) Reset() {
*x = StreamEvent_ChannelUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[10]
+ mi := &file_chat_v1_stream_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1223,7 +1280,7 @@ func (x *StreamEvent_ChannelUpdated) String() string {
func (*StreamEvent_ChannelUpdated) ProtoMessage() {}
func (x *StreamEvent_ChannelUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[10]
+ mi := &file_chat_v1_stream_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1284,7 +1341,7 @@ type StreamEvent_ChannelPositionUpdated struct {
func (x *StreamEvent_ChannelPositionUpdated) Reset() {
*x = StreamEvent_ChannelPositionUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[11]
+ mi := &file_chat_v1_stream_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1297,7 +1354,7 @@ func (x *StreamEvent_ChannelPositionUpdated) String() string {
func (*StreamEvent_ChannelPositionUpdated) ProtoMessage() {}
func (x *StreamEvent_ChannelPositionUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[11]
+ mi := &file_chat_v1_stream_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1349,7 +1406,7 @@ type StreamEvent_ChannelsReordered struct {
func (x *StreamEvent_ChannelsReordered) Reset() {
*x = StreamEvent_ChannelsReordered{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[12]
+ mi := &file_chat_v1_stream_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1362,7 +1419,7 @@ func (x *StreamEvent_ChannelsReordered) String() string {
func (*StreamEvent_ChannelsReordered) ProtoMessage() {}
func (x *StreamEvent_ChannelsReordered) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[12]
+ mi := &file_chat_v1_stream_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1407,7 +1464,7 @@ type StreamEvent_ChannelDeleted struct {
func (x *StreamEvent_ChannelDeleted) Reset() {
*x = StreamEvent_ChannelDeleted{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[13]
+ mi := &file_chat_v1_stream_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1420,7 +1477,7 @@ func (x *StreamEvent_ChannelDeleted) String() string {
func (*StreamEvent_ChannelDeleted) ProtoMessage() {}
func (x *StreamEvent_ChannelDeleted) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[13]
+ mi := &file_chat_v1_stream_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1469,7 +1526,7 @@ type StreamEvent_GuildUpdated struct {
func (x *StreamEvent_GuildUpdated) Reset() {
*x = StreamEvent_GuildUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[14]
+ mi := &file_chat_v1_stream_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1482,7 +1539,7 @@ func (x *StreamEvent_GuildUpdated) String() string {
func (*StreamEvent_GuildUpdated) ProtoMessage() {}
func (x *StreamEvent_GuildUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[14]
+ mi := &file_chat_v1_stream_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1539,7 +1596,7 @@ type StreamEvent_GuildDeleted struct {
func (x *StreamEvent_GuildDeleted) Reset() {
*x = StreamEvent_GuildDeleted{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[15]
+ mi := &file_chat_v1_stream_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1552,7 +1609,7 @@ func (x *StreamEvent_GuildDeleted) String() string {
func (*StreamEvent_GuildDeleted) ProtoMessage() {}
func (x *StreamEvent_GuildDeleted) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[15]
+ mi := &file_chat_v1_stream_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1590,7 +1647,7 @@ type StreamEvent_MemberJoined struct {
func (x *StreamEvent_MemberJoined) Reset() {
*x = StreamEvent_MemberJoined{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[16]
+ mi := &file_chat_v1_stream_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1603,7 +1660,7 @@ func (x *StreamEvent_MemberJoined) String() string {
func (*StreamEvent_MemberJoined) ProtoMessage() {}
func (x *StreamEvent_MemberJoined) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[16]
+ mi := &file_chat_v1_stream_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1650,7 +1707,7 @@ type StreamEvent_MemberLeft struct {
func (x *StreamEvent_MemberLeft) Reset() {
*x = StreamEvent_MemberLeft{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[17]
+ mi := &file_chat_v1_stream_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1663,7 +1720,7 @@ func (x *StreamEvent_MemberLeft) String() string {
func (*StreamEvent_MemberLeft) ProtoMessage() {}
func (x *StreamEvent_MemberLeft) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[17]
+ mi := &file_chat_v1_stream_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1715,7 +1772,7 @@ type StreamEvent_GuildAddedToList struct {
func (x *StreamEvent_GuildAddedToList) Reset() {
*x = StreamEvent_GuildAddedToList{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[18]
+ mi := &file_chat_v1_stream_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1728,7 +1785,7 @@ func (x *StreamEvent_GuildAddedToList) String() string {
func (*StreamEvent_GuildAddedToList) ProtoMessage() {}
func (x *StreamEvent_GuildAddedToList) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[18]
+ mi := &file_chat_v1_stream_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1773,7 +1830,7 @@ type StreamEvent_GuildRemovedFromList struct {
func (x *StreamEvent_GuildRemovedFromList) Reset() {
*x = StreamEvent_GuildRemovedFromList{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[19]
+ mi := &file_chat_v1_stream_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1786,7 +1843,7 @@ func (x *StreamEvent_GuildRemovedFromList) String() string {
func (*StreamEvent_GuildRemovedFromList) ProtoMessage() {}
func (x *StreamEvent_GuildRemovedFromList) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[19]
+ mi := &file_chat_v1_stream_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1837,7 +1894,7 @@ type StreamEvent_ActionPerformed struct {
func (x *StreamEvent_ActionPerformed) Reset() {
*x = StreamEvent_ActionPerformed{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[20]
+ mi := &file_chat_v1_stream_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1850,7 +1907,7 @@ func (x *StreamEvent_ActionPerformed) String() string {
func (*StreamEvent_ActionPerformed) ProtoMessage() {}
func (x *StreamEvent_ActionPerformed) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[20]
+ mi := &file_chat_v1_stream_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1918,7 +1975,7 @@ type StreamEvent_RoleMoved struct {
func (x *StreamEvent_RoleMoved) Reset() {
*x = StreamEvent_RoleMoved{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[21]
+ mi := &file_chat_v1_stream_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1931,7 +1988,7 @@ func (x *StreamEvent_RoleMoved) String() string {
func (*StreamEvent_RoleMoved) ProtoMessage() {}
func (x *StreamEvent_RoleMoved) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[21]
+ mi := &file_chat_v1_stream_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1983,7 +2040,7 @@ type StreamEvent_RoleDeleted struct {
func (x *StreamEvent_RoleDeleted) Reset() {
*x = StreamEvent_RoleDeleted{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[22]
+ mi := &file_chat_v1_stream_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1996,7 +2053,7 @@ func (x *StreamEvent_RoleDeleted) String() string {
func (*StreamEvent_RoleDeleted) ProtoMessage() {}
func (x *StreamEvent_RoleDeleted) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[22]
+ mi := &file_chat_v1_stream_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2049,7 +2106,7 @@ type StreamEvent_RoleCreated struct {
func (x *StreamEvent_RoleCreated) Reset() {
*x = StreamEvent_RoleCreated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[23]
+ mi := &file_chat_v1_stream_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2062,7 +2119,7 @@ func (x *StreamEvent_RoleCreated) String() string {
func (*StreamEvent_RoleCreated) ProtoMessage() {}
func (x *StreamEvent_RoleCreated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[23]
+ mi := &file_chat_v1_stream_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2143,7 +2200,7 @@ type StreamEvent_RoleUpdated struct {
func (x *StreamEvent_RoleUpdated) Reset() {
*x = StreamEvent_RoleUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[24]
+ mi := &file_chat_v1_stream_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2156,7 +2213,7 @@ func (x *StreamEvent_RoleUpdated) String() string {
func (*StreamEvent_RoleUpdated) ProtoMessage() {}
func (x *StreamEvent_RoleUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[24]
+ mi := &file_chat_v1_stream_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2235,7 +2292,7 @@ type StreamEvent_RolePermissionsUpdated struct {
func (x *StreamEvent_RolePermissionsUpdated) Reset() {
*x = StreamEvent_RolePermissionsUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[25]
+ mi := &file_chat_v1_stream_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2248,7 +2305,7 @@ func (x *StreamEvent_RolePermissionsUpdated) String() string {
func (*StreamEvent_RolePermissionsUpdated) ProtoMessage() {}
func (x *StreamEvent_RolePermissionsUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[25]
+ mi := &file_chat_v1_stream_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2309,7 +2366,7 @@ type StreamEvent_UserRolesUpdated struct {
func (x *StreamEvent_UserRolesUpdated) Reset() {
*x = StreamEvent_UserRolesUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[26]
+ mi := &file_chat_v1_stream_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2322,7 +2379,7 @@ func (x *StreamEvent_UserRolesUpdated) String() string {
func (*StreamEvent_UserRolesUpdated) ProtoMessage() {}
func (x *StreamEvent_UserRolesUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[26]
+ mi := &file_chat_v1_stream_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2376,7 +2433,7 @@ type StreamEvent_Typing struct {
func (x *StreamEvent_Typing) Reset() {
*x = StreamEvent_Typing{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[27]
+ mi := &file_chat_v1_stream_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2389,7 +2446,7 @@ func (x *StreamEvent_Typing) String() string {
func (*StreamEvent_Typing) ProtoMessage() {}
func (x *StreamEvent_Typing) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[27]
+ mi := &file_chat_v1_stream_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2448,7 +2505,7 @@ type StreamEvent_PermissionUpdated struct {
func (x *StreamEvent_PermissionUpdated) Reset() {
*x = StreamEvent_PermissionUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[28]
+ mi := &file_chat_v1_stream_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2461,7 +2518,7 @@ func (x *StreamEvent_PermissionUpdated) String() string {
func (*StreamEvent_PermissionUpdated) ProtoMessage() {}
func (x *StreamEvent_PermissionUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[28]
+ mi := &file_chat_v1_stream_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2525,7 +2582,7 @@ type StreamEvent_MessagePinned struct {
func (x *StreamEvent_MessagePinned) Reset() {
*x = StreamEvent_MessagePinned{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[29]
+ mi := &file_chat_v1_stream_proto_msgTypes[30]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2538,7 +2595,7 @@ func (x *StreamEvent_MessagePinned) String() string {
func (*StreamEvent_MessagePinned) ProtoMessage() {}
func (x *StreamEvent_MessagePinned) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[29]
+ mi := &file_chat_v1_stream_proto_msgTypes[30]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2595,7 +2652,7 @@ type StreamEvent_MessageUnpinned struct {
func (x *StreamEvent_MessageUnpinned) Reset() {
*x = StreamEvent_MessageUnpinned{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[30]
+ mi := &file_chat_v1_stream_proto_msgTypes[31]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2608,7 +2665,7 @@ func (x *StreamEvent_MessageUnpinned) String() string {
func (*StreamEvent_MessageUnpinned) ProtoMessage() {}
func (x *StreamEvent_MessageUnpinned) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[30]
+ mi := &file_chat_v1_stream_proto_msgTypes[31]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2664,7 +2721,7 @@ type StreamEvent_ReactionUpdated struct {
func (x *StreamEvent_ReactionUpdated) Reset() {
*x = StreamEvent_ReactionUpdated{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[31]
+ mi := &file_chat_v1_stream_proto_msgTypes[32]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2677,7 +2734,7 @@ func (x *StreamEvent_ReactionUpdated) String() string {
func (*StreamEvent_ReactionUpdated) ProtoMessage() {}
func (x *StreamEvent_ReactionUpdated) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[31]
+ mi := &file_chat_v1_stream_proto_msgTypes[32]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2734,7 +2791,7 @@ type StreamEvent_OwnerAdded struct {
func (x *StreamEvent_OwnerAdded) Reset() {
*x = StreamEvent_OwnerAdded{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[32]
+ mi := &file_chat_v1_stream_proto_msgTypes[33]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2747,7 +2804,7 @@ func (x *StreamEvent_OwnerAdded) String() string {
func (*StreamEvent_OwnerAdded) ProtoMessage() {}
func (x *StreamEvent_OwnerAdded) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[32]
+ mi := &file_chat_v1_stream_proto_msgTypes[33]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2783,7 +2840,7 @@ type StreamEvent_OwnerRemoved struct {
func (x *StreamEvent_OwnerRemoved) Reset() {
*x = StreamEvent_OwnerRemoved{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[33]
+ mi := &file_chat_v1_stream_proto_msgTypes[34]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2796,7 +2853,7 @@ func (x *StreamEvent_OwnerRemoved) String() string {
func (*StreamEvent_OwnerRemoved) ProtoMessage() {}
func (x *StreamEvent_OwnerRemoved) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[33]
+ mi := &file_chat_v1_stream_proto_msgTypes[34]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2836,7 +2893,7 @@ type StreamEvent_InviteReceived struct {
func (x *StreamEvent_InviteReceived) Reset() {
*x = StreamEvent_InviteReceived{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[34]
+ mi := &file_chat_v1_stream_proto_msgTypes[35]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2849,7 +2906,7 @@ func (x *StreamEvent_InviteReceived) String() string {
func (*StreamEvent_InviteReceived) ProtoMessage() {}
func (x *StreamEvent_InviteReceived) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[34]
+ mi := &file_chat_v1_stream_proto_msgTypes[35]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2903,7 +2960,7 @@ type StreamEvent_InviteRejected struct {
func (x *StreamEvent_InviteRejected) Reset() {
*x = StreamEvent_InviteRejected{}
if protoimpl.UnsafeEnabled {
- mi := &file_chat_v1_stream_proto_msgTypes[35]
+ mi := &file_chat_v1_stream_proto_msgTypes[36]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -2916,7 +2973,7 @@ func (x *StreamEvent_InviteRejected) String() string {
func (*StreamEvent_InviteRejected) ProtoMessage() {}
func (x *StreamEvent_InviteRejected) ProtoReflect() protoreflect.Message {
- mi := &file_chat_v1_stream_proto_msgTypes[35]
+ mi := &file_chat_v1_stream_proto_msgTypes[36]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -2969,7 +3026,7 @@ var file_chat_v1_stream_proto_rawDesc = []byte{
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2f, 0x76, 0x31,
0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x70,
0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe5, 0x03, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61,
+ 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x04, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61,
0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x66,
0x0a, 0x12, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x67,
0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x70, 0x72, 0x6f,
@@ -2992,459 +3049,467 @@ var file_chat_v1_stream_proto_rawDesc = []byte{
0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x6f,
0x48, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73,
0x48, 0x00, 0x52, 0x1b, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x6f, 0x48,
- 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x1a,
- 0x2d, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x6f, 0x47, 0x75,
- 0x69, 0x6c, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x14,
- 0x0a, 0x12, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x6f, 0x41, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x1d, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
- 0x65, 0x54, 0x6f, 0x48, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xca,
- 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x63, 0x68, 0x61, 0x74, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45,
- 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74, 0x12, 0x36, 0x0a, 0x05,
- 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x05, 0x65,
- 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69,
- 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0xb2, 0x34, 0x0a, 0x0b,
- 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x5f, 0x0a, 0x13, 0x67,
- 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x74, 0x6f, 0x5f, 0x6c, 0x69,
- 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x64,
- 0x65, 0x64, 0x54, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x6b, 0x0a, 0x17,
- 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x66, 0x72,
- 0x6f, 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e,
+ 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12,
+ 0x6c, 0x0a, 0x14, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5f, 0x66,
+ 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69,
- 0x6c, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x73,
- 0x74, 0x48, 0x00, 0x52, 0x14, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
- 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5a, 0x0a, 0x10, 0x61, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
- 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65,
- 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d,
- 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66,
- 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72,
- 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53,
- 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x6e, 0x74, 0x4d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x65,
- 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x0f,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
- 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
- 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45,
- 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x4d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
- 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e,
- 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x55,
- 0x0a, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x57, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
- 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68,
- 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e,
- 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x4f,
- 0x0a, 0x0c, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x18, 0x0a,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
- 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76,
- 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x48, 0x00, 0x52, 0x0b, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12,
- 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x47, 0x75, 0x69,
- 0x6c, 0x64, 0x12, 0x51, 0x0a, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d,
- 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+ 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x12, 0x75, 0x6e, 0x73, 0x75, 0x62,
+ 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6c, 0x6c, 0x1a, 0x2d, 0x0a,
+ 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x6f, 0x47, 0x75, 0x69, 0x6c,
+ 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x14, 0x0a, 0x12,
+ 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x6f, 0x41, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x1a, 0x1d, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54,
+ 0x6f, 0x48, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x73, 0x1a, 0x14, 0x0a, 0x12, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
+ 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x6c, 0x6c, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x22, 0xca, 0x01, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65,
+ 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x04, 0x63,
+ 0x68, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72,
- 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4a,
- 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x4d,
- 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x6d, 0x65,
- 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f,
- 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
- 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72,
- 0x4c, 0x65, 0x66, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x4d, 0x65, 0x6d, 0x62,
- 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
+ 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x63, 0x68, 0x61, 0x74,
+ 0x12, 0x36, 0x0a, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x65, 0x6d, 0x6f, 0x74, 0x65,
+ 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48,
+ 0x00, 0x52, 0x05, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66,
+ 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70,
+ 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22,
+ 0xb2, 0x34, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12,
+ 0x5f, 0x0a, 0x13, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x74,
+ 0x6f, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c,
+ 0x64, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10,
+ 0x67, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x4c, 0x69, 0x73, 0x74,
+ 0x12, 0x6b, 0x0a, 0x17, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
+ 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f,
+ 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x14, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65,
+ 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5a, 0x0a,
+ 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61,
+ 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72,
+ 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x0c, 0x73, 0x65, 0x6e,
+ 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e,
+ 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65,
+ 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x55, 0x0a, 0x0e, 0x65, 0x64, 0x69,
+ 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
+ 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48,
+ 0x00, 0x52, 0x0d, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x12, 0x57, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
+ 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72,
+ 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x57, 0x0a, 0x0f, 0x63, 0x72, 0x65,
+ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x2e, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x74, 0x79, 0x70, 0x69,
- 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x64,
- 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x48,
- 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x0c,
- 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
+ 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
+ 0x48, 0x00, 0x52, 0x0e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x12, 0x55, 0x0a, 0x0e, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x65, 0x64, 0x69, 0x74,
+ 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x57, 0x0a, 0x0f, 0x64, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52,
- 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x64, 0x0a, 0x12,
- 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64,
+ 0x48, 0x00, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x12, 0x4f, 0x0a, 0x0c, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x75, 0x69,
+ 0x6c, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d,
- 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00,
- 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x73,
- 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x73,
- 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00,
- 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x64, 0x12, 0x60, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
- 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
- 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x65,
- 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48,
- 0x00, 0x52, 0x11, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x12, 0x60, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73,
- 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
- 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e,
- 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65,
- 0x64, 0x48, 0x00, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x6f,
- 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x17, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64,
- 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f,
- 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52,
- 0x15, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f,
- 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
- 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,
+ 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x47, 0x75,
+ 0x69, 0x6c, 0x64, 0x12, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x64, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x51, 0x0a, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x65, 0x64,
+ 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x6d,
+ 0x62, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6a, 0x6f, 0x69,
+ 0x6e, 0x65, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x4b, 0x0a, 0x0b, 0x6c, 0x65, 0x66,
+ 0x74, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65,
- 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0d, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x10,
- 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x6e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64,
- 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x66, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x6c, 0x65, 0x66, 0x74,
+ 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67,
+ 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06,
+ 0x74, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x4e, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x63,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4e, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x64,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x44,
+ 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x48, 0x0a, 0x0a, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6d,
+ 0x6f, 0x76, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x6f,
+ 0x76, 0x65, 0x64, 0x48, 0x00, 0x52, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x4d, 0x6f, 0x76, 0x65, 0x64,
+ 0x12, 0x4e, 0x0a, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x70,
- 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x63,
- 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x1a, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x64, 0x48, 0x00, 0x52, 0x0b, 0x72, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x12, 0x64, 0x0a, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x5f, 0x75,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70,
+ 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
+ 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x6c, 0x65,
+ 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x72, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x73, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x5e, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72,
+ 0x6f, 0x6c, 0x65, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e,
- 0x74, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x64, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x61, 0x64,
- 0x64, 0x65, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72,
- 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x41, 0x64,
- 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65,
- 0x64, 0x12, 0x51, 0x0a, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65,
- 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d,
- 0x6f, 0x76, 0x65, 0x64, 0x12, 0x57, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x72,
- 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
- 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x69,
- 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x57, 0x0a,
- 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64,
- 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x48, 0x00, 0x52, 0x10, 0x75, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x60, 0x0a, 0x12, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x15, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
+ 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x11, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
+ 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x60, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x73, 0x5f, 0x72, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x18, 0x16,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
+ 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76,
+ 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x6f, 0x72,
+ 0x64, 0x65, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x73, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x17, 0x65, 0x64,
+ 0x69, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x70, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53,
+ 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
+ 0x64, 0x48, 0x00, 0x52, 0x15, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x0e, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x18, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
+ 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e,
+ 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x48,
+ 0x00, 0x52, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64,
+ 0x12, 0x5a, 0x0a, 0x10, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x75, 0x6e, 0x70, 0x69,
+ 0x6e, 0x6e, 0x65, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x10,
+ 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
+ 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
- 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65,
- 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
- 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0xc5, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x65, 0x63, 0x68, 0x6f, 0x49,
- 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d,
- 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x33, 0x0a,
- 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76,
- 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x69, 0x64, 0x1a, 0xc8,
- 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x64,
- 0x69, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65,
- 0x64, 0x69, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x63,
- 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70,
+ 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x6f, 0x77, 0x6e, 0x65,
+ 0x72, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
+ 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x77, 0x6e,
+ 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x77, 0x6e, 0x65, 0x72,
+ 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x51, 0x0a, 0x0d, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x72,
+ 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e,
- 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x52, 0x0a, 0x6e,
- 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x69, 0x0a, 0x0e, 0x4d, 0x65, 0x73,
- 0x73, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67,
+ 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x77, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x77, 0x6e, 0x65,
+ 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x57, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x18, 0x1d, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61,
+ 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74,
+ 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x48,
+ 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
+ 0x64, 0x12, 0x57, 0x0a, 0x0f, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x6a, 0x65,
+ 0x63, 0x74, 0x65, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
+ 0x72, 0x65, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x1a, 0xc5, 0x01, 0x0a, 0x0b, 0x4d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x65, 0x63,
+ 0x68, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x65,
+ 0x63, 0x68, 0x6f, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64,
+ 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49,
+ 0x64, 0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68,
+ 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f,
+ 0x69, 0x64, 0x1a, 0xc8, 0x01, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b,
+ 0x0a, 0x09, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
+ 0x04, 0x52, 0x08, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0b, 0x6e,
+ 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
+ 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x54, 0x65, 0x78,
+ 0x74, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x69, 0x0a,
+ 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12,
+ 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
+ 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x1a, 0xa7, 0x02, 0x0a, 0x0e, 0x43, 0x68, 0x61,
+ 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67,
0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
- 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x49, 0x64, 0x1a, 0xa7, 0x02, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
- 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
- 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52,
- 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
- 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
- 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x43, 0x0a, 0x08,
- 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22,
- 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e,
- 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01,
- 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xd4,
- 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e,
- 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
- 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0c, 0x6e,
- 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72,
- 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f,
- 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xb3, 0x01, 0x0a, 0x16, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
- 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x4e, 0x0a, 0x0c, 0x6e, 0x65,
- 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d,
- 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d,
- 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50,
- 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e,
- 0x65, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x4f, 0x0a, 0x11, 0x43,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x65, 0x64,
- 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04,
- 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x73, 0x1a, 0x4a, 0x0a, 0x0e,
- 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x19,
- 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61,
- 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63,
- 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0xe9, 0x01, 0x0a, 0x0c, 0x47, 0x75, 0x69,
- 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69,
- 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69,
- 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d,
- 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x63, 0x74,
- 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x6e, 0x65, 0x77,
- 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0c, 0x6e, 0x65,
- 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d,
- 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x63, 0x74,
- 0x75, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x1a, 0x29, 0x0a, 0x0c, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a,
- 0x46, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x12,
- 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
- 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
- 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x86, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62,
- 0x65, 0x72, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65,
- 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x40,
- 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
- 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x65, 0x61,
- 0x73, 0x6f, 0x6e, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e,
- 0x1a, 0x4d, 0x0a, 0x10, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x64, 0x65, 0x64, 0x54, 0x6f,
- 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
- 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x1a,
- 0x51, 0x0a, 0x14, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x46,
- 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x1a, 0xbe, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72,
- 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49,
- 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12,
- 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c,
- 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
- 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74,
- 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c,
- 0x6f, 0x61, 0x64, 0x1a, 0x8a, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x6c, 0x65, 0x4d, 0x6f, 0x76, 0x65,
- 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07,
- 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72,
- 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x6f, 0x73,
- 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72,
+ 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x6f, 0x73,
+ 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79,
0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74,
- 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e,
- 0x1a, 0x41, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12,
- 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f,
- 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c,
- 0x65, 0x49, 0x64, 0x1a, 0x9d, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x43, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17,
- 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63,
- 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f,
- 0x72, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x05, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x61,
- 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x61,
- 0x62, 0x6c, 0x65, 0x1a, 0x87, 0x02, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x55, 0x70, 0x64, 0x61,
+ 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a,
+ 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x72,
+ 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x43,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64,
+ 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01,
+ 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61,
+ 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x1a, 0xd4, 0x01, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x55, 0x70,
+ 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64,
+ 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
+ 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12,
+ 0x4a, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
+ 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
+ 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31,
+ 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x01, 0x52, 0x0b, 0x6e, 0x65, 0x77,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f,
+ 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77,
+ 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xb3, 0x01, 0x0a, 0x16, 0x43, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
+ 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x4e,
+ 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
+ 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e,
+ 0x49, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b,
+ 0x6e, 0x65, 0x77, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0f,
+ 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a,
+ 0x4f, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x6f, 0x72, 0x64,
+ 0x65, 0x72, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01,
+ 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x73,
+ 0x1a, 0x4a, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a,
+ 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0xe9, 0x01, 0x0a,
+ 0x0c, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a,
+ 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65,
+ 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6e, 0x65, 0x77, 0x5f,
+ 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52,
+ 0x0a, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a,
+ 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
+ 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x48, 0x02, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x4d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e,
+ 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x77, 0x5f,
+ 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f,
+ 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x29, 0x0a, 0x0c, 0x47, 0x75, 0x69, 0x6c,
+ 0x64, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x49, 0x64, 0x1a, 0x46, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4a, 0x6f, 0x69,
+ 0x6e, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64,
+ 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x1a, 0x86, 0x01, 0x0a, 0x0a,
+ 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65,
+ 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d,
+ 0x65, 0x6d, 0x62, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x73,
+ 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+ 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x61, 0x76,
+ 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x65,
+ 0x61, 0x73, 0x6f, 0x6e, 0x1a, 0x4d, 0x0a, 0x10, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x41, 0x64, 0x64,
+ 0x65, 0x64, 0x54, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
+ 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
+ 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x1a, 0x51, 0x0a, 0x14, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x65, 0x6d, 0x6f,
+ 0x76, 0x65, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x68, 0x6f, 0x6d, 0x65, 0x73, 0x65,
+ 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x6d, 0x65,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x1a, 0xbe, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x6f,
+ 0x6e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75,
+ 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75,
+ 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
+ 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
+ 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x07,
+ 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31,
+ 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x07,
+ 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x1a, 0x8a, 0x01, 0x0a, 0x09, 0x52, 0x6f, 0x6c, 0x65,
+ 0x4d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69,
+ 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64,
+ 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x0c, 0x6e, 0x65, 0x77,
+ 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d, 0x6f,
+ 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x50,
+ 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x6f, 0x73, 0x69,
+ 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x41, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x65,
0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17,
0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e,
- 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x65, 0x77,
- 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x63,
- 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x08, 0x6e, 0x65,
- 0x77, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6e, 0x65, 0x77,
- 0x5f, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x08,
- 0x6e, 0x65, 0x77, 0x48, 0x6f, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x6e,
- 0x65, 0x77, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
- 0x08, 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c, 0x65,
- 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
- 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x0c,
- 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x42, 0x0f, 0x0a, 0x0d,
- 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0xba, 0x01,
- 0x0a, 0x16, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
- 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e,
- 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f,
- 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64,
- 0x12, 0x39, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x04, 0x20,
- 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63,
- 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f,
- 0x6e, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x50, 0x65, 0x72, 0x6d, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f,
- 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x1a, 0x68, 0x0a, 0x10, 0x55, 0x73,
- 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19,
- 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
- 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72,
- 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69,
- 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x52, 0x6f, 0x6c,
- 0x65, 0x49, 0x64, 0x73, 0x1a, 0x5b, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x17,
- 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49,
- 0x64, 0x1a, 0x87, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e,
+ 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x1a, 0x9d, 0x01, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65,
+ 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
+ 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
+ 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
+ 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x18, 0x05,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70,
+ 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x70,
+ 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x87, 0x02, 0x0a, 0x0b, 0x52, 0x6f, 0x6c, 0x65,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64,
0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64,
- 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64,
- 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
- 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
- 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02,
- 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b, 0x42, 0x0d, 0x0a, 0x0b,
- 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x1a, 0x68, 0x0a, 0x0d, 0x4d,
- 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08,
+ 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x08, 0x6e,
+ 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
+ 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6e,
+ 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
+ 0x52, 0x08, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a,
+ 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x6f, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
+ 0x48, 0x02, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x48, 0x6f, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12,
+ 0x26, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c, 0x65, 0x18,
+ 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x65, 0x77, 0x50, 0x69, 0x6e, 0x67,
+ 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x77, 0x5f,
+ 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c,
+ 0x6f, 0x72, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x68, 0x6f, 0x69, 0x73, 0x74,
+ 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x61, 0x62, 0x6c,
+ 0x65, 0x1a, 0xba, 0x01, 0x0a, 0x16, 0x52, 0x6f, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08,
+ 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
+ 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e,
+ 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09, 0x63,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x07, 0x72,
+ 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x72, 0x6f,
+ 0x6c, 0x65, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x6e, 0x65, 0x77, 0x5f, 0x70, 0x65, 0x72, 0x6d,
+ 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
+ 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69,
+ 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6e, 0x65, 0x77, 0x50, 0x65, 0x72, 0x6d, 0x73, 0x42,
+ 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x1a, 0x68,
+ 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x17, 0x0a,
+ 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06,
+ 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x72, 0x6f,
+ 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x6e, 0x65,
+ 0x77, 0x52, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x1a, 0x5b, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x69,
+ 0x6e, 0x67, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e,
+ 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x1a, 0x87, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73,
+ 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67,
+ 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x09, 0x63, 0x68,
+ 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75,
+ 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79,
+ 0x12, 0x0e, 0x0a, 0x02, 0x6f, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x6f, 0x6b,
+ 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x1a,
+ 0x68, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x69, 0x6e, 0x6e, 0x65, 0x64,
+ 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63,
+ 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65,
+ 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09,
+ 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x1a, 0x6a, 0x0a, 0x0f, 0x4d, 0x65, 0x73,
+ 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08,
0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07,
0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73,
- 0x61, 0x67, 0x65, 0x49, 0x64, 0x1a, 0x6a, 0x0a, 0x0f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x55, 0x6e, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c,
- 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69,
- 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c,
- 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64,
- 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49,
- 0x64, 0x1a, 0xa2, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64,
- 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12,
- 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
- 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x36,
- 0x0a, 0x08, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74,
- 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65,
- 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x25, 0x0a, 0x0a, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x41,
- 0x64, 0x64, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x27, 0x0a,
- 0x0c, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x17, 0x0a,
- 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06,
- 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x7c, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
- 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69,
- 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76,
- 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x69, 0x74,
- 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x69, 0x6e, 0x76,
- 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65,
- 0x72, 0x5f, 0x69, 0x64, 0x1a, 0x61, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x52, 0x65,
- 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f,
- 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49,
- 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x17,
- 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
- 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74,
- 0x42, 0xc1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
- 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61,
- 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62,
- 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64, 0x65, 0x76,
- 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73, 0x68, 0x69,
- 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x68,
- 0x61, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02, 0x10, 0x50, 0x72, 0x6f,
- 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x10,
- 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31,
- 0xe2, 0x02, 0x1c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61, 0x74,
- 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea,
- 0x02, 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x43, 0x68, 0x61, 0x74,
- 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x61, 0x67, 0x65, 0x49, 0x64, 0x1a, 0xa2, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69,
+ 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75, 0x69,
+ 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65,
+ 0x6c, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69,
+ 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+ 0x49, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
+ 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x08, 0x72, 0x65, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x25, 0x0a, 0x0a, 0x4f, 0x77,
+ 0x6e, 0x65, 0x72, 0x41, 0x64, 0x64, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72,
+ 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49,
+ 0x64, 0x1a, 0x27, 0x0a, 0x0c, 0x4f, 0x77, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65,
+ 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x7c, 0x0a, 0x0e, 0x49, 0x6e,
+ 0x76, 0x69, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09,
+ 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x73, 0x65, 0x72,
+ 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08,
+ 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x0a, 0x69,
+ 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
+ 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73,
+ 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x1a, 0x61, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69,
+ 0x74, 0x65, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75,
+ 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x67, 0x75,
+ 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x5f,
+ 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x76, 0x69, 0x74, 0x65,
+ 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x04, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x65,
+ 0x76, 0x65, 0x6e, 0x74, 0x42, 0xc1, 0x01, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x53,
+ 0x74, 0x72, 0x65, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69,
+ 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79,
+ 0x2d, 0x64, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69,
+ 0x62, 0x73, 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2f, 0x76,
+ 0x31, 0x3b, 0x63, 0x68, 0x61, 0x74, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50, 0x43, 0x58, 0xaa, 0x02,
+ 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x56,
+ 0x31, 0xca, 0x02, 0x10, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x43, 0x68, 0x61,
+ 0x74, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c,
+ 0x43, 0x68, 0x61, 0x74, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a,
+ 0x43, 0x68, 0x61, 0x74, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3459,7 +3524,7 @@ func file_chat_v1_stream_proto_rawDescGZIP() []byte {
return file_chat_v1_stream_proto_rawDescData
}
-var file_chat_v1_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
+var file_chat_v1_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 37)
var file_chat_v1_stream_proto_goTypes = []interface{}{
(*StreamEventsRequest)(nil), // 0: protocol.chat.v1.StreamEventsRequest
(*StreamEventsResponse)(nil), // 1: protocol.chat.v1.StreamEventsResponse
@@ -3467,103 +3532,105 @@ var file_chat_v1_stream_proto_goTypes = []interface{}{
(*StreamEventsRequest_SubscribeToGuild)(nil), // 3: protocol.chat.v1.StreamEventsRequest.SubscribeToGuild
(*StreamEventsRequest_SubscribeToActions)(nil), // 4: protocol.chat.v1.StreamEventsRequest.SubscribeToActions
(*StreamEventsRequest_SubscribeToHomeserverEvents)(nil), // 5: protocol.chat.v1.StreamEventsRequest.SubscribeToHomeserverEvents
- (*StreamEvent_MessageSent)(nil), // 6: protocol.chat.v1.StreamEvent.MessageSent
- (*StreamEvent_MessageUpdated)(nil), // 7: protocol.chat.v1.StreamEvent.MessageUpdated
- (*StreamEvent_MessageDeleted)(nil), // 8: protocol.chat.v1.StreamEvent.MessageDeleted
- (*StreamEvent_ChannelCreated)(nil), // 9: protocol.chat.v1.StreamEvent.ChannelCreated
- (*StreamEvent_ChannelUpdated)(nil), // 10: protocol.chat.v1.StreamEvent.ChannelUpdated
- (*StreamEvent_ChannelPositionUpdated)(nil), // 11: protocol.chat.v1.StreamEvent.ChannelPositionUpdated
- (*StreamEvent_ChannelsReordered)(nil), // 12: protocol.chat.v1.StreamEvent.ChannelsReordered
- (*StreamEvent_ChannelDeleted)(nil), // 13: protocol.chat.v1.StreamEvent.ChannelDeleted
- (*StreamEvent_GuildUpdated)(nil), // 14: protocol.chat.v1.StreamEvent.GuildUpdated
- (*StreamEvent_GuildDeleted)(nil), // 15: protocol.chat.v1.StreamEvent.GuildDeleted
- (*StreamEvent_MemberJoined)(nil), // 16: protocol.chat.v1.StreamEvent.MemberJoined
- (*StreamEvent_MemberLeft)(nil), // 17: protocol.chat.v1.StreamEvent.MemberLeft
- (*StreamEvent_GuildAddedToList)(nil), // 18: protocol.chat.v1.StreamEvent.GuildAddedToList
- (*StreamEvent_GuildRemovedFromList)(nil), // 19: protocol.chat.v1.StreamEvent.GuildRemovedFromList
- (*StreamEvent_ActionPerformed)(nil), // 20: protocol.chat.v1.StreamEvent.ActionPerformed
- (*StreamEvent_RoleMoved)(nil), // 21: protocol.chat.v1.StreamEvent.RoleMoved
- (*StreamEvent_RoleDeleted)(nil), // 22: protocol.chat.v1.StreamEvent.RoleDeleted
- (*StreamEvent_RoleCreated)(nil), // 23: protocol.chat.v1.StreamEvent.RoleCreated
- (*StreamEvent_RoleUpdated)(nil), // 24: protocol.chat.v1.StreamEvent.RoleUpdated
- (*StreamEvent_RolePermissionsUpdated)(nil), // 25: protocol.chat.v1.StreamEvent.RolePermissionsUpdated
- (*StreamEvent_UserRolesUpdated)(nil), // 26: protocol.chat.v1.StreamEvent.UserRolesUpdated
- (*StreamEvent_Typing)(nil), // 27: protocol.chat.v1.StreamEvent.Typing
- (*StreamEvent_PermissionUpdated)(nil), // 28: protocol.chat.v1.StreamEvent.PermissionUpdated
- (*StreamEvent_MessagePinned)(nil), // 29: protocol.chat.v1.StreamEvent.MessagePinned
- (*StreamEvent_MessageUnpinned)(nil), // 30: protocol.chat.v1.StreamEvent.MessageUnpinned
- (*StreamEvent_ReactionUpdated)(nil), // 31: protocol.chat.v1.StreamEvent.ReactionUpdated
- (*StreamEvent_OwnerAdded)(nil), // 32: protocol.chat.v1.StreamEvent.OwnerAdded
- (*StreamEvent_OwnerRemoved)(nil), // 33: protocol.chat.v1.StreamEvent.OwnerRemoved
- (*StreamEvent_InviteReceived)(nil), // 34: protocol.chat.v1.StreamEvent.InviteReceived
- (*StreamEvent_InviteRejected)(nil), // 35: protocol.chat.v1.StreamEvent.InviteRejected
- (*v1.StreamEvent)(nil), // 36: protocol.emote.v1.StreamEvent
- (*v11.StreamEvent)(nil), // 37: protocol.profile.v1.StreamEvent
- (*Message)(nil), // 38: protocol.chat.v1.Message
- (*FormattedText)(nil), // 39: protocol.chat.v1.FormattedText
- (*v12.ItemPosition)(nil), // 40: protocol.harmonytypes.v1.ItemPosition
- (ChannelKind)(0), // 41: protocol.chat.v1.ChannelKind
- (*v12.Metadata)(nil), // 42: protocol.harmonytypes.v1.Metadata
- (LeaveReason)(0), // 43: protocol.chat.v1.LeaveReason
- (*ActionPayload)(nil), // 44: protocol.chat.v1.ActionPayload
- (*Permission)(nil), // 45: protocol.chat.v1.Permission
- (*Reaction)(nil), // 46: protocol.chat.v1.Reaction
+ (*StreamEventsRequest_UnsubscribeFromAll)(nil), // 6: protocol.chat.v1.StreamEventsRequest.UnsubscribeFromAll
+ (*StreamEvent_MessageSent)(nil), // 7: protocol.chat.v1.StreamEvent.MessageSent
+ (*StreamEvent_MessageUpdated)(nil), // 8: protocol.chat.v1.StreamEvent.MessageUpdated
+ (*StreamEvent_MessageDeleted)(nil), // 9: protocol.chat.v1.StreamEvent.MessageDeleted
+ (*StreamEvent_ChannelCreated)(nil), // 10: protocol.chat.v1.StreamEvent.ChannelCreated
+ (*StreamEvent_ChannelUpdated)(nil), // 11: protocol.chat.v1.StreamEvent.ChannelUpdated
+ (*StreamEvent_ChannelPositionUpdated)(nil), // 12: protocol.chat.v1.StreamEvent.ChannelPositionUpdated
+ (*StreamEvent_ChannelsReordered)(nil), // 13: protocol.chat.v1.StreamEvent.ChannelsReordered
+ (*StreamEvent_ChannelDeleted)(nil), // 14: protocol.chat.v1.StreamEvent.ChannelDeleted
+ (*StreamEvent_GuildUpdated)(nil), // 15: protocol.chat.v1.StreamEvent.GuildUpdated
+ (*StreamEvent_GuildDeleted)(nil), // 16: protocol.chat.v1.StreamEvent.GuildDeleted
+ (*StreamEvent_MemberJoined)(nil), // 17: protocol.chat.v1.StreamEvent.MemberJoined
+ (*StreamEvent_MemberLeft)(nil), // 18: protocol.chat.v1.StreamEvent.MemberLeft
+ (*StreamEvent_GuildAddedToList)(nil), // 19: protocol.chat.v1.StreamEvent.GuildAddedToList
+ (*StreamEvent_GuildRemovedFromList)(nil), // 20: protocol.chat.v1.StreamEvent.GuildRemovedFromList
+ (*StreamEvent_ActionPerformed)(nil), // 21: protocol.chat.v1.StreamEvent.ActionPerformed
+ (*StreamEvent_RoleMoved)(nil), // 22: protocol.chat.v1.StreamEvent.RoleMoved
+ (*StreamEvent_RoleDeleted)(nil), // 23: protocol.chat.v1.StreamEvent.RoleDeleted
+ (*StreamEvent_RoleCreated)(nil), // 24: protocol.chat.v1.StreamEvent.RoleCreated
+ (*StreamEvent_RoleUpdated)(nil), // 25: protocol.chat.v1.StreamEvent.RoleUpdated
+ (*StreamEvent_RolePermissionsUpdated)(nil), // 26: protocol.chat.v1.StreamEvent.RolePermissionsUpdated
+ (*StreamEvent_UserRolesUpdated)(nil), // 27: protocol.chat.v1.StreamEvent.UserRolesUpdated
+ (*StreamEvent_Typing)(nil), // 28: protocol.chat.v1.StreamEvent.Typing
+ (*StreamEvent_PermissionUpdated)(nil), // 29: protocol.chat.v1.StreamEvent.PermissionUpdated
+ (*StreamEvent_MessagePinned)(nil), // 30: protocol.chat.v1.StreamEvent.MessagePinned
+ (*StreamEvent_MessageUnpinned)(nil), // 31: protocol.chat.v1.StreamEvent.MessageUnpinned
+ (*StreamEvent_ReactionUpdated)(nil), // 32: protocol.chat.v1.StreamEvent.ReactionUpdated
+ (*StreamEvent_OwnerAdded)(nil), // 33: protocol.chat.v1.StreamEvent.OwnerAdded
+ (*StreamEvent_OwnerRemoved)(nil), // 34: protocol.chat.v1.StreamEvent.OwnerRemoved
+ (*StreamEvent_InviteReceived)(nil), // 35: protocol.chat.v1.StreamEvent.InviteReceived
+ (*StreamEvent_InviteRejected)(nil), // 36: protocol.chat.v1.StreamEvent.InviteRejected
+ (*v1.StreamEvent)(nil), // 37: protocol.emote.v1.StreamEvent
+ (*v11.StreamEvent)(nil), // 38: protocol.profile.v1.StreamEvent
+ (*Message)(nil), // 39: protocol.chat.v1.Message
+ (*FormattedText)(nil), // 40: protocol.chat.v1.FormattedText
+ (*v12.ItemPosition)(nil), // 41: protocol.harmonytypes.v1.ItemPosition
+ (ChannelKind)(0), // 42: protocol.chat.v1.ChannelKind
+ (*v12.Metadata)(nil), // 43: protocol.harmonytypes.v1.Metadata
+ (LeaveReason)(0), // 44: protocol.chat.v1.LeaveReason
+ (*ActionPayload)(nil), // 45: protocol.chat.v1.ActionPayload
+ (*Permission)(nil), // 46: protocol.chat.v1.Permission
+ (*Reaction)(nil), // 47: protocol.chat.v1.Reaction
}
var file_chat_v1_stream_proto_depIdxs = []int32{
3, // 0: protocol.chat.v1.StreamEventsRequest.subscribe_to_guild:type_name -> protocol.chat.v1.StreamEventsRequest.SubscribeToGuild
4, // 1: protocol.chat.v1.StreamEventsRequest.subscribe_to_actions:type_name -> protocol.chat.v1.StreamEventsRequest.SubscribeToActions
5, // 2: protocol.chat.v1.StreamEventsRequest.subscribe_to_homeserver_events:type_name -> protocol.chat.v1.StreamEventsRequest.SubscribeToHomeserverEvents
- 2, // 3: protocol.chat.v1.StreamEventsResponse.chat:type_name -> protocol.chat.v1.StreamEvent
- 36, // 4: protocol.chat.v1.StreamEventsResponse.emote:type_name -> protocol.emote.v1.StreamEvent
- 37, // 5: protocol.chat.v1.StreamEventsResponse.profile:type_name -> protocol.profile.v1.StreamEvent
- 18, // 6: protocol.chat.v1.StreamEvent.guild_added_to_list:type_name -> protocol.chat.v1.StreamEvent.GuildAddedToList
- 19, // 7: protocol.chat.v1.StreamEvent.guild_removed_from_list:type_name -> protocol.chat.v1.StreamEvent.GuildRemovedFromList
- 20, // 8: protocol.chat.v1.StreamEvent.action_performed:type_name -> protocol.chat.v1.StreamEvent.ActionPerformed
- 6, // 9: protocol.chat.v1.StreamEvent.sent_message:type_name -> protocol.chat.v1.StreamEvent.MessageSent
- 7, // 10: protocol.chat.v1.StreamEvent.edited_message:type_name -> protocol.chat.v1.StreamEvent.MessageUpdated
- 8, // 11: protocol.chat.v1.StreamEvent.deleted_message:type_name -> protocol.chat.v1.StreamEvent.MessageDeleted
- 9, // 12: protocol.chat.v1.StreamEvent.created_channel:type_name -> protocol.chat.v1.StreamEvent.ChannelCreated
- 10, // 13: protocol.chat.v1.StreamEvent.edited_channel:type_name -> protocol.chat.v1.StreamEvent.ChannelUpdated
- 13, // 14: protocol.chat.v1.StreamEvent.deleted_channel:type_name -> protocol.chat.v1.StreamEvent.ChannelDeleted
- 14, // 15: protocol.chat.v1.StreamEvent.edited_guild:type_name -> protocol.chat.v1.StreamEvent.GuildUpdated
- 15, // 16: protocol.chat.v1.StreamEvent.deleted_guild:type_name -> protocol.chat.v1.StreamEvent.GuildDeleted
- 16, // 17: protocol.chat.v1.StreamEvent.joined_member:type_name -> protocol.chat.v1.StreamEvent.MemberJoined
- 17, // 18: protocol.chat.v1.StreamEvent.left_member:type_name -> protocol.chat.v1.StreamEvent.MemberLeft
- 27, // 19: protocol.chat.v1.StreamEvent.typing:type_name -> protocol.chat.v1.StreamEvent.Typing
- 23, // 20: protocol.chat.v1.StreamEvent.role_created:type_name -> protocol.chat.v1.StreamEvent.RoleCreated
- 22, // 21: protocol.chat.v1.StreamEvent.role_deleted:type_name -> protocol.chat.v1.StreamEvent.RoleDeleted
- 21, // 22: protocol.chat.v1.StreamEvent.role_moved:type_name -> protocol.chat.v1.StreamEvent.RoleMoved
- 24, // 23: protocol.chat.v1.StreamEvent.role_updated:type_name -> protocol.chat.v1.StreamEvent.RoleUpdated
- 25, // 24: protocol.chat.v1.StreamEvent.role_perms_updated:type_name -> protocol.chat.v1.StreamEvent.RolePermissionsUpdated
- 26, // 25: protocol.chat.v1.StreamEvent.user_roles_updated:type_name -> protocol.chat.v1.StreamEvent.UserRolesUpdated
- 28, // 26: protocol.chat.v1.StreamEvent.permission_updated:type_name -> protocol.chat.v1.StreamEvent.PermissionUpdated
- 12, // 27: protocol.chat.v1.StreamEvent.channels_reordered:type_name -> protocol.chat.v1.StreamEvent.ChannelsReordered
- 11, // 28: protocol.chat.v1.StreamEvent.edited_channel_position:type_name -> protocol.chat.v1.StreamEvent.ChannelPositionUpdated
- 29, // 29: protocol.chat.v1.StreamEvent.message_pinned:type_name -> protocol.chat.v1.StreamEvent.MessagePinned
- 30, // 30: protocol.chat.v1.StreamEvent.message_unpinned:type_name -> protocol.chat.v1.StreamEvent.MessageUnpinned
- 31, // 31: protocol.chat.v1.StreamEvent.reaction_updated:type_name -> protocol.chat.v1.StreamEvent.ReactionUpdated
- 32, // 32: protocol.chat.v1.StreamEvent.owner_added:type_name -> protocol.chat.v1.StreamEvent.OwnerAdded
- 33, // 33: protocol.chat.v1.StreamEvent.owner_removed:type_name -> protocol.chat.v1.StreamEvent.OwnerRemoved
- 34, // 34: protocol.chat.v1.StreamEvent.invite_received:type_name -> protocol.chat.v1.StreamEvent.InviteReceived
- 35, // 35: protocol.chat.v1.StreamEvent.invite_rejected:type_name -> protocol.chat.v1.StreamEvent.InviteRejected
- 38, // 36: protocol.chat.v1.StreamEvent.MessageSent.message:type_name -> protocol.chat.v1.Message
- 39, // 37: protocol.chat.v1.StreamEvent.MessageUpdated.new_content:type_name -> protocol.chat.v1.FormattedText
- 40, // 38: protocol.chat.v1.StreamEvent.ChannelCreated.position:type_name -> protocol.harmonytypes.v1.ItemPosition
- 41, // 39: protocol.chat.v1.StreamEvent.ChannelCreated.kind:type_name -> protocol.chat.v1.ChannelKind
- 42, // 40: protocol.chat.v1.StreamEvent.ChannelCreated.metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 42, // 41: protocol.chat.v1.StreamEvent.ChannelUpdated.new_metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 40, // 42: protocol.chat.v1.StreamEvent.ChannelPositionUpdated.new_position:type_name -> protocol.harmonytypes.v1.ItemPosition
- 42, // 43: protocol.chat.v1.StreamEvent.GuildUpdated.new_metadata:type_name -> protocol.harmonytypes.v1.Metadata
- 43, // 44: protocol.chat.v1.StreamEvent.MemberLeft.leave_reason:type_name -> protocol.chat.v1.LeaveReason
- 44, // 45: protocol.chat.v1.StreamEvent.ActionPerformed.payload:type_name -> protocol.chat.v1.ActionPayload
- 40, // 46: protocol.chat.v1.StreamEvent.RoleMoved.new_position:type_name -> protocol.harmonytypes.v1.ItemPosition
- 45, // 47: protocol.chat.v1.StreamEvent.RolePermissionsUpdated.new_perms:type_name -> protocol.chat.v1.Permission
- 46, // 48: protocol.chat.v1.StreamEvent.ReactionUpdated.reaction:type_name -> protocol.chat.v1.Reaction
- 49, // [49:49] is the sub-list for method output_type
- 49, // [49:49] is the sub-list for method input_type
- 49, // [49:49] is the sub-list for extension type_name
- 49, // [49:49] is the sub-list for extension extendee
- 0, // [0:49] is the sub-list for field type_name
+ 6, // 3: protocol.chat.v1.StreamEventsRequest.unsubscribe_from_all:type_name -> protocol.chat.v1.StreamEventsRequest.UnsubscribeFromAll
+ 2, // 4: protocol.chat.v1.StreamEventsResponse.chat:type_name -> protocol.chat.v1.StreamEvent
+ 37, // 5: protocol.chat.v1.StreamEventsResponse.emote:type_name -> protocol.emote.v1.StreamEvent
+ 38, // 6: protocol.chat.v1.StreamEventsResponse.profile:type_name -> protocol.profile.v1.StreamEvent
+ 19, // 7: protocol.chat.v1.StreamEvent.guild_added_to_list:type_name -> protocol.chat.v1.StreamEvent.GuildAddedToList
+ 20, // 8: protocol.chat.v1.StreamEvent.guild_removed_from_list:type_name -> protocol.chat.v1.StreamEvent.GuildRemovedFromList
+ 21, // 9: protocol.chat.v1.StreamEvent.action_performed:type_name -> protocol.chat.v1.StreamEvent.ActionPerformed
+ 7, // 10: protocol.chat.v1.StreamEvent.sent_message:type_name -> protocol.chat.v1.StreamEvent.MessageSent
+ 8, // 11: protocol.chat.v1.StreamEvent.edited_message:type_name -> protocol.chat.v1.StreamEvent.MessageUpdated
+ 9, // 12: protocol.chat.v1.StreamEvent.deleted_message:type_name -> protocol.chat.v1.StreamEvent.MessageDeleted
+ 10, // 13: protocol.chat.v1.StreamEvent.created_channel:type_name -> protocol.chat.v1.StreamEvent.ChannelCreated
+ 11, // 14: protocol.chat.v1.StreamEvent.edited_channel:type_name -> protocol.chat.v1.StreamEvent.ChannelUpdated
+ 14, // 15: protocol.chat.v1.StreamEvent.deleted_channel:type_name -> protocol.chat.v1.StreamEvent.ChannelDeleted
+ 15, // 16: protocol.chat.v1.StreamEvent.edited_guild:type_name -> protocol.chat.v1.StreamEvent.GuildUpdated
+ 16, // 17: protocol.chat.v1.StreamEvent.deleted_guild:type_name -> protocol.chat.v1.StreamEvent.GuildDeleted
+ 17, // 18: protocol.chat.v1.StreamEvent.joined_member:type_name -> protocol.chat.v1.StreamEvent.MemberJoined
+ 18, // 19: protocol.chat.v1.StreamEvent.left_member:type_name -> protocol.chat.v1.StreamEvent.MemberLeft
+ 28, // 20: protocol.chat.v1.StreamEvent.typing:type_name -> protocol.chat.v1.StreamEvent.Typing
+ 24, // 21: protocol.chat.v1.StreamEvent.role_created:type_name -> protocol.chat.v1.StreamEvent.RoleCreated
+ 23, // 22: protocol.chat.v1.StreamEvent.role_deleted:type_name -> protocol.chat.v1.StreamEvent.RoleDeleted
+ 22, // 23: protocol.chat.v1.StreamEvent.role_moved:type_name -> protocol.chat.v1.StreamEvent.RoleMoved
+ 25, // 24: protocol.chat.v1.StreamEvent.role_updated:type_name -> protocol.chat.v1.StreamEvent.RoleUpdated
+ 26, // 25: protocol.chat.v1.StreamEvent.role_perms_updated:type_name -> protocol.chat.v1.StreamEvent.RolePermissionsUpdated
+ 27, // 26: protocol.chat.v1.StreamEvent.user_roles_updated:type_name -> protocol.chat.v1.StreamEvent.UserRolesUpdated
+ 29, // 27: protocol.chat.v1.StreamEvent.permission_updated:type_name -> protocol.chat.v1.StreamEvent.PermissionUpdated
+ 13, // 28: protocol.chat.v1.StreamEvent.channels_reordered:type_name -> protocol.chat.v1.StreamEvent.ChannelsReordered
+ 12, // 29: protocol.chat.v1.StreamEvent.edited_channel_position:type_name -> protocol.chat.v1.StreamEvent.ChannelPositionUpdated
+ 30, // 30: protocol.chat.v1.StreamEvent.message_pinned:type_name -> protocol.chat.v1.StreamEvent.MessagePinned
+ 31, // 31: protocol.chat.v1.StreamEvent.message_unpinned:type_name -> protocol.chat.v1.StreamEvent.MessageUnpinned
+ 32, // 32: protocol.chat.v1.StreamEvent.reaction_updated:type_name -> protocol.chat.v1.StreamEvent.ReactionUpdated
+ 33, // 33: protocol.chat.v1.StreamEvent.owner_added:type_name -> protocol.chat.v1.StreamEvent.OwnerAdded
+ 34, // 34: protocol.chat.v1.StreamEvent.owner_removed:type_name -> protocol.chat.v1.StreamEvent.OwnerRemoved
+ 35, // 35: protocol.chat.v1.StreamEvent.invite_received:type_name -> protocol.chat.v1.StreamEvent.InviteReceived
+ 36, // 36: protocol.chat.v1.StreamEvent.invite_rejected:type_name -> protocol.chat.v1.StreamEvent.InviteRejected
+ 39, // 37: protocol.chat.v1.StreamEvent.MessageSent.message:type_name -> protocol.chat.v1.Message
+ 40, // 38: protocol.chat.v1.StreamEvent.MessageUpdated.new_content:type_name -> protocol.chat.v1.FormattedText
+ 41, // 39: protocol.chat.v1.StreamEvent.ChannelCreated.position:type_name -> protocol.harmonytypes.v1.ItemPosition
+ 42, // 40: protocol.chat.v1.StreamEvent.ChannelCreated.kind:type_name -> protocol.chat.v1.ChannelKind
+ 43, // 41: protocol.chat.v1.StreamEvent.ChannelCreated.metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 43, // 42: protocol.chat.v1.StreamEvent.ChannelUpdated.new_metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 41, // 43: protocol.chat.v1.StreamEvent.ChannelPositionUpdated.new_position:type_name -> protocol.harmonytypes.v1.ItemPosition
+ 43, // 44: protocol.chat.v1.StreamEvent.GuildUpdated.new_metadata:type_name -> protocol.harmonytypes.v1.Metadata
+ 44, // 45: protocol.chat.v1.StreamEvent.MemberLeft.leave_reason:type_name -> protocol.chat.v1.LeaveReason
+ 45, // 46: protocol.chat.v1.StreamEvent.ActionPerformed.payload:type_name -> protocol.chat.v1.ActionPayload
+ 41, // 47: protocol.chat.v1.StreamEvent.RoleMoved.new_position:type_name -> protocol.harmonytypes.v1.ItemPosition
+ 46, // 48: protocol.chat.v1.StreamEvent.RolePermissionsUpdated.new_perms:type_name -> protocol.chat.v1.Permission
+ 47, // 49: protocol.chat.v1.StreamEvent.ReactionUpdated.reaction:type_name -> protocol.chat.v1.Reaction
+ 50, // [50:50] is the sub-list for method output_type
+ 50, // [50:50] is the sub-list for method input_type
+ 50, // [50:50] is the sub-list for extension type_name
+ 50, // [50:50] is the sub-list for extension extendee
+ 0, // [0:50] is the sub-list for field type_name
}
func init() { file_chat_v1_stream_proto_init() }
@@ -3649,7 +3716,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MessageSent); i {
+ switch v := v.(*StreamEventsRequest_UnsubscribeFromAll); i {
case 0:
return &v.state
case 1:
@@ -3661,7 +3728,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MessageUpdated); i {
+ switch v := v.(*StreamEvent_MessageSent); i {
case 0:
return &v.state
case 1:
@@ -3673,7 +3740,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MessageDeleted); i {
+ switch v := v.(*StreamEvent_MessageUpdated); i {
case 0:
return &v.state
case 1:
@@ -3685,7 +3752,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ChannelCreated); i {
+ switch v := v.(*StreamEvent_MessageDeleted); i {
case 0:
return &v.state
case 1:
@@ -3697,7 +3764,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ChannelUpdated); i {
+ switch v := v.(*StreamEvent_ChannelCreated); i {
case 0:
return &v.state
case 1:
@@ -3709,7 +3776,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ChannelPositionUpdated); i {
+ switch v := v.(*StreamEvent_ChannelUpdated); i {
case 0:
return &v.state
case 1:
@@ -3721,7 +3788,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ChannelsReordered); i {
+ switch v := v.(*StreamEvent_ChannelPositionUpdated); i {
case 0:
return &v.state
case 1:
@@ -3733,7 +3800,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ChannelDeleted); i {
+ switch v := v.(*StreamEvent_ChannelsReordered); i {
case 0:
return &v.state
case 1:
@@ -3745,7 +3812,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_GuildUpdated); i {
+ switch v := v.(*StreamEvent_ChannelDeleted); i {
case 0:
return &v.state
case 1:
@@ -3757,7 +3824,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_GuildDeleted); i {
+ switch v := v.(*StreamEvent_GuildUpdated); i {
case 0:
return &v.state
case 1:
@@ -3769,7 +3836,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MemberJoined); i {
+ switch v := v.(*StreamEvent_GuildDeleted); i {
case 0:
return &v.state
case 1:
@@ -3781,7 +3848,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MemberLeft); i {
+ switch v := v.(*StreamEvent_MemberJoined); i {
case 0:
return &v.state
case 1:
@@ -3793,7 +3860,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_GuildAddedToList); i {
+ switch v := v.(*StreamEvent_MemberLeft); i {
case 0:
return &v.state
case 1:
@@ -3805,7 +3872,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_GuildRemovedFromList); i {
+ switch v := v.(*StreamEvent_GuildAddedToList); i {
case 0:
return &v.state
case 1:
@@ -3817,7 +3884,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ActionPerformed); i {
+ switch v := v.(*StreamEvent_GuildRemovedFromList); i {
case 0:
return &v.state
case 1:
@@ -3829,7 +3896,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_RoleMoved); i {
+ switch v := v.(*StreamEvent_ActionPerformed); i {
case 0:
return &v.state
case 1:
@@ -3841,7 +3908,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_RoleDeleted); i {
+ switch v := v.(*StreamEvent_RoleMoved); i {
case 0:
return &v.state
case 1:
@@ -3853,7 +3920,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_RoleCreated); i {
+ switch v := v.(*StreamEvent_RoleDeleted); i {
case 0:
return &v.state
case 1:
@@ -3865,7 +3932,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_RoleUpdated); i {
+ switch v := v.(*StreamEvent_RoleCreated); i {
case 0:
return &v.state
case 1:
@@ -3877,7 +3944,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_RolePermissionsUpdated); i {
+ switch v := v.(*StreamEvent_RoleUpdated); i {
case 0:
return &v.state
case 1:
@@ -3889,7 +3956,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_UserRolesUpdated); i {
+ switch v := v.(*StreamEvent_RolePermissionsUpdated); i {
case 0:
return &v.state
case 1:
@@ -3901,7 +3968,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_Typing); i {
+ switch v := v.(*StreamEvent_UserRolesUpdated); i {
case 0:
return &v.state
case 1:
@@ -3913,7 +3980,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_PermissionUpdated); i {
+ switch v := v.(*StreamEvent_Typing); i {
case 0:
return &v.state
case 1:
@@ -3925,7 +3992,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MessagePinned); i {
+ switch v := v.(*StreamEvent_PermissionUpdated); i {
case 0:
return &v.state
case 1:
@@ -3937,7 +4004,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_MessageUnpinned); i {
+ switch v := v.(*StreamEvent_MessagePinned); i {
case 0:
return &v.state
case 1:
@@ -3949,7 +4016,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_ReactionUpdated); i {
+ switch v := v.(*StreamEvent_MessageUnpinned); i {
case 0:
return &v.state
case 1:
@@ -3961,7 +4028,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_OwnerAdded); i {
+ switch v := v.(*StreamEvent_ReactionUpdated); i {
case 0:
return &v.state
case 1:
@@ -3973,7 +4040,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_OwnerRemoved); i {
+ switch v := v.(*StreamEvent_OwnerAdded); i {
case 0:
return &v.state
case 1:
@@ -3985,7 +4052,7 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*StreamEvent_InviteReceived); i {
+ switch v := v.(*StreamEvent_OwnerRemoved); i {
case 0:
return &v.state
case 1:
@@ -3997,6 +4064,18 @@ func file_chat_v1_stream_proto_init() {
}
}
file_chat_v1_stream_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*StreamEvent_InviteReceived); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_chat_v1_stream_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*StreamEvent_InviteRejected); i {
case 0:
return &v.state
@@ -4013,6 +4092,7 @@ func file_chat_v1_stream_proto_init() {
(*StreamEventsRequest_SubscribeToGuild_)(nil),
(*StreamEventsRequest_SubscribeToActions_)(nil),
(*StreamEventsRequest_SubscribeToHomeserverEvents_)(nil),
+ (*StreamEventsRequest_UnsubscribeFromAll_)(nil),
}
file_chat_v1_stream_proto_msgTypes[1].OneofWrappers = []interface{}{
(*StreamEventsResponse_Chat)(nil),
@@ -4051,22 +4131,22 @@ func file_chat_v1_stream_proto_init() {
(*StreamEvent_InviteReceived_)(nil),
(*StreamEvent_InviteRejected_)(nil),
}
- file_chat_v1_stream_proto_msgTypes[6].OneofWrappers = []interface{}{}
- file_chat_v1_stream_proto_msgTypes[9].OneofWrappers = []interface{}{}
+ file_chat_v1_stream_proto_msgTypes[7].OneofWrappers = []interface{}{}
file_chat_v1_stream_proto_msgTypes[10].OneofWrappers = []interface{}{}
file_chat_v1_stream_proto_msgTypes[11].OneofWrappers = []interface{}{}
- file_chat_v1_stream_proto_msgTypes[14].OneofWrappers = []interface{}{}
- file_chat_v1_stream_proto_msgTypes[24].OneofWrappers = []interface{}{}
+ file_chat_v1_stream_proto_msgTypes[12].OneofWrappers = []interface{}{}
+ file_chat_v1_stream_proto_msgTypes[15].OneofWrappers = []interface{}{}
file_chat_v1_stream_proto_msgTypes[25].OneofWrappers = []interface{}{}
- file_chat_v1_stream_proto_msgTypes[28].OneofWrappers = []interface{}{}
- file_chat_v1_stream_proto_msgTypes[34].OneofWrappers = []interface{}{}
+ file_chat_v1_stream_proto_msgTypes[26].OneofWrappers = []interface{}{}
+ file_chat_v1_stream_proto_msgTypes[29].OneofWrappers = []interface{}{}
+ file_chat_v1_stream_proto_msgTypes[35].OneofWrappers = []interface{}{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_chat_v1_stream_proto_rawDesc,
NumEnums: 0,
- NumMessages: 36,
+ NumMessages: 37,
NumExtensions: 0,
NumServices: 0,
},
diff --git a/vendor/github.com/harmony-development/shibshib/gen/profile/v1/appdata.pb.go b/vendor/github.com/harmony-development/shibshib/gen/profile/v1/appdata.pb.go
new file mode 100644
index 00000000..38d13d64
--- /dev/null
+++ b/vendor/github.com/harmony-development/shibshib/gen/profile/v1/appdata.pb.go
@@ -0,0 +1,400 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.23.0
+// protoc v3.17.3
+// source: profile/v1/appdata.proto
+
+package profilev1
+
+import (
+ proto "github.com/golang/protobuf/proto"
+ v1 "github.com/harmony-development/shibshib/gen/harmonytypes/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// This is a compile-time assertion that a sufficiently up-to-date version
+// of the legacy proto package is being used.
+const _ = proto.ProtoPackageIsVersion4
+
+// A tag for an override. This is used as a
+// standard shorthand for sending a message with
+// an override. If a message starts with before and
+// ends with after, clients should send a message
+// with the override the tag belongs to, stripping
+// the tag indicators.
+type OverrideTag struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The portion of the tag before the messge.
+ Before string `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"`
+ // The portion of the tag after the messge.
+ After string `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"`
+}
+
+func (x *OverrideTag) Reset() {
+ *x = OverrideTag{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_profile_v1_appdata_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *OverrideTag) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*OverrideTag) ProtoMessage() {}
+
+func (x *OverrideTag) ProtoReflect() protoreflect.Message {
+ mi := &file_profile_v1_appdata_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use OverrideTag.ProtoReflect.Descriptor instead.
+func (*OverrideTag) Descriptor() ([]byte, []int) {
+ return file_profile_v1_appdata_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *OverrideTag) GetBefore() string {
+ if x != nil {
+ return x.Before
+ }
+ return ""
+}
+
+func (x *OverrideTag) GetAfter() string {
+ if x != nil {
+ return x.After
+ }
+ return ""
+}
+
+// An individual override
+type ProfileOverride struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The username for this override
+ Username *string `protobuf:"bytes,1,opt,name=username,proto3,oneof" json:"username,omitempty"`
+ // The avatar for this override
+ Avatar *string `protobuf:"bytes,2,opt,name=avatar,proto3,oneof" json:"avatar,omitempty"`
+ // The tags for this override.
+ Tags []*OverrideTag `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"`
+ // The reason this override is used
+ //
+ // Types that are assignable to Reason:
+ // *ProfileOverride_UserDefined
+ // *ProfileOverride_SystemPlurality
+ Reason isProfileOverride_Reason `protobuf_oneof:"reason"`
+}
+
+func (x *ProfileOverride) Reset() {
+ *x = ProfileOverride{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_profile_v1_appdata_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ProfileOverride) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProfileOverride) ProtoMessage() {}
+
+func (x *ProfileOverride) ProtoReflect() protoreflect.Message {
+ mi := &file_profile_v1_appdata_proto_msgTypes[1]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProfileOverride.ProtoReflect.Descriptor instead.
+func (*ProfileOverride) Descriptor() ([]byte, []int) {
+ return file_profile_v1_appdata_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *ProfileOverride) GetUsername() string {
+ if x != nil && x.Username != nil {
+ return *x.Username
+ }
+ return ""
+}
+
+func (x *ProfileOverride) GetAvatar() string {
+ if x != nil && x.Avatar != nil {
+ return *x.Avatar
+ }
+ return ""
+}
+
+func (x *ProfileOverride) GetTags() []*OverrideTag {
+ if x != nil {
+ return x.Tags
+ }
+ return nil
+}
+
+func (m *ProfileOverride) GetReason() isProfileOverride_Reason {
+ if m != nil {
+ return m.Reason
+ }
+ return nil
+}
+
+func (x *ProfileOverride) GetUserDefined() string {
+ if x, ok := x.GetReason().(*ProfileOverride_UserDefined); ok {
+ return x.UserDefined
+ }
+ return ""
+}
+
+func (x *ProfileOverride) GetSystemPlurality() *v1.Empty {
+ if x, ok := x.GetReason().(*ProfileOverride_SystemPlurality); ok {
+ return x.SystemPlurality
+ }
+ return nil
+}
+
+type isProfileOverride_Reason interface {
+ isProfileOverride_Reason()
+}
+
+type ProfileOverride_UserDefined struct {
+ // a custom reason in case the builtin ones don't fit
+ UserDefined string `protobuf:"bytes,4,opt,name=user_defined,json=userDefined,proto3,oneof"`
+}
+
+type ProfileOverride_SystemPlurality struct {
+ // plurality, not system as in computer
+ SystemPlurality *v1.Empty `protobuf:"bytes,5,opt,name=system_plurality,json=systemPlurality,proto3,oneof"`
+}
+
+func (*ProfileOverride_UserDefined) isProfileOverride_Reason() {}
+
+func (*ProfileOverride_SystemPlurality) isProfileOverride_Reason() {}
+
+// The message used for the 'h.overrides' key
+// of appdata.
+type AppDataOverrides struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ // The list of overrides.
+ Overrides []*ProfileOverride `protobuf:"bytes,1,rep,name=overrides,proto3" json:"overrides,omitempty"`
+}
+
+func (x *AppDataOverrides) Reset() {
+ *x = AppDataOverrides{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_profile_v1_appdata_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *AppDataOverrides) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AppDataOverrides) ProtoMessage() {}
+
+func (x *AppDataOverrides) ProtoReflect() protoreflect.Message {
+ mi := &file_profile_v1_appdata_proto_msgTypes[2]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AppDataOverrides.ProtoReflect.Descriptor instead.
+func (*AppDataOverrides) Descriptor() ([]byte, []int) {
+ return file_profile_v1_appdata_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *AppDataOverrides) GetOverrides() []*ProfileOverride {
+ if x != nil {
+ return x.Overrides
+ }
+ return nil
+}
+
+var File_profile_v1_appdata_proto protoreflect.FileDescriptor
+
+var file_profile_v1_appdata_proto_rawDesc = []byte{
+ 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x70, 0x70,
+ 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x1a,
+ 0x1b, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x76, 0x31,
+ 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3b, 0x0a, 0x0b,
+ 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x62,
+ 0x65, 0x66, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x65, 0x66,
+ 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x22, 0x9a, 0x02, 0x0a, 0x0f, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x1f, 0x0a,
+ 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
+ 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b,
+ 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02,
+ 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x04, 0x74,
+ 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+ 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+ 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67,
+ 0x73, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65,
+ 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x44,
+ 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x4c, 0x0a, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
+ 0x5f, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x68, 0x61, 0x72, 0x6d,
+ 0x6f, 0x6e, 0x79, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x70, 0x74,
+ 0x79, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6c, 0x75, 0x72, 0x61,
+ 0x6c, 0x69, 0x74, 0x79, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x0b,
+ 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f,
+ 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x56, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x44, 0x61, 0x74,
+ 0x61, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x6f, 0x76,
+ 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
+ 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72,
+ 0x69, 0x64, 0x65, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x42, 0xd7,
+ 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e,
+ 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x41, 0x70, 0x70, 0x64,
+ 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x40, 0x67, 0x69, 0x74, 0x68,
+ 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x72, 0x6d, 0x6f, 0x6e, 0x79, 0x2d, 0x64,
+ 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x68, 0x69, 0x62, 0x73,
+ 0x68, 0x69, 0x62, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2f,
+ 0x76, 0x31, 0x3b, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x50,
+ 0x50, 0x58, 0xaa, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x50, 0x72,
+ 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x50, 0x72, 0x6f, 0x74, 0x6f,
+ 0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02,
+ 0x1f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5c, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c,
+ 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
+ 0xea, 0x02, 0x15, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3a, 0x3a, 0x50, 0x72, 0x6f,
+ 0x66, 0x69, 0x6c, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+}
+
+var (
+ file_profile_v1_appdata_proto_rawDescOnce sync.Once
+ file_profile_v1_appdata_proto_rawDescData = file_profile_v1_appdata_proto_rawDesc
+)
+
+func file_profile_v1_appdata_proto_rawDescGZIP() []byte {
+ file_profile_v1_appdata_proto_rawDescOnce.Do(func() {
+ file_profile_v1_appdata_proto_rawDescData = protoimpl.X.CompressGZIP(file_profile_v1_appdata_proto_rawDescData)
+ })
+ return file_profile_v1_appdata_proto_rawDescData
+}
+
+var file_profile_v1_appdata_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_profile_v1_appdata_proto_goTypes = []interface{}{
+ (*OverrideTag)(nil), // 0: protocol.profile.v1.OverrideTag
+ (*ProfileOverride)(nil), // 1: protocol.profile.v1.ProfileOverride
+ (*AppDataOverrides)(nil), // 2: protocol.profile.v1.AppDataOverrides
+ (*v1.Empty)(nil), // 3: protocol.harmonytypes.v1.Empty
+}
+var file_profile_v1_appdata_proto_depIdxs = []int32{
+ 0, // 0: protocol.profile.v1.ProfileOverride.tags:type_name -> protocol.profile.v1.OverrideTag
+ 3, // 1: protocol.profile.v1.ProfileOverride.system_plurality:type_name -> protocol.harmonytypes.v1.Empty
+ 1, // 2: protocol.profile.v1.AppDataOverrides.overrides:type_name -> protocol.profile.v1.ProfileOverride
+ 3, // [3:3] is the sub-list for method output_type
+ 3, // [3:3] is the sub-list for method input_type
+ 3, // [3:3] is the sub-list for extension type_name
+ 3, // [3:3] is the sub-list for extension extendee
+ 0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_profile_v1_appdata_proto_init() }
+func file_profile_v1_appdata_proto_init() {
+ if File_profile_v1_appdata_proto != nil {
+ return
+ }
+ if !protoimpl.UnsafeEnabled {
+ file_profile_v1_appdata_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*OverrideTag); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_profile_v1_appdata_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ProfileOverride); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_profile_v1_appdata_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*AppDataOverrides); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ }
+ file_profile_v1_appdata_proto_msgTypes[1].OneofWrappers = []interface{}{
+ (*ProfileOverride_UserDefined)(nil),
+ (*ProfileOverride_SystemPlurality)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: file_profile_v1_appdata_proto_rawDesc,
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_profile_v1_appdata_proto_goTypes,
+ DependencyIndexes: file_profile_v1_appdata_proto_depIdxs,
+ MessageInfos: file_profile_v1_appdata_proto_msgTypes,
+ }.Build()
+ File_profile_v1_appdata_proto = out.File
+ file_profile_v1_appdata_proto_rawDesc = nil
+ file_profile_v1_appdata_proto_goTypes = nil
+ file_profile_v1_appdata_proto_depIdxs = nil
+}
diff --git a/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go b/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go
index 9a9d73b0..65b6a05f 100644
--- a/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go
+++ b/vendor/github.com/kyokomi/emoji/v2/emoji_codemap.go
@@ -253,6 +253,7 @@ func emojiCode() map[string]string {
":beach_umbrella:": "\u26f1",
":beach_with_umbrella:": "\U0001f3d6\ufe0f",
":beaming_face_with_smiling_eyes:": "\U0001f601",
+ ":beans:": "\U0001fad8",
":bear:": "\U0001f43b",
":bearded_person:": "\U0001f9d4",
":bearded_person_tone1:": "\U0001f9d4\U0001f3fb",
@@ -296,6 +297,7 @@ func emojiCode() map[string]string {
":birthday:": "\U0001f382",
":birthday_cake:": "\U0001f382",
":bison:": "\U0001f9ac",
+ ":biting_lip:": "\U0001fae6",
":black_cat:": "\U0001f408\u200d\u2b1b",
":black_circle:": "\u26ab",
":black_circle_for_record:": "\u23fa\ufe0f",
@@ -410,6 +412,7 @@ func emojiCode() map[string]string {
":brown_square:": "\U0001f7eb",
":brunei:": "\U0001f1e7\U0001f1f3",
":bubble_tea:": "\U0001f9cb",
+ ":bubbles:": "\U0001fae7",
":bucket:": "\U0001faa3",
":bug:": "\U0001f41b",
":building_construction:": "\U0001f3d7\ufe0f",
@@ -639,6 +642,7 @@ func emojiCode() map[string]string {
":cool:": "\U0001f192",
":cop:": "\U0001f46e\u200d\u2642\ufe0f",
":copyright:": "\u00a9\ufe0f",
+ ":coral:": "\U0001fab8",
":corn:": "\U0001f33d",
":costa_rica:": "\U0001f1e8\U0001f1f7",
":cote_divoire:": "\U0001f1e8\U0001f1ee",
@@ -647,12 +651,12 @@ func emojiCode() map[string]string {
":counterclockwise_arrows_button:": "\U0001f504",
":couple:": "\U0001f46b",
":couple_mm:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468",
- ":couple_with_heart:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468",
+ ":couple_with_heart:": "\U0001f491",
":couple_with_heart_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f468",
":couple_with_heart_woman_man:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468",
":couple_with_heart_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469",
":couple_ww:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469",
- ":couplekiss:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468",
+ ":couplekiss:": "\U0001f48f",
":couplekiss_man_man:": "\U0001f468\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468",
":couplekiss_man_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468",
":couplekiss_woman_woman:": "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469",
@@ -680,6 +684,7 @@ func emojiCode() map[string]string {
":crossed_swords:": "\u2694\ufe0f",
":crown:": "\U0001f451",
":cruise_ship:": "\U0001f6f3",
+ ":crutch:": "\U0001fa7c",
":cry:": "\U0001f622",
":crying_cat:": "\U0001f63f",
":crying_cat_face:": "\U0001f63f",
@@ -775,6 +780,7 @@ func emojiCode() map[string]string {
":dominica:": "\U0001f1e9\U0001f1f2",
":dominican_republic:": "\U0001f1e9\U0001f1f4",
":door:": "\U0001f6aa",
+ ":dotted_line_face:": "\U0001fae5",
":dotted_six-pointed_star:": "\U0001f52f",
":double_curly_loop:": "\u27bf",
":double_exclamation_mark:": "\u203c",
@@ -841,6 +847,7 @@ func emojiCode() map[string]string {
":elf_tone5:": "\U0001f9dd\U0001f3ff",
":elf_woman:": "\U0001f9dd\u200d\u2640\ufe0f",
":email:": "\u2709\ufe0f",
+ ":empty_nest:": "\U0001fab9",
":end:": "\U0001f51a",
":england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",
":envelope:": "\u2709",
@@ -871,630 +878,635 @@ func emojiCode() map[string]string {
":eyes:": "\U0001f440",
":face_blowing_a_kiss:": "\U0001f618",
":face_exhaling:": "\U0001f62e\u200d\U0001f4a8",
+ ":face_holding_back_tears:": "\U0001f979",
":face_in_clouds:": "\U0001f636\u200d\U0001f32b\ufe0f",
":face_palm:": "\U0001f926",
":face_savoring_food:": "\U0001f60b",
":face_screaming_in_fear:": "\U0001f631",
":face_vomiting:": "\U0001f92e",
":face_with_cowboy_hat:": "\U0001f920",
+ ":face_with_crossed-out_eyes:": "\U0001f635",
+ ":face_with_diagonal_mouth:": "\U0001fae4",
":face_with_hand_over_mouth:": "\U0001f92d",
":face_with_head-bandage:": "\U0001f915",
":face_with_head_bandage:": "\U0001f915",
":face_with_medical_mask:": "\U0001f637",
":face_with_monocle:": "\U0001f9d0",
- ":face_with_open_mouth:": "\U0001f62e",
- ":face_with_raised_eyebrow:": "\U0001f928",
- ":face_with_rolling_eyes:": "\U0001f644",
- ":face_with_spiral_eyes:": "\U0001f635\u200d\U0001f4ab",
- ":face_with_steam_from_nose:": "\U0001f624",
- ":face_with_symbols_on_mouth:": "\U0001f92c",
- ":face_with_symbols_over_mouth:": "\U0001f92c",
- ":face_with_tears_of_joy:": "\U0001f602",
- ":face_with_thermometer:": "\U0001f912",
- ":face_with_tongue:": "\U0001f61b",
- ":face_without_mouth:": "\U0001f636",
- ":facepalm:": "\U0001f926",
- ":facepunch:": "\U0001f44a",
- ":factory:": "\U0001f3ed",
- ":factory_worker:": "\U0001f9d1\u200d\U0001f3ed",
- ":fairy:": "\U0001f9da\u200d\u2640\ufe0f",
- ":fairy_man:": "\U0001f9da\u200d\u2642\ufe0f",
- ":fairy_tone1:": "\U0001f9da\U0001f3fb",
- ":fairy_tone2:": "\U0001f9da\U0001f3fc",
- ":fairy_tone3:": "\U0001f9da\U0001f3fd",
- ":fairy_tone4:": "\U0001f9da\U0001f3fe",
- ":fairy_tone5:": "\U0001f9da\U0001f3ff",
- ":fairy_woman:": "\U0001f9da\u200d\u2640\ufe0f",
- ":falafel:": "\U0001f9c6",
- ":falkland_islands:": "\U0001f1eb\U0001f1f0",
- ":fallen_leaf:": "\U0001f342",
- ":family:": "\U0001f468\u200d\U0001f469\u200d\U0001f466",
- ":family_man_boy:": "\U0001f468\u200d\U0001f466",
- ":family_man_boy_boy:": "\U0001f468\u200d\U0001f466\u200d\U0001f466",
- ":family_man_girl:": "\U0001f468\u200d\U0001f467",
- ":family_man_girl_boy:": "\U0001f468\u200d\U0001f467\u200d\U0001f466",
- ":family_man_girl_girl:": "\U0001f468\u200d\U0001f467\u200d\U0001f467",
- ":family_man_man_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466",
- ":family_man_man_boy_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466",
- ":family_man_man_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467",
- ":family_man_man_girl_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466",
- ":family_man_man_girl_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467",
- ":family_man_woman_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466",
- ":family_man_woman_boy_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
- ":family_man_woman_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467",
- ":family_man_woman_girl_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
- ":family_man_woman_girl_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
- ":family_mmb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466",
- ":family_mmbb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466",
- ":family_mmg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467",
- ":family_mmgb:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466",
- ":family_mmgg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467",
- ":family_mwbb:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
- ":family_mwg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467",
- ":family_mwgb:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
- ":family_mwgg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
- ":family_woman_boy:": "\U0001f469\u200d\U0001f466",
- ":family_woman_boy_boy:": "\U0001f469\u200d\U0001f466\u200d\U0001f466",
- ":family_woman_girl:": "\U0001f469\u200d\U0001f467",
- ":family_woman_girl_boy:": "\U0001f469\u200d\U0001f467\u200d\U0001f466",
- ":family_woman_girl_girl:": "\U0001f469\u200d\U0001f467\u200d\U0001f467",
- ":family_woman_woman_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466",
- ":family_woman_woman_boy_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
- ":family_woman_woman_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467",
- ":family_woman_woman_girl_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
- ":family_woman_woman_girl_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
- ":family_wwb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466",
- ":family_wwbb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
- ":family_wwg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467",
- ":family_wwgb:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
- ":family_wwgg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
- ":farmer:": "\U0001f9d1\u200d\U0001f33e",
- ":faroe_islands:": "\U0001f1eb\U0001f1f4",
- ":fast-forward_button:": "\u23e9",
- ":fast_down_button:": "\u23ec",
- ":fast_forward:": "\u23e9",
- ":fast_reverse_button:": "\u23ea",
- ":fast_up_button:": "\u23eb",
- ":fax:": "\U0001f4e0",
- ":fax_machine:": "\U0001f4e0",
- ":fearful:": "\U0001f628",
- ":fearful_face:": "\U0001f628",
- ":feather:": "\U0001fab6",
- ":feet:": "\U0001f43e",
- ":female-artist:": "\U0001f469\u200d\U0001f3a8",
- ":female-astronaut:": "\U0001f469\u200d\U0001f680",
- ":female-construction-worker:": "\U0001f477\u200d\u2640\ufe0f",
- ":female-cook:": "\U0001f469\u200d\U0001f373",
- ":female-detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f",
- ":female-doctor:": "\U0001f469\u200d\u2695\ufe0f",
- ":female-factory-worker:": "\U0001f469\u200d\U0001f3ed",
- ":female-farmer:": "\U0001f469\u200d\U0001f33e",
- ":female-firefighter:": "\U0001f469\u200d\U0001f692",
- ":female-guard:": "\U0001f482\u200d\u2640\ufe0f",
- ":female-judge:": "\U0001f469\u200d\u2696\ufe0f",
- ":female-mechanic:": "\U0001f469\u200d\U0001f527",
- ":female-office-worker:": "\U0001f469\u200d\U0001f4bc",
- ":female-pilot:": "\U0001f469\u200d\u2708\ufe0f",
- ":female-police-officer:": "\U0001f46e\u200d\u2640\ufe0f",
- ":female-scientist:": "\U0001f469\u200d\U0001f52c",
- ":female-singer:": "\U0001f469\u200d\U0001f3a4",
- ":female-student:": "\U0001f469\u200d\U0001f393",
- ":female-teacher:": "\U0001f469\u200d\U0001f3eb",
- ":female-technologist:": "\U0001f469\u200d\U0001f4bb",
- ":female_detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f",
- ":female_elf:": "\U0001f9dd\u200d\u2640\ufe0f",
- ":female_fairy:": "\U0001f9da\u200d\u2640\ufe0f",
- ":female_genie:": "\U0001f9de\u200d\u2640\ufe0f",
- ":female_mage:": "\U0001f9d9\u200d\u2640\ufe0f",
- ":female_sign:": "\u2640\ufe0f",
- ":female_superhero:": "\U0001f9b8\u200d\u2640\ufe0f",
- ":female_supervillain:": "\U0001f9b9\u200d\u2640\ufe0f",
- ":female_vampire:": "\U0001f9db\u200d\u2640\ufe0f",
- ":female_zombie:": "\U0001f9df\u200d\u2640\ufe0f",
- ":fencer:": "\U0001f93a",
- ":ferris_wheel:": "\U0001f3a1",
- ":ferry:": "\u26f4\ufe0f",
- ":field_hockey:": "\U0001f3d1",
- ":field_hockey_stick_and_ball:": "\U0001f3d1",
- ":fiji:": "\U0001f1eb\U0001f1ef",
- ":file_cabinet:": "\U0001f5c4\ufe0f",
- ":file_folder:": "\U0001f4c1",
- ":film_frames:": "\U0001f39e\ufe0f",
- ":film_projector:": "\U0001f4fd\ufe0f",
- ":film_strip:": "\U0001f39e\ufe0f",
- ":fingers_crossed:": "\U0001f91e",
- ":fingers_crossed_tone1:": "\U0001f91e\U0001f3fb",
- ":fingers_crossed_tone2:": "\U0001f91e\U0001f3fc",
- ":fingers_crossed_tone3:": "\U0001f91e\U0001f3fd",
- ":fingers_crossed_tone4:": "\U0001f91e\U0001f3fe",
- ":fingers_crossed_tone5:": "\U0001f91e\U0001f3ff",
- ":finland:": "\U0001f1eb\U0001f1ee",
- ":fire:": "\U0001f525",
- ":fire_engine:": "\U0001f692",
- ":fire_extinguisher:": "\U0001f9ef",
- ":firecracker:": "\U0001f9e8",
- ":firefighter:": "\U0001f9d1\u200d\U0001f692",
- ":fireworks:": "\U0001f386",
- ":first_place:": "\U0001f947",
- ":first_place_medal:": "\U0001f947",
- ":first_quarter_moon:": "\U0001f313",
- ":first_quarter_moon_face:": "\U0001f31b",
- ":first_quarter_moon_with_face:": "\U0001f31b",
- ":fish:": "\U0001f41f",
- ":fish_cake:": "\U0001f365",
- ":fish_cake_with_swirl:": "\U0001f365",
- ":fishing_pole:": "\U0001f3a3",
- ":fishing_pole_and_fish:": "\U0001f3a3",
- ":fist:": "\u270a",
- ":fist_left:": "\U0001f91b",
- ":fist_oncoming:": "\U0001f44a",
- ":fist_raised:": "\u270a",
- ":fist_right:": "\U0001f91c",
- ":fist_tone1:": "\u270a\U0001f3fb",
- ":fist_tone2:": "\u270a\U0001f3fc",
- ":fist_tone3:": "\u270a\U0001f3fd",
- ":fist_tone4:": "\u270a\U0001f3fe",
- ":fist_tone5:": "\u270a\U0001f3ff",
- ":five:": "5\ufe0f\u20e3",
- ":five-thirty:": "\U0001f560",
- ":five_o’clock:": "\U0001f554",
- ":flag-ac:": "\U0001f1e6\U0001f1e8",
- ":flag-ad:": "\U0001f1e6\U0001f1e9",
- ":flag-ae:": "\U0001f1e6\U0001f1ea",
- ":flag-af:": "\U0001f1e6\U0001f1eb",
- ":flag-ag:": "\U0001f1e6\U0001f1ec",
- ":flag-ai:": "\U0001f1e6\U0001f1ee",
- ":flag-al:": "\U0001f1e6\U0001f1f1",
- ":flag-am:": "\U0001f1e6\U0001f1f2",
- ":flag-ao:": "\U0001f1e6\U0001f1f4",
- ":flag-aq:": "\U0001f1e6\U0001f1f6",
- ":flag-ar:": "\U0001f1e6\U0001f1f7",
- ":flag-as:": "\U0001f1e6\U0001f1f8",
- ":flag-at:": "\U0001f1e6\U0001f1f9",
- ":flag-au:": "\U0001f1e6\U0001f1fa",
- ":flag-aw:": "\U0001f1e6\U0001f1fc",
- ":flag-ax:": "\U0001f1e6\U0001f1fd",
- ":flag-az:": "\U0001f1e6\U0001f1ff",
- ":flag-ba:": "\U0001f1e7\U0001f1e6",
- ":flag-bb:": "\U0001f1e7\U0001f1e7",
- ":flag-bd:": "\U0001f1e7\U0001f1e9",
- ":flag-be:": "\U0001f1e7\U0001f1ea",
- ":flag-bf:": "\U0001f1e7\U0001f1eb",
- ":flag-bg:": "\U0001f1e7\U0001f1ec",
- ":flag-bh:": "\U0001f1e7\U0001f1ed",
- ":flag-bi:": "\U0001f1e7\U0001f1ee",
- ":flag-bj:": "\U0001f1e7\U0001f1ef",
- ":flag-bl:": "\U0001f1e7\U0001f1f1",
- ":flag-bm:": "\U0001f1e7\U0001f1f2",
- ":flag-bn:": "\U0001f1e7\U0001f1f3",
- ":flag-bo:": "\U0001f1e7\U0001f1f4",
- ":flag-bq:": "\U0001f1e7\U0001f1f6",
- ":flag-br:": "\U0001f1e7\U0001f1f7",
- ":flag-bs:": "\U0001f1e7\U0001f1f8",
- ":flag-bt:": "\U0001f1e7\U0001f1f9",
- ":flag-bv:": "\U0001f1e7\U0001f1fb",
- ":flag-bw:": "\U0001f1e7\U0001f1fc",
- ":flag-by:": "\U0001f1e7\U0001f1fe",
- ":flag-bz:": "\U0001f1e7\U0001f1ff",
- ":flag-ca:": "\U0001f1e8\U0001f1e6",
- ":flag-cc:": "\U0001f1e8\U0001f1e8",
- ":flag-cd:": "\U0001f1e8\U0001f1e9",
- ":flag-cf:": "\U0001f1e8\U0001f1eb",
- ":flag-cg:": "\U0001f1e8\U0001f1ec",
- ":flag-ch:": "\U0001f1e8\U0001f1ed",
- ":flag-ci:": "\U0001f1e8\U0001f1ee",
- ":flag-ck:": "\U0001f1e8\U0001f1f0",
- ":flag-cl:": "\U0001f1e8\U0001f1f1",
- ":flag-cm:": "\U0001f1e8\U0001f1f2",
- ":flag-co:": "\U0001f1e8\U0001f1f4",
- ":flag-cp:": "\U0001f1e8\U0001f1f5",
- ":flag-cr:": "\U0001f1e8\U0001f1f7",
- ":flag-cu:": "\U0001f1e8\U0001f1fa",
- ":flag-cv:": "\U0001f1e8\U0001f1fb",
- ":flag-cw:": "\U0001f1e8\U0001f1fc",
- ":flag-cx:": "\U0001f1e8\U0001f1fd",
- ":flag-cy:": "\U0001f1e8\U0001f1fe",
- ":flag-cz:": "\U0001f1e8\U0001f1ff",
- ":flag-dg:": "\U0001f1e9\U0001f1ec",
- ":flag-dj:": "\U0001f1e9\U0001f1ef",
- ":flag-dk:": "\U0001f1e9\U0001f1f0",
- ":flag-dm:": "\U0001f1e9\U0001f1f2",
- ":flag-do:": "\U0001f1e9\U0001f1f4",
- ":flag-dz:": "\U0001f1e9\U0001f1ff",
- ":flag-ea:": "\U0001f1ea\U0001f1e6",
- ":flag-ec:": "\U0001f1ea\U0001f1e8",
- ":flag-ee:": "\U0001f1ea\U0001f1ea",
- ":flag-eg:": "\U0001f1ea\U0001f1ec",
- ":flag-eh:": "\U0001f1ea\U0001f1ed",
- ":flag-england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",
- ":flag-er:": "\U0001f1ea\U0001f1f7",
- ":flag-et:": "\U0001f1ea\U0001f1f9",
- ":flag-eu:": "\U0001f1ea\U0001f1fa",
- ":flag-fi:": "\U0001f1eb\U0001f1ee",
- ":flag-fj:": "\U0001f1eb\U0001f1ef",
- ":flag-fk:": "\U0001f1eb\U0001f1f0",
- ":flag-fm:": "\U0001f1eb\U0001f1f2",
- ":flag-fo:": "\U0001f1eb\U0001f1f4",
- ":flag-ga:": "\U0001f1ec\U0001f1e6",
- ":flag-gd:": "\U0001f1ec\U0001f1e9",
- ":flag-ge:": "\U0001f1ec\U0001f1ea",
- ":flag-gf:": "\U0001f1ec\U0001f1eb",
- ":flag-gg:": "\U0001f1ec\U0001f1ec",
- ":flag-gh:": "\U0001f1ec\U0001f1ed",
- ":flag-gi:": "\U0001f1ec\U0001f1ee",
- ":flag-gl:": "\U0001f1ec\U0001f1f1",
- ":flag-gm:": "\U0001f1ec\U0001f1f2",
- ":flag-gn:": "\U0001f1ec\U0001f1f3",
- ":flag-gp:": "\U0001f1ec\U0001f1f5",
- ":flag-gq:": "\U0001f1ec\U0001f1f6",
- ":flag-gr:": "\U0001f1ec\U0001f1f7",
- ":flag-gs:": "\U0001f1ec\U0001f1f8",
- ":flag-gt:": "\U0001f1ec\U0001f1f9",
- ":flag-gu:": "\U0001f1ec\U0001f1fa",
- ":flag-gw:": "\U0001f1ec\U0001f1fc",
- ":flag-gy:": "\U0001f1ec\U0001f1fe",
- ":flag-hk:": "\U0001f1ed\U0001f1f0",
- ":flag-hm:": "\U0001f1ed\U0001f1f2",
- ":flag-hn:": "\U0001f1ed\U0001f1f3",
- ":flag-hr:": "\U0001f1ed\U0001f1f7",
- ":flag-ht:": "\U0001f1ed\U0001f1f9",
- ":flag-hu:": "\U0001f1ed\U0001f1fa",
- ":flag-ic:": "\U0001f1ee\U0001f1e8",
- ":flag-id:": "\U0001f1ee\U0001f1e9",
- ":flag-ie:": "\U0001f1ee\U0001f1ea",
- ":flag-il:": "\U0001f1ee\U0001f1f1",
- ":flag-im:": "\U0001f1ee\U0001f1f2",
- ":flag-in:": "\U0001f1ee\U0001f1f3",
- ":flag-io:": "\U0001f1ee\U0001f1f4",
- ":flag-iq:": "\U0001f1ee\U0001f1f6",
- ":flag-ir:": "\U0001f1ee\U0001f1f7",
- ":flag-is:": "\U0001f1ee\U0001f1f8",
- ":flag-je:": "\U0001f1ef\U0001f1ea",
- ":flag-jm:": "\U0001f1ef\U0001f1f2",
- ":flag-jo:": "\U0001f1ef\U0001f1f4",
- ":flag-ke:": "\U0001f1f0\U0001f1ea",
- ":flag-kg:": "\U0001f1f0\U0001f1ec",
- ":flag-kh:": "\U0001f1f0\U0001f1ed",
- ":flag-ki:": "\U0001f1f0\U0001f1ee",
- ":flag-km:": "\U0001f1f0\U0001f1f2",
- ":flag-kn:": "\U0001f1f0\U0001f1f3",
- ":flag-kp:": "\U0001f1f0\U0001f1f5",
- ":flag-kw:": "\U0001f1f0\U0001f1fc",
- ":flag-ky:": "\U0001f1f0\U0001f1fe",
- ":flag-kz:": "\U0001f1f0\U0001f1ff",
- ":flag-la:": "\U0001f1f1\U0001f1e6",
- ":flag-lb:": "\U0001f1f1\U0001f1e7",
- ":flag-lc:": "\U0001f1f1\U0001f1e8",
- ":flag-li:": "\U0001f1f1\U0001f1ee",
- ":flag-lk:": "\U0001f1f1\U0001f1f0",
- ":flag-lr:": "\U0001f1f1\U0001f1f7",
- ":flag-ls:": "\U0001f1f1\U0001f1f8",
- ":flag-lt:": "\U0001f1f1\U0001f1f9",
- ":flag-lu:": "\U0001f1f1\U0001f1fa",
- ":flag-lv:": "\U0001f1f1\U0001f1fb",
- ":flag-ly:": "\U0001f1f1\U0001f1fe",
- ":flag-ma:": "\U0001f1f2\U0001f1e6",
- ":flag-mc:": "\U0001f1f2\U0001f1e8",
- ":flag-md:": "\U0001f1f2\U0001f1e9",
- ":flag-me:": "\U0001f1f2\U0001f1ea",
- ":flag-mf:": "\U0001f1f2\U0001f1eb",
- ":flag-mg:": "\U0001f1f2\U0001f1ec",
- ":flag-mh:": "\U0001f1f2\U0001f1ed",
- ":flag-mk:": "\U0001f1f2\U0001f1f0",
- ":flag-ml:": "\U0001f1f2\U0001f1f1",
- ":flag-mm:": "\U0001f1f2\U0001f1f2",
- ":flag-mn:": "\U0001f1f2\U0001f1f3",
- ":flag-mo:": "\U0001f1f2\U0001f1f4",
- ":flag-mp:": "\U0001f1f2\U0001f1f5",
- ":flag-mq:": "\U0001f1f2\U0001f1f6",
- ":flag-mr:": "\U0001f1f2\U0001f1f7",
- ":flag-ms:": "\U0001f1f2\U0001f1f8",
- ":flag-mt:": "\U0001f1f2\U0001f1f9",
- ":flag-mu:": "\U0001f1f2\U0001f1fa",
- ":flag-mv:": "\U0001f1f2\U0001f1fb",
- ":flag-mw:": "\U0001f1f2\U0001f1fc",
- ":flag-mx:": "\U0001f1f2\U0001f1fd",
- ":flag-my:": "\U0001f1f2\U0001f1fe",
- ":flag-mz:": "\U0001f1f2\U0001f1ff",
- ":flag-na:": "\U0001f1f3\U0001f1e6",
- ":flag-nc:": "\U0001f1f3\U0001f1e8",
- ":flag-ne:": "\U0001f1f3\U0001f1ea",
- ":flag-nf:": "\U0001f1f3\U0001f1eb",
- ":flag-ng:": "\U0001f1f3\U0001f1ec",
- ":flag-ni:": "\U0001f1f3\U0001f1ee",
- ":flag-nl:": "\U0001f1f3\U0001f1f1",
- ":flag-no:": "\U0001f1f3\U0001f1f4",
- ":flag-np:": "\U0001f1f3\U0001f1f5",
- ":flag-nr:": "\U0001f1f3\U0001f1f7",
- ":flag-nu:": "\U0001f1f3\U0001f1fa",
- ":flag-nz:": "\U0001f1f3\U0001f1ff",
- ":flag-om:": "\U0001f1f4\U0001f1f2",
- ":flag-pa:": "\U0001f1f5\U0001f1e6",
- ":flag-pe:": "\U0001f1f5\U0001f1ea",
- ":flag-pf:": "\U0001f1f5\U0001f1eb",
- ":flag-pg:": "\U0001f1f5\U0001f1ec",
- ":flag-ph:": "\U0001f1f5\U0001f1ed",
- ":flag-pk:": "\U0001f1f5\U0001f1f0",
- ":flag-pl:": "\U0001f1f5\U0001f1f1",
- ":flag-pm:": "\U0001f1f5\U0001f1f2",
- ":flag-pn:": "\U0001f1f5\U0001f1f3",
- ":flag-pr:": "\U0001f1f5\U0001f1f7",
- ":flag-ps:": "\U0001f1f5\U0001f1f8",
- ":flag-pt:": "\U0001f1f5\U0001f1f9",
- ":flag-pw:": "\U0001f1f5\U0001f1fc",
- ":flag-py:": "\U0001f1f5\U0001f1fe",
- ":flag-qa:": "\U0001f1f6\U0001f1e6",
- ":flag-re:": "\U0001f1f7\U0001f1ea",
- ":flag-ro:": "\U0001f1f7\U0001f1f4",
- ":flag-rs:": "\U0001f1f7\U0001f1f8",
- ":flag-rw:": "\U0001f1f7\U0001f1fc",
- ":flag-sa:": "\U0001f1f8\U0001f1e6",
- ":flag-sb:": "\U0001f1f8\U0001f1e7",
- ":flag-sc:": "\U0001f1f8\U0001f1e8",
- ":flag-scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f",
- ":flag-sd:": "\U0001f1f8\U0001f1e9",
- ":flag-se:": "\U0001f1f8\U0001f1ea",
- ":flag-sg:": "\U0001f1f8\U0001f1ec",
- ":flag-sh:": "\U0001f1f8\U0001f1ed",
- ":flag-si:": "\U0001f1f8\U0001f1ee",
- ":flag-sj:": "\U0001f1f8\U0001f1ef",
- ":flag-sk:": "\U0001f1f8\U0001f1f0",
- ":flag-sl:": "\U0001f1f8\U0001f1f1",
- ":flag-sm:": "\U0001f1f8\U0001f1f2",
- ":flag-sn:": "\U0001f1f8\U0001f1f3",
- ":flag-so:": "\U0001f1f8\U0001f1f4",
- ":flag-sr:": "\U0001f1f8\U0001f1f7",
- ":flag-ss:": "\U0001f1f8\U0001f1f8",
- ":flag-st:": "\U0001f1f8\U0001f1f9",
- ":flag-sv:": "\U0001f1f8\U0001f1fb",
- ":flag-sx:": "\U0001f1f8\U0001f1fd",
- ":flag-sy:": "\U0001f1f8\U0001f1fe",
- ":flag-sz:": "\U0001f1f8\U0001f1ff",
- ":flag-ta:": "\U0001f1f9\U0001f1e6",
- ":flag-tc:": "\U0001f1f9\U0001f1e8",
- ":flag-td:": "\U0001f1f9\U0001f1e9",
- ":flag-tf:": "\U0001f1f9\U0001f1eb",
- ":flag-tg:": "\U0001f1f9\U0001f1ec",
- ":flag-th:": "\U0001f1f9\U0001f1ed",
- ":flag-tj:": "\U0001f1f9\U0001f1ef",
- ":flag-tk:": "\U0001f1f9\U0001f1f0",
- ":flag-tl:": "\U0001f1f9\U0001f1f1",
- ":flag-tm:": "\U0001f1f9\U0001f1f2",
- ":flag-tn:": "\U0001f1f9\U0001f1f3",
- ":flag-to:": "\U0001f1f9\U0001f1f4",
- ":flag-tr:": "\U0001f1f9\U0001f1f7",
- ":flag-tt:": "\U0001f1f9\U0001f1f9",
- ":flag-tv:": "\U0001f1f9\U0001f1fb",
- ":flag-tw:": "\U0001f1f9\U0001f1fc",
- ":flag-tz:": "\U0001f1f9\U0001f1ff",
- ":flag-ua:": "\U0001f1fa\U0001f1e6",
- ":flag-ug:": "\U0001f1fa\U0001f1ec",
- ":flag-um:": "\U0001f1fa\U0001f1f2",
- ":flag-un:": "\U0001f1fa\U0001f1f3",
- ":flag-uy:": "\U0001f1fa\U0001f1fe",
- ":flag-uz:": "\U0001f1fa\U0001f1ff",
- ":flag-va:": "\U0001f1fb\U0001f1e6",
- ":flag-vc:": "\U0001f1fb\U0001f1e8",
- ":flag-ve:": "\U0001f1fb\U0001f1ea",
- ":flag-vg:": "\U0001f1fb\U0001f1ec",
- ":flag-vi:": "\U0001f1fb\U0001f1ee",
- ":flag-vn:": "\U0001f1fb\U0001f1f3",
- ":flag-vu:": "\U0001f1fb\U0001f1fa",
- ":flag-wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f",
- ":flag-wf:": "\U0001f1fc\U0001f1eb",
- ":flag-ws:": "\U0001f1fc\U0001f1f8",
- ":flag-xk:": "\U0001f1fd\U0001f1f0",
- ":flag-ye:": "\U0001f1fe\U0001f1ea",
- ":flag-yt:": "\U0001f1fe\U0001f1f9",
- ":flag-za:": "\U0001f1ff\U0001f1e6",
- ":flag-zm:": "\U0001f1ff\U0001f1f2",
- ":flag-zw:": "\U0001f1ff\U0001f1fc",
- ":flag_Afghanistan:": "\U0001f1e6\U0001f1eb",
- ":flag_Albania:": "\U0001f1e6\U0001f1f1",
- ":flag_Algeria:": "\U0001f1e9\U0001f1ff",
- ":flag_American_Samoa:": "\U0001f1e6\U0001f1f8",
- ":flag_Andorra:": "\U0001f1e6\U0001f1e9",
- ":flag_Angola:": "\U0001f1e6\U0001f1f4",
- ":flag_Anguilla:": "\U0001f1e6\U0001f1ee",
- ":flag_Antarctica:": "\U0001f1e6\U0001f1f6",
- ":flag_Antigua_&_Barbuda:": "\U0001f1e6\U0001f1ec",
- ":flag_Argentina:": "\U0001f1e6\U0001f1f7",
- ":flag_Armenia:": "\U0001f1e6\U0001f1f2",
- ":flag_Aruba:": "\U0001f1e6\U0001f1fc",
- ":flag_Ascension_Island:": "\U0001f1e6\U0001f1e8",
- ":flag_Australia:": "\U0001f1e6\U0001f1fa",
- ":flag_Austria:": "\U0001f1e6\U0001f1f9",
- ":flag_Azerbaijan:": "\U0001f1e6\U0001f1ff",
- ":flag_Bahamas:": "\U0001f1e7\U0001f1f8",
- ":flag_Bahrain:": "\U0001f1e7\U0001f1ed",
- ":flag_Bangladesh:": "\U0001f1e7\U0001f1e9",
- ":flag_Barbados:": "\U0001f1e7\U0001f1e7",
- ":flag_Belarus:": "\U0001f1e7\U0001f1fe",
- ":flag_Belgium:": "\U0001f1e7\U0001f1ea",
- ":flag_Belize:": "\U0001f1e7\U0001f1ff",
- ":flag_Benin:": "\U0001f1e7\U0001f1ef",
- ":flag_Bermuda:": "\U0001f1e7\U0001f1f2",
- ":flag_Bhutan:": "\U0001f1e7\U0001f1f9",
- ":flag_Bolivia:": "\U0001f1e7\U0001f1f4",
- ":flag_Bosnia_&_Herzegovina:": "\U0001f1e7\U0001f1e6",
- ":flag_Botswana:": "\U0001f1e7\U0001f1fc",
- ":flag_Bouvet_Island:": "\U0001f1e7\U0001f1fb",
- ":flag_Brazil:": "\U0001f1e7\U0001f1f7",
- ":flag_British_Indian_Ocean_Territory:": "\U0001f1ee\U0001f1f4",
- ":flag_British_Virgin_Islands:": "\U0001f1fb\U0001f1ec",
- ":flag_Brunei:": "\U0001f1e7\U0001f1f3",
- ":flag_Bulgaria:": "\U0001f1e7\U0001f1ec",
- ":flag_Burkina_Faso:": "\U0001f1e7\U0001f1eb",
- ":flag_Burundi:": "\U0001f1e7\U0001f1ee",
- ":flag_Cambodia:": "\U0001f1f0\U0001f1ed",
- ":flag_Cameroon:": "\U0001f1e8\U0001f1f2",
- ":flag_Canada:": "\U0001f1e8\U0001f1e6",
- ":flag_Canary_Islands:": "\U0001f1ee\U0001f1e8",
- ":flag_Cape_Verde:": "\U0001f1e8\U0001f1fb",
- ":flag_Caribbean_Netherlands:": "\U0001f1e7\U0001f1f6",
- ":flag_Cayman_Islands:": "\U0001f1f0\U0001f1fe",
- ":flag_Central_African_Republic:": "\U0001f1e8\U0001f1eb",
- ":flag_Ceuta_&_Melilla:": "\U0001f1ea\U0001f1e6",
- ":flag_Chad:": "\U0001f1f9\U0001f1e9",
- ":flag_Chile:": "\U0001f1e8\U0001f1f1",
- ":flag_China:": "\U0001f1e8\U0001f1f3",
- ":flag_Christmas_Island:": "\U0001f1e8\U0001f1fd",
- ":flag_Clipperton_Island:": "\U0001f1e8\U0001f1f5",
- ":flag_Cocos_(Keeling)_Islands:": "\U0001f1e8\U0001f1e8",
- ":flag_Colombia:": "\U0001f1e8\U0001f1f4",
- ":flag_Comoros:": "\U0001f1f0\U0001f1f2",
- ":flag_Congo_-_Brazzaville:": "\U0001f1e8\U0001f1ec",
- ":flag_Congo_-_Kinshasa:": "\U0001f1e8\U0001f1e9",
- ":flag_Cook_Islands:": "\U0001f1e8\U0001f1f0",
- ":flag_Costa_Rica:": "\U0001f1e8\U0001f1f7",
- ":flag_Croatia:": "\U0001f1ed\U0001f1f7",
- ":flag_Cuba:": "\U0001f1e8\U0001f1fa",
- ":flag_Curaçao:": "\U0001f1e8\U0001f1fc",
- ":flag_Cyprus:": "\U0001f1e8\U0001f1fe",
- ":flag_Czechia:": "\U0001f1e8\U0001f1ff",
- ":flag_Côte_d’Ivoire:": "\U0001f1e8\U0001f1ee",
- ":flag_Denmark:": "\U0001f1e9\U0001f1f0",
- ":flag_Diego_Garcia:": "\U0001f1e9\U0001f1ec",
- ":flag_Djibouti:": "\U0001f1e9\U0001f1ef",
- ":flag_Dominica:": "\U0001f1e9\U0001f1f2",
- ":flag_Dominican_Republic:": "\U0001f1e9\U0001f1f4",
- ":flag_Ecuador:": "\U0001f1ea\U0001f1e8",
- ":flag_Egypt:": "\U0001f1ea\U0001f1ec",
- ":flag_El_Salvador:": "\U0001f1f8\U0001f1fb",
- ":flag_England:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",
- ":flag_Equatorial_Guinea:": "\U0001f1ec\U0001f1f6",
- ":flag_Eritrea:": "\U0001f1ea\U0001f1f7",
- ":flag_Estonia:": "\U0001f1ea\U0001f1ea",
- ":flag_Eswatini:": "\U0001f1f8\U0001f1ff",
- ":flag_Ethiopia:": "\U0001f1ea\U0001f1f9",
- ":flag_European_Union:": "\U0001f1ea\U0001f1fa",
- ":flag_Falkland_Islands:": "\U0001f1eb\U0001f1f0",
- ":flag_Faroe_Islands:": "\U0001f1eb\U0001f1f4",
- ":flag_Fiji:": "\U0001f1eb\U0001f1ef",
- ":flag_Finland:": "\U0001f1eb\U0001f1ee",
- ":flag_France:": "\U0001f1eb\U0001f1f7",
- ":flag_French_Guiana:": "\U0001f1ec\U0001f1eb",
- ":flag_French_Polynesia:": "\U0001f1f5\U0001f1eb",
- ":flag_French_Southern_Territories:": "\U0001f1f9\U0001f1eb",
- ":flag_Gabon:": "\U0001f1ec\U0001f1e6",
- ":flag_Gambia:": "\U0001f1ec\U0001f1f2",
- ":flag_Georgia:": "\U0001f1ec\U0001f1ea",
- ":flag_Germany:": "\U0001f1e9\U0001f1ea",
- ":flag_Ghana:": "\U0001f1ec\U0001f1ed",
- ":flag_Gibraltar:": "\U0001f1ec\U0001f1ee",
- ":flag_Greece:": "\U0001f1ec\U0001f1f7",
- ":flag_Greenland:": "\U0001f1ec\U0001f1f1",
- ":flag_Grenada:": "\U0001f1ec\U0001f1e9",
- ":flag_Guadeloupe:": "\U0001f1ec\U0001f1f5",
- ":flag_Guam:": "\U0001f1ec\U0001f1fa",
- ":flag_Guatemala:": "\U0001f1ec\U0001f1f9",
- ":flag_Guernsey:": "\U0001f1ec\U0001f1ec",
- ":flag_Guinea:": "\U0001f1ec\U0001f1f3",
- ":flag_Guinea-Bissau:": "\U0001f1ec\U0001f1fc",
- ":flag_Guyana:": "\U0001f1ec\U0001f1fe",
- ":flag_Haiti:": "\U0001f1ed\U0001f1f9",
- ":flag_Heard_&_McDonald_Islands:": "\U0001f1ed\U0001f1f2",
- ":flag_Honduras:": "\U0001f1ed\U0001f1f3",
- ":flag_Hong_Kong_SAR_China:": "\U0001f1ed\U0001f1f0",
- ":flag_Hungary:": "\U0001f1ed\U0001f1fa",
- ":flag_Iceland:": "\U0001f1ee\U0001f1f8",
- ":flag_India:": "\U0001f1ee\U0001f1f3",
- ":flag_Indonesia:": "\U0001f1ee\U0001f1e9",
- ":flag_Iran:": "\U0001f1ee\U0001f1f7",
- ":flag_Iraq:": "\U0001f1ee\U0001f1f6",
- ":flag_Ireland:": "\U0001f1ee\U0001f1ea",
- ":flag_Isle_of_Man:": "\U0001f1ee\U0001f1f2",
- ":flag_Israel:": "\U0001f1ee\U0001f1f1",
- ":flag_Italy:": "\U0001f1ee\U0001f1f9",
- ":flag_Jamaica:": "\U0001f1ef\U0001f1f2",
- ":flag_Japan:": "\U0001f1ef\U0001f1f5",
- ":flag_Jersey:": "\U0001f1ef\U0001f1ea",
- ":flag_Jordan:": "\U0001f1ef\U0001f1f4",
- ":flag_Kazakhstan:": "\U0001f1f0\U0001f1ff",
- ":flag_Kenya:": "\U0001f1f0\U0001f1ea",
- ":flag_Kiribati:": "\U0001f1f0\U0001f1ee",
- ":flag_Kosovo:": "\U0001f1fd\U0001f1f0",
- ":flag_Kuwait:": "\U0001f1f0\U0001f1fc",
- ":flag_Kyrgyzstan:": "\U0001f1f0\U0001f1ec",
- ":flag_Laos:": "\U0001f1f1\U0001f1e6",
- ":flag_Latvia:": "\U0001f1f1\U0001f1fb",
- ":flag_Lebanon:": "\U0001f1f1\U0001f1e7",
- ":flag_Lesotho:": "\U0001f1f1\U0001f1f8",
- ":flag_Liberia:": "\U0001f1f1\U0001f1f7",
- ":flag_Libya:": "\U0001f1f1\U0001f1fe",
- ":flag_Liechtenstein:": "\U0001f1f1\U0001f1ee",
- ":flag_Lithuania:": "\U0001f1f1\U0001f1f9",
- ":flag_Luxembourg:": "\U0001f1f1\U0001f1fa",
- ":flag_Macao_SAR_China:": "\U0001f1f2\U0001f1f4",
- ":flag_Madagascar:": "\U0001f1f2\U0001f1ec",
- ":flag_Malawi:": "\U0001f1f2\U0001f1fc",
- ":flag_Malaysia:": "\U0001f1f2\U0001f1fe",
- ":flag_Maldives:": "\U0001f1f2\U0001f1fb",
- ":flag_Mali:": "\U0001f1f2\U0001f1f1",
- ":flag_Malta:": "\U0001f1f2\U0001f1f9",
- ":flag_Marshall_Islands:": "\U0001f1f2\U0001f1ed",
- ":flag_Martinique:": "\U0001f1f2\U0001f1f6",
- ":flag_Mauritania:": "\U0001f1f2\U0001f1f7",
- ":flag_Mauritius:": "\U0001f1f2\U0001f1fa",
- ":flag_Mayotte:": "\U0001f1fe\U0001f1f9",
- ":flag_Mexico:": "\U0001f1f2\U0001f1fd",
- ":flag_Micronesia:": "\U0001f1eb\U0001f1f2",
- ":flag_Moldova:": "\U0001f1f2\U0001f1e9",
- ":flag_Monaco:": "\U0001f1f2\U0001f1e8",
- ":flag_Mongolia:": "\U0001f1f2\U0001f1f3",
- ":flag_Montenegro:": "\U0001f1f2\U0001f1ea",
- ":flag_Montserrat:": "\U0001f1f2\U0001f1f8",
- ":flag_Morocco:": "\U0001f1f2\U0001f1e6",
- ":flag_Mozambique:": "\U0001f1f2\U0001f1ff",
- ":flag_Myanmar_(Burma):": "\U0001f1f2\U0001f1f2",
- ":flag_Namibia:": "\U0001f1f3\U0001f1e6",
- ":flag_Nauru:": "\U0001f1f3\U0001f1f7",
- ":flag_Nepal:": "\U0001f1f3\U0001f1f5",
- ":flag_Netherlands:": "\U0001f1f3\U0001f1f1",
- ":flag_New_Caledonia:": "\U0001f1f3\U0001f1e8",
- ":flag_New_Zealand:": "\U0001f1f3\U0001f1ff",
- ":flag_Nicaragua:": "\U0001f1f3\U0001f1ee",
- ":flag_Niger:": "\U0001f1f3\U0001f1ea",
- ":flag_Nigeria:": "\U0001f1f3\U0001f1ec",
- ":flag_Niue:": "\U0001f1f3\U0001f1fa",
- ":flag_Norfolk_Island:": "\U0001f1f3\U0001f1eb",
- ":flag_North_Korea:": "\U0001f1f0\U0001f1f5",
- ":flag_North_Macedonia:": "\U0001f1f2\U0001f1f0",
- ":flag_Northern_Mariana_Islands:": "\U0001f1f2\U0001f1f5",
- ":flag_Norway:": "\U0001f1f3\U0001f1f4",
- ":flag_Oman:": "\U0001f1f4\U0001f1f2",
- ":flag_Pakistan:": "\U0001f1f5\U0001f1f0",
- ":flag_Palau:": "\U0001f1f5\U0001f1fc",
- ":flag_Palestinian_Territories:": "\U0001f1f5\U0001f1f8",
- ":flag_Panama:": "\U0001f1f5\U0001f1e6",
- ":flag_Papua_New_Guinea:": "\U0001f1f5\U0001f1ec",
- ":flag_Paraguay:": "\U0001f1f5\U0001f1fe",
- ":flag_Peru:": "\U0001f1f5\U0001f1ea",
- ":flag_Philippines:": "\U0001f1f5\U0001f1ed",
- ":flag_Pitcairn_Islands:": "\U0001f1f5\U0001f1f3",
- ":flag_Poland:": "\U0001f1f5\U0001f1f1",
- ":flag_Portugal:": "\U0001f1f5\U0001f1f9",
- ":flag_Puerto_Rico:": "\U0001f1f5\U0001f1f7",
- ":flag_Qatar:": "\U0001f1f6\U0001f1e6",
- ":flag_Romania:": "\U0001f1f7\U0001f1f4",
- ":flag_Russia:": "\U0001f1f7\U0001f1fa",
- ":flag_Rwanda:": "\U0001f1f7\U0001f1fc",
- ":flag_Réunion:": "\U0001f1f7\U0001f1ea",
- ":flag_Samoa:": "\U0001f1fc\U0001f1f8",
- ":flag_San_Marino:": "\U0001f1f8\U0001f1f2",
- ":flag_Saudi_Arabia:": "\U0001f1f8\U0001f1e6",
- ":flag_Scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f",
- ":flag_Senegal:": "\U0001f1f8\U0001f1f3",
- ":flag_Serbia:": "\U0001f1f7\U0001f1f8",
- ":flag_Seychelles:": "\U0001f1f8\U0001f1e8",
- ":flag_Sierra_Leone:": "\U0001f1f8\U0001f1f1",
- ":flag_Singapore:": "\U0001f1f8\U0001f1ec",
- ":flag_Sint_Maarten:": "\U0001f1f8\U0001f1fd",
- ":flag_Slovakia:": "\U0001f1f8\U0001f1f0",
- ":flag_Slovenia:": "\U0001f1f8\U0001f1ee",
- ":flag_Solomon_Islands:": "\U0001f1f8\U0001f1e7",
- ":flag_Somalia:": "\U0001f1f8\U0001f1f4",
- ":flag_South_Africa:": "\U0001f1ff\U0001f1e6",
+ ":face_with_open_eyes_and_hand_over_mouth:": "\U0001fae2",
+ ":face_with_open_mouth:": "\U0001f62e",
+ ":face_with_peeking_eye:": "\U0001fae3",
+ ":face_with_raised_eyebrow:": "\U0001f928",
+ ":face_with_rolling_eyes:": "\U0001f644",
+ ":face_with_spiral_eyes:": "\U0001f635\u200d\U0001f4ab",
+ ":face_with_steam_from_nose:": "\U0001f624",
+ ":face_with_symbols_on_mouth:": "\U0001f92c",
+ ":face_with_symbols_over_mouth:": "\U0001f92c",
+ ":face_with_tears_of_joy:": "\U0001f602",
+ ":face_with_thermometer:": "\U0001f912",
+ ":face_with_tongue:": "\U0001f61b",
+ ":face_without_mouth:": "\U0001f636",
+ ":facepalm:": "\U0001f926",
+ ":facepunch:": "\U0001f44a",
+ ":factory:": "\U0001f3ed",
+ ":factory_worker:": "\U0001f9d1\u200d\U0001f3ed",
+ ":fairy:": "\U0001f9da\u200d\u2640\ufe0f",
+ ":fairy_man:": "\U0001f9da\u200d\u2642\ufe0f",
+ ":fairy_tone1:": "\U0001f9da\U0001f3fb",
+ ":fairy_tone2:": "\U0001f9da\U0001f3fc",
+ ":fairy_tone3:": "\U0001f9da\U0001f3fd",
+ ":fairy_tone4:": "\U0001f9da\U0001f3fe",
+ ":fairy_tone5:": "\U0001f9da\U0001f3ff",
+ ":fairy_woman:": "\U0001f9da\u200d\u2640\ufe0f",
+ ":falafel:": "\U0001f9c6",
+ ":falkland_islands:": "\U0001f1eb\U0001f1f0",
+ ":fallen_leaf:": "\U0001f342",
+ ":family:": "\U0001f468\u200d\U0001f469\u200d\U0001f466",
+ ":family_man_boy:": "\U0001f468\u200d\U0001f466",
+ ":family_man_boy_boy:": "\U0001f468\u200d\U0001f466\u200d\U0001f466",
+ ":family_man_girl:": "\U0001f468\u200d\U0001f467",
+ ":family_man_girl_boy:": "\U0001f468\u200d\U0001f467\u200d\U0001f466",
+ ":family_man_girl_girl:": "\U0001f468\u200d\U0001f467\u200d\U0001f467",
+ ":family_man_man_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466",
+ ":family_man_man_boy_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466",
+ ":family_man_man_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467",
+ ":family_man_man_girl_boy:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466",
+ ":family_man_man_girl_girl:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467",
+ ":family_man_woman_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466",
+ ":family_man_woman_boy_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
+ ":family_man_woman_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467",
+ ":family_man_woman_girl_boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
+ ":family_man_woman_girl_girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
+ ":family_mmb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466",
+ ":family_mmbb:": "\U0001f468\u200d\U0001f468\u200d\U0001f466\u200d\U0001f466",
+ ":family_mmg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467",
+ ":family_mmgb:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f466",
+ ":family_mmgg:": "\U0001f468\u200d\U0001f468\u200d\U0001f467\u200d\U0001f467",
+ ":family_mwbb:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
+ ":family_mwg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467",
+ ":family_mwgb:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
+ ":family_mwgg:": "\U0001f468\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
+ ":family_woman_boy:": "\U0001f469\u200d\U0001f466",
+ ":family_woman_boy_boy:": "\U0001f469\u200d\U0001f466\u200d\U0001f466",
+ ":family_woman_girl:": "\U0001f469\u200d\U0001f467",
+ ":family_woman_girl_boy:": "\U0001f469\u200d\U0001f467\u200d\U0001f466",
+ ":family_woman_girl_girl:": "\U0001f469\u200d\U0001f467\u200d\U0001f467",
+ ":family_woman_woman_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466",
+ ":family_woman_woman_boy_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
+ ":family_woman_woman_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467",
+ ":family_woman_woman_girl_boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
+ ":family_woman_woman_girl_girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
+ ":family_wwb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466",
+ ":family_wwbb:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
+ ":family_wwg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467",
+ ":family_wwgb:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f466",
+ ":family_wwgg:": "\U0001f469\u200d\U0001f469\u200d\U0001f467\u200d\U0001f467",
+ ":farmer:": "\U0001f9d1\u200d\U0001f33e",
+ ":faroe_islands:": "\U0001f1eb\U0001f1f4",
+ ":fast-forward_button:": "\u23e9",
+ ":fast_down_button:": "\u23ec",
+ ":fast_forward:": "\u23e9",
+ ":fast_reverse_button:": "\u23ea",
+ ":fast_up_button:": "\u23eb",
+ ":fax:": "\U0001f4e0",
+ ":fax_machine:": "\U0001f4e0",
+ ":fearful:": "\U0001f628",
+ ":fearful_face:": "\U0001f628",
+ ":feather:": "\U0001fab6",
+ ":feet:": "\U0001f43e",
+ ":female-artist:": "\U0001f469\u200d\U0001f3a8",
+ ":female-astronaut:": "\U0001f469\u200d\U0001f680",
+ ":female-construction-worker:": "\U0001f477\u200d\u2640\ufe0f",
+ ":female-cook:": "\U0001f469\u200d\U0001f373",
+ ":female-detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f",
+ ":female-doctor:": "\U0001f469\u200d\u2695\ufe0f",
+ ":female-factory-worker:": "\U0001f469\u200d\U0001f3ed",
+ ":female-farmer:": "\U0001f469\u200d\U0001f33e",
+ ":female-firefighter:": "\U0001f469\u200d\U0001f692",
+ ":female-guard:": "\U0001f482\u200d\u2640\ufe0f",
+ ":female-judge:": "\U0001f469\u200d\u2696\ufe0f",
+ ":female-mechanic:": "\U0001f469\u200d\U0001f527",
+ ":female-office-worker:": "\U0001f469\u200d\U0001f4bc",
+ ":female-pilot:": "\U0001f469\u200d\u2708\ufe0f",
+ ":female-police-officer:": "\U0001f46e\u200d\u2640\ufe0f",
+ ":female-scientist:": "\U0001f469\u200d\U0001f52c",
+ ":female-singer:": "\U0001f469\u200d\U0001f3a4",
+ ":female-student:": "\U0001f469\u200d\U0001f393",
+ ":female-teacher:": "\U0001f469\u200d\U0001f3eb",
+ ":female-technologist:": "\U0001f469\u200d\U0001f4bb",
+ ":female_detective:": "\U0001f575\ufe0f\u200d\u2640\ufe0f",
+ ":female_elf:": "\U0001f9dd\u200d\u2640\ufe0f",
+ ":female_fairy:": "\U0001f9da\u200d\u2640\ufe0f",
+ ":female_genie:": "\U0001f9de\u200d\u2640\ufe0f",
+ ":female_mage:": "\U0001f9d9\u200d\u2640\ufe0f",
+ ":female_sign:": "\u2640\ufe0f",
+ ":female_superhero:": "\U0001f9b8\u200d\u2640\ufe0f",
+ ":female_supervillain:": "\U0001f9b9\u200d\u2640\ufe0f",
+ ":female_vampire:": "\U0001f9db\u200d\u2640\ufe0f",
+ ":female_zombie:": "\U0001f9df\u200d\u2640\ufe0f",
+ ":fencer:": "\U0001f93a",
+ ":ferris_wheel:": "\U0001f3a1",
+ ":ferry:": "\u26f4\ufe0f",
+ ":field_hockey:": "\U0001f3d1",
+ ":field_hockey_stick_and_ball:": "\U0001f3d1",
+ ":fiji:": "\U0001f1eb\U0001f1ef",
+ ":file_cabinet:": "\U0001f5c4\ufe0f",
+ ":file_folder:": "\U0001f4c1",
+ ":film_frames:": "\U0001f39e\ufe0f",
+ ":film_projector:": "\U0001f4fd\ufe0f",
+ ":film_strip:": "\U0001f39e\ufe0f",
+ ":fingers_crossed:": "\U0001f91e",
+ ":fingers_crossed_tone1:": "\U0001f91e\U0001f3fb",
+ ":fingers_crossed_tone2:": "\U0001f91e\U0001f3fc",
+ ":fingers_crossed_tone3:": "\U0001f91e\U0001f3fd",
+ ":fingers_crossed_tone4:": "\U0001f91e\U0001f3fe",
+ ":fingers_crossed_tone5:": "\U0001f91e\U0001f3ff",
+ ":finland:": "\U0001f1eb\U0001f1ee",
+ ":fire:": "\U0001f525",
+ ":fire_engine:": "\U0001f692",
+ ":fire_extinguisher:": "\U0001f9ef",
+ ":firecracker:": "\U0001f9e8",
+ ":firefighter:": "\U0001f9d1\u200d\U0001f692",
+ ":fireworks:": "\U0001f386",
+ ":first_place:": "\U0001f947",
+ ":first_place_medal:": "\U0001f947",
+ ":first_quarter_moon:": "\U0001f313",
+ ":first_quarter_moon_face:": "\U0001f31b",
+ ":first_quarter_moon_with_face:": "\U0001f31b",
+ ":fish:": "\U0001f41f",
+ ":fish_cake:": "\U0001f365",
+ ":fish_cake_with_swirl:": "\U0001f365",
+ ":fishing_pole:": "\U0001f3a3",
+ ":fishing_pole_and_fish:": "\U0001f3a3",
+ ":fist:": "\u270a",
+ ":fist_left:": "\U0001f91b",
+ ":fist_oncoming:": "\U0001f44a",
+ ":fist_raised:": "\u270a",
+ ":fist_right:": "\U0001f91c",
+ ":fist_tone1:": "\u270a\U0001f3fb",
+ ":fist_tone2:": "\u270a\U0001f3fc",
+ ":fist_tone3:": "\u270a\U0001f3fd",
+ ":fist_tone4:": "\u270a\U0001f3fe",
+ ":fist_tone5:": "\u270a\U0001f3ff",
+ ":five:": "5\ufe0f\u20e3",
+ ":five-thirty:": "\U0001f560",
+ ":five_o’clock:": "\U0001f554",
+ ":flag-ac:": "\U0001f1e6\U0001f1e8",
+ ":flag-ad:": "\U0001f1e6\U0001f1e9",
+ ":flag-ae:": "\U0001f1e6\U0001f1ea",
+ ":flag-af:": "\U0001f1e6\U0001f1eb",
+ ":flag-ag:": "\U0001f1e6\U0001f1ec",
+ ":flag-ai:": "\U0001f1e6\U0001f1ee",
+ ":flag-al:": "\U0001f1e6\U0001f1f1",
+ ":flag-am:": "\U0001f1e6\U0001f1f2",
+ ":flag-ao:": "\U0001f1e6\U0001f1f4",
+ ":flag-aq:": "\U0001f1e6\U0001f1f6",
+ ":flag-ar:": "\U0001f1e6\U0001f1f7",
+ ":flag-as:": "\U0001f1e6\U0001f1f8",
+ ":flag-at:": "\U0001f1e6\U0001f1f9",
+ ":flag-au:": "\U0001f1e6\U0001f1fa",
+ ":flag-aw:": "\U0001f1e6\U0001f1fc",
+ ":flag-ax:": "\U0001f1e6\U0001f1fd",
+ ":flag-az:": "\U0001f1e6\U0001f1ff",
+ ":flag-ba:": "\U0001f1e7\U0001f1e6",
+ ":flag-bb:": "\U0001f1e7\U0001f1e7",
+ ":flag-bd:": "\U0001f1e7\U0001f1e9",
+ ":flag-be:": "\U0001f1e7\U0001f1ea",
+ ":flag-bf:": "\U0001f1e7\U0001f1eb",
+ ":flag-bg:": "\U0001f1e7\U0001f1ec",
+ ":flag-bh:": "\U0001f1e7\U0001f1ed",
+ ":flag-bi:": "\U0001f1e7\U0001f1ee",
+ ":flag-bj:": "\U0001f1e7\U0001f1ef",
+ ":flag-bl:": "\U0001f1e7\U0001f1f1",
+ ":flag-bm:": "\U0001f1e7\U0001f1f2",
+ ":flag-bn:": "\U0001f1e7\U0001f1f3",
+ ":flag-bo:": "\U0001f1e7\U0001f1f4",
+ ":flag-bq:": "\U0001f1e7\U0001f1f6",
+ ":flag-br:": "\U0001f1e7\U0001f1f7",
+ ":flag-bs:": "\U0001f1e7\U0001f1f8",
+ ":flag-bt:": "\U0001f1e7\U0001f1f9",
+ ":flag-bv:": "\U0001f1e7\U0001f1fb",
+ ":flag-bw:": "\U0001f1e7\U0001f1fc",
+ ":flag-by:": "\U0001f1e7\U0001f1fe",
+ ":flag-bz:": "\U0001f1e7\U0001f1ff",
+ ":flag-ca:": "\U0001f1e8\U0001f1e6",
+ ":flag-cc:": "\U0001f1e8\U0001f1e8",
+ ":flag-cd:": "\U0001f1e8\U0001f1e9",
+ ":flag-cf:": "\U0001f1e8\U0001f1eb",
+ ":flag-cg:": "\U0001f1e8\U0001f1ec",
+ ":flag-ch:": "\U0001f1e8\U0001f1ed",
+ ":flag-ci:": "\U0001f1e8\U0001f1ee",
+ ":flag-ck:": "\U0001f1e8\U0001f1f0",
+ ":flag-cl:": "\U0001f1e8\U0001f1f1",
+ ":flag-cm:": "\U0001f1e8\U0001f1f2",
+ ":flag-co:": "\U0001f1e8\U0001f1f4",
+ ":flag-cp:": "\U0001f1e8\U0001f1f5",
+ ":flag-cr:": "\U0001f1e8\U0001f1f7",
+ ":flag-cu:": "\U0001f1e8\U0001f1fa",
+ ":flag-cv:": "\U0001f1e8\U0001f1fb",
+ ":flag-cw:": "\U0001f1e8\U0001f1fc",
+ ":flag-cx:": "\U0001f1e8\U0001f1fd",
+ ":flag-cy:": "\U0001f1e8\U0001f1fe",
+ ":flag-cz:": "\U0001f1e8\U0001f1ff",
+ ":flag-dg:": "\U0001f1e9\U0001f1ec",
+ ":flag-dj:": "\U0001f1e9\U0001f1ef",
+ ":flag-dk:": "\U0001f1e9\U0001f1f0",
+ ":flag-dm:": "\U0001f1e9\U0001f1f2",
+ ":flag-do:": "\U0001f1e9\U0001f1f4",
+ ":flag-dz:": "\U0001f1e9\U0001f1ff",
+ ":flag-ea:": "\U0001f1ea\U0001f1e6",
+ ":flag-ec:": "\U0001f1ea\U0001f1e8",
+ ":flag-ee:": "\U0001f1ea\U0001f1ea",
+ ":flag-eg:": "\U0001f1ea\U0001f1ec",
+ ":flag-eh:": "\U0001f1ea\U0001f1ed",
+ ":flag-england:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",
+ ":flag-er:": "\U0001f1ea\U0001f1f7",
+ ":flag-et:": "\U0001f1ea\U0001f1f9",
+ ":flag-eu:": "\U0001f1ea\U0001f1fa",
+ ":flag-fi:": "\U0001f1eb\U0001f1ee",
+ ":flag-fj:": "\U0001f1eb\U0001f1ef",
+ ":flag-fk:": "\U0001f1eb\U0001f1f0",
+ ":flag-fm:": "\U0001f1eb\U0001f1f2",
+ ":flag-fo:": "\U0001f1eb\U0001f1f4",
+ ":flag-ga:": "\U0001f1ec\U0001f1e6",
+ ":flag-gd:": "\U0001f1ec\U0001f1e9",
+ ":flag-ge:": "\U0001f1ec\U0001f1ea",
+ ":flag-gf:": "\U0001f1ec\U0001f1eb",
+ ":flag-gg:": "\U0001f1ec\U0001f1ec",
+ ":flag-gh:": "\U0001f1ec\U0001f1ed",
+ ":flag-gi:": "\U0001f1ec\U0001f1ee",
+ ":flag-gl:": "\U0001f1ec\U0001f1f1",
+ ":flag-gm:": "\U0001f1ec\U0001f1f2",
+ ":flag-gn:": "\U0001f1ec\U0001f1f3",
+ ":flag-gp:": "\U0001f1ec\U0001f1f5",
+ ":flag-gq:": "\U0001f1ec\U0001f1f6",
+ ":flag-gr:": "\U0001f1ec\U0001f1f7",
+ ":flag-gs:": "\U0001f1ec\U0001f1f8",
+ ":flag-gt:": "\U0001f1ec\U0001f1f9",
+ ":flag-gu:": "\U0001f1ec\U0001f1fa",
+ ":flag-gw:": "\U0001f1ec\U0001f1fc",
+ ":flag-gy:": "\U0001f1ec\U0001f1fe",
+ ":flag-hk:": "\U0001f1ed\U0001f1f0",
+ ":flag-hm:": "\U0001f1ed\U0001f1f2",
+ ":flag-hn:": "\U0001f1ed\U0001f1f3",
+ ":flag-hr:": "\U0001f1ed\U0001f1f7",
+ ":flag-ht:": "\U0001f1ed\U0001f1f9",
+ ":flag-hu:": "\U0001f1ed\U0001f1fa",
+ ":flag-ic:": "\U0001f1ee\U0001f1e8",
+ ":flag-id:": "\U0001f1ee\U0001f1e9",
+ ":flag-ie:": "\U0001f1ee\U0001f1ea",
+ ":flag-il:": "\U0001f1ee\U0001f1f1",
+ ":flag-im:": "\U0001f1ee\U0001f1f2",
+ ":flag-in:": "\U0001f1ee\U0001f1f3",
+ ":flag-io:": "\U0001f1ee\U0001f1f4",
+ ":flag-iq:": "\U0001f1ee\U0001f1f6",
+ ":flag-ir:": "\U0001f1ee\U0001f1f7",
+ ":flag-is:": "\U0001f1ee\U0001f1f8",
+ ":flag-je:": "\U0001f1ef\U0001f1ea",
+ ":flag-jm:": "\U0001f1ef\U0001f1f2",
+ ":flag-jo:": "\U0001f1ef\U0001f1f4",
+ ":flag-ke:": "\U0001f1f0\U0001f1ea",
+ ":flag-kg:": "\U0001f1f0\U0001f1ec",
+ ":flag-kh:": "\U0001f1f0\U0001f1ed",
+ ":flag-ki:": "\U0001f1f0\U0001f1ee",
+ ":flag-km:": "\U0001f1f0\U0001f1f2",
+ ":flag-kn:": "\U0001f1f0\U0001f1f3",
+ ":flag-kp:": "\U0001f1f0\U0001f1f5",
+ ":flag-kw:": "\U0001f1f0\U0001f1fc",
+ ":flag-ky:": "\U0001f1f0\U0001f1fe",
+ ":flag-kz:": "\U0001f1f0\U0001f1ff",
+ ":flag-la:": "\U0001f1f1\U0001f1e6",
+ ":flag-lb:": "\U0001f1f1\U0001f1e7",
+ ":flag-lc:": "\U0001f1f1\U0001f1e8",
+ ":flag-li:": "\U0001f1f1\U0001f1ee",
+ ":flag-lk:": "\U0001f1f1\U0001f1f0",
+ ":flag-lr:": "\U0001f1f1\U0001f1f7",
+ ":flag-ls:": "\U0001f1f1\U0001f1f8",
+ ":flag-lt:": "\U0001f1f1\U0001f1f9",
+ ":flag-lu:": "\U0001f1f1\U0001f1fa",
+ ":flag-lv:": "\U0001f1f1\U0001f1fb",
+ ":flag-ly:": "\U0001f1f1\U0001f1fe",
+ ":flag-ma:": "\U0001f1f2\U0001f1e6",
+ ":flag-mc:": "\U0001f1f2\U0001f1e8",
+ ":flag-md:": "\U0001f1f2\U0001f1e9",
+ ":flag-me:": "\U0001f1f2\U0001f1ea",
+ ":flag-mf:": "\U0001f1f2\U0001f1eb",
+ ":flag-mg:": "\U0001f1f2\U0001f1ec",
+ ":flag-mh:": "\U0001f1f2\U0001f1ed",
+ ":flag-mk:": "\U0001f1f2\U0001f1f0",
+ ":flag-ml:": "\U0001f1f2\U0001f1f1",
+ ":flag-mm:": "\U0001f1f2\U0001f1f2",
+ ":flag-mn:": "\U0001f1f2\U0001f1f3",
+ ":flag-mo:": "\U0001f1f2\U0001f1f4",
+ ":flag-mp:": "\U0001f1f2\U0001f1f5",
+ ":flag-mq:": "\U0001f1f2\U0001f1f6",
+ ":flag-mr:": "\U0001f1f2\U0001f1f7",
+ ":flag-ms:": "\U0001f1f2\U0001f1f8",
+ ":flag-mt:": "\U0001f1f2\U0001f1f9",
+ ":flag-mu:": "\U0001f1f2\U0001f1fa",
+ ":flag-mv:": "\U0001f1f2\U0001f1fb",
+ ":flag-mw:": "\U0001f1f2\U0001f1fc",
+ ":flag-mx:": "\U0001f1f2\U0001f1fd",
+ ":flag-my:": "\U0001f1f2\U0001f1fe",
+ ":flag-mz:": "\U0001f1f2\U0001f1ff",
+ ":flag-na:": "\U0001f1f3\U0001f1e6",
+ ":flag-nc:": "\U0001f1f3\U0001f1e8",
+ ":flag-ne:": "\U0001f1f3\U0001f1ea",
+ ":flag-nf:": "\U0001f1f3\U0001f1eb",
+ ":flag-ng:": "\U0001f1f3\U0001f1ec",
+ ":flag-ni:": "\U0001f1f3\U0001f1ee",
+ ":flag-nl:": "\U0001f1f3\U0001f1f1",
+ ":flag-no:": "\U0001f1f3\U0001f1f4",
+ ":flag-np:": "\U0001f1f3\U0001f1f5",
+ ":flag-nr:": "\U0001f1f3\U0001f1f7",
+ ":flag-nu:": "\U0001f1f3\U0001f1fa",
+ ":flag-nz:": "\U0001f1f3\U0001f1ff",
+ ":flag-om:": "\U0001f1f4\U0001f1f2",
+ ":flag-pa:": "\U0001f1f5\U0001f1e6",
+ ":flag-pe:": "\U0001f1f5\U0001f1ea",
+ ":flag-pf:": "\U0001f1f5\U0001f1eb",
+ ":flag-pg:": "\U0001f1f5\U0001f1ec",
+ ":flag-ph:": "\U0001f1f5\U0001f1ed",
+ ":flag-pk:": "\U0001f1f5\U0001f1f0",
+ ":flag-pl:": "\U0001f1f5\U0001f1f1",
+ ":flag-pm:": "\U0001f1f5\U0001f1f2",
+ ":flag-pn:": "\U0001f1f5\U0001f1f3",
+ ":flag-pr:": "\U0001f1f5\U0001f1f7",
+ ":flag-ps:": "\U0001f1f5\U0001f1f8",
+ ":flag-pt:": "\U0001f1f5\U0001f1f9",
+ ":flag-pw:": "\U0001f1f5\U0001f1fc",
+ ":flag-py:": "\U0001f1f5\U0001f1fe",
+ ":flag-qa:": "\U0001f1f6\U0001f1e6",
+ ":flag-re:": "\U0001f1f7\U0001f1ea",
+ ":flag-ro:": "\U0001f1f7\U0001f1f4",
+ ":flag-rs:": "\U0001f1f7\U0001f1f8",
+ ":flag-rw:": "\U0001f1f7\U0001f1fc",
+ ":flag-sa:": "\U0001f1f8\U0001f1e6",
+ ":flag-sb:": "\U0001f1f8\U0001f1e7",
+ ":flag-sc:": "\U0001f1f8\U0001f1e8",
+ ":flag-scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f",
+ ":flag-sd:": "\U0001f1f8\U0001f1e9",
+ ":flag-se:": "\U0001f1f8\U0001f1ea",
+ ":flag-sg:": "\U0001f1f8\U0001f1ec",
+ ":flag-sh:": "\U0001f1f8\U0001f1ed",
+ ":flag-si:": "\U0001f1f8\U0001f1ee",
+ ":flag-sj:": "\U0001f1f8\U0001f1ef",
+ ":flag-sk:": "\U0001f1f8\U0001f1f0",
+ ":flag-sl:": "\U0001f1f8\U0001f1f1",
+ ":flag-sm:": "\U0001f1f8\U0001f1f2",
+ ":flag-sn:": "\U0001f1f8\U0001f1f3",
+ ":flag-so:": "\U0001f1f8\U0001f1f4",
+ ":flag-sr:": "\U0001f1f8\U0001f1f7",
+ ":flag-ss:": "\U0001f1f8\U0001f1f8",
+ ":flag-st:": "\U0001f1f8\U0001f1f9",
+ ":flag-sv:": "\U0001f1f8\U0001f1fb",
+ ":flag-sx:": "\U0001f1f8\U0001f1fd",
+ ":flag-sy:": "\U0001f1f8\U0001f1fe",
+ ":flag-sz:": "\U0001f1f8\U0001f1ff",
+ ":flag-ta:": "\U0001f1f9\U0001f1e6",
+ ":flag-tc:": "\U0001f1f9\U0001f1e8",
+ ":flag-td:": "\U0001f1f9\U0001f1e9",
+ ":flag-tf:": "\U0001f1f9\U0001f1eb",
+ ":flag-tg:": "\U0001f1f9\U0001f1ec",
+ ":flag-th:": "\U0001f1f9\U0001f1ed",
+ ":flag-tj:": "\U0001f1f9\U0001f1ef",
+ ":flag-tk:": "\U0001f1f9\U0001f1f0",
+ ":flag-tl:": "\U0001f1f9\U0001f1f1",
+ ":flag-tm:": "\U0001f1f9\U0001f1f2",
+ ":flag-tn:": "\U0001f1f9\U0001f1f3",
+ ":flag-to:": "\U0001f1f9\U0001f1f4",
+ ":flag-tr:": "\U0001f1f9\U0001f1f7",
+ ":flag-tt:": "\U0001f1f9\U0001f1f9",
+ ":flag-tv:": "\U0001f1f9\U0001f1fb",
+ ":flag-tw:": "\U0001f1f9\U0001f1fc",
+ ":flag-tz:": "\U0001f1f9\U0001f1ff",
+ ":flag-ua:": "\U0001f1fa\U0001f1e6",
+ ":flag-ug:": "\U0001f1fa\U0001f1ec",
+ ":flag-um:": "\U0001f1fa\U0001f1f2",
+ ":flag-un:": "\U0001f1fa\U0001f1f3",
+ ":flag-uy:": "\U0001f1fa\U0001f1fe",
+ ":flag-uz:": "\U0001f1fa\U0001f1ff",
+ ":flag-va:": "\U0001f1fb\U0001f1e6",
+ ":flag-vc:": "\U0001f1fb\U0001f1e8",
+ ":flag-ve:": "\U0001f1fb\U0001f1ea",
+ ":flag-vg:": "\U0001f1fb\U0001f1ec",
+ ":flag-vi:": "\U0001f1fb\U0001f1ee",
+ ":flag-vn:": "\U0001f1fb\U0001f1f3",
+ ":flag-vu:": "\U0001f1fb\U0001f1fa",
+ ":flag-wales:": "\U0001f3f4\U000e0067\U000e0062\U000e0077\U000e006c\U000e0073\U000e007f",
+ ":flag-wf:": "\U0001f1fc\U0001f1eb",
+ ":flag-ws:": "\U0001f1fc\U0001f1f8",
+ ":flag-xk:": "\U0001f1fd\U0001f1f0",
+ ":flag-ye:": "\U0001f1fe\U0001f1ea",
+ ":flag-yt:": "\U0001f1fe\U0001f1f9",
+ ":flag-za:": "\U0001f1ff\U0001f1e6",
+ ":flag-zm:": "\U0001f1ff\U0001f1f2",
+ ":flag-zw:": "\U0001f1ff\U0001f1fc",
+ ":flag_Afghanistan:": "\U0001f1e6\U0001f1eb",
+ ":flag_Albania:": "\U0001f1e6\U0001f1f1",
+ ":flag_Algeria:": "\U0001f1e9\U0001f1ff",
+ ":flag_American_Samoa:": "\U0001f1e6\U0001f1f8",
+ ":flag_Andorra:": "\U0001f1e6\U0001f1e9",
+ ":flag_Angola:": "\U0001f1e6\U0001f1f4",
+ ":flag_Anguilla:": "\U0001f1e6\U0001f1ee",
+ ":flag_Antarctica:": "\U0001f1e6\U0001f1f6",
+ ":flag_Antigua_&_Barbuda:": "\U0001f1e6\U0001f1ec",
+ ":flag_Argentina:": "\U0001f1e6\U0001f1f7",
+ ":flag_Armenia:": "\U0001f1e6\U0001f1f2",
+ ":flag_Aruba:": "\U0001f1e6\U0001f1fc",
+ ":flag_Ascension_Island:": "\U0001f1e6\U0001f1e8",
+ ":flag_Australia:": "\U0001f1e6\U0001f1fa",
+ ":flag_Austria:": "\U0001f1e6\U0001f1f9",
+ ":flag_Azerbaijan:": "\U0001f1e6\U0001f1ff",
+ ":flag_Bahamas:": "\U0001f1e7\U0001f1f8",
+ ":flag_Bahrain:": "\U0001f1e7\U0001f1ed",
+ ":flag_Bangladesh:": "\U0001f1e7\U0001f1e9",
+ ":flag_Barbados:": "\U0001f1e7\U0001f1e7",
+ ":flag_Belarus:": "\U0001f1e7\U0001f1fe",
+ ":flag_Belgium:": "\U0001f1e7\U0001f1ea",
+ ":flag_Belize:": "\U0001f1e7\U0001f1ff",
+ ":flag_Benin:": "\U0001f1e7\U0001f1ef",
+ ":flag_Bermuda:": "\U0001f1e7\U0001f1f2",
+ ":flag_Bhutan:": "\U0001f1e7\U0001f1f9",
+ ":flag_Bolivia:": "\U0001f1e7\U0001f1f4",
+ ":flag_Bosnia_&_Herzegovina:": "\U0001f1e7\U0001f1e6",
+ ":flag_Botswana:": "\U0001f1e7\U0001f1fc",
+ ":flag_Bouvet_Island:": "\U0001f1e7\U0001f1fb",
+ ":flag_Brazil:": "\U0001f1e7\U0001f1f7",
+ ":flag_British_Indian_Ocean_Territory:": "\U0001f1ee\U0001f1f4",
+ ":flag_British_Virgin_Islands:": "\U0001f1fb\U0001f1ec",
+ ":flag_Brunei:": "\U0001f1e7\U0001f1f3",
+ ":flag_Bulgaria:": "\U0001f1e7\U0001f1ec",
+ ":flag_Burkina_Faso:": "\U0001f1e7\U0001f1eb",
+ ":flag_Burundi:": "\U0001f1e7\U0001f1ee",
+ ":flag_Cambodia:": "\U0001f1f0\U0001f1ed",
+ ":flag_Cameroon:": "\U0001f1e8\U0001f1f2",
+ ":flag_Canada:": "\U0001f1e8\U0001f1e6",
+ ":flag_Canary_Islands:": "\U0001f1ee\U0001f1e8",
+ ":flag_Cape_Verde:": "\U0001f1e8\U0001f1fb",
+ ":flag_Caribbean_Netherlands:": "\U0001f1e7\U0001f1f6",
+ ":flag_Cayman_Islands:": "\U0001f1f0\U0001f1fe",
+ ":flag_Central_African_Republic:": "\U0001f1e8\U0001f1eb",
+ ":flag_Ceuta_&_Melilla:": "\U0001f1ea\U0001f1e6",
+ ":flag_Chad:": "\U0001f1f9\U0001f1e9",
+ ":flag_Chile:": "\U0001f1e8\U0001f1f1",
+ ":flag_China:": "\U0001f1e8\U0001f1f3",
+ ":flag_Christmas_Island:": "\U0001f1e8\U0001f1fd",
+ ":flag_Clipperton_Island:": "\U0001f1e8\U0001f1f5",
+ ":flag_Cocos_(Keeling)_Islands:": "\U0001f1e8\U0001f1e8",
+ ":flag_Colombia:": "\U0001f1e8\U0001f1f4",
+ ":flag_Comoros:": "\U0001f1f0\U0001f1f2",
+ ":flag_Congo_-_Brazzaville:": "\U0001f1e8\U0001f1ec",
+ ":flag_Congo_-_Kinshasa:": "\U0001f1e8\U0001f1e9",
+ ":flag_Cook_Islands:": "\U0001f1e8\U0001f1f0",
+ ":flag_Costa_Rica:": "\U0001f1e8\U0001f1f7",
+ ":flag_Croatia:": "\U0001f1ed\U0001f1f7",
+ ":flag_Cuba:": "\U0001f1e8\U0001f1fa",
+ ":flag_Curaçao:": "\U0001f1e8\U0001f1fc",
+ ":flag_Cyprus:": "\U0001f1e8\U0001f1fe",
+ ":flag_Czechia:": "\U0001f1e8\U0001f1ff",
+ ":flag_Côte_d’Ivoire:": "\U0001f1e8\U0001f1ee",
+ ":flag_Denmark:": "\U0001f1e9\U0001f1f0",
+ ":flag_Diego_Garcia:": "\U0001f1e9\U0001f1ec",
+ ":flag_Djibouti:": "\U0001f1e9\U0001f1ef",
+ ":flag_Dominica:": "\U0001f1e9\U0001f1f2",
+ ":flag_Dominican_Republic:": "\U0001f1e9\U0001f1f4",
+ ":flag_Ecuador:": "\U0001f1ea\U0001f1e8",
+ ":flag_Egypt:": "\U0001f1ea\U0001f1ec",
+ ":flag_El_Salvador:": "\U0001f1f8\U0001f1fb",
+ ":flag_England:": "\U0001f3f4\U000e0067\U000e0062\U000e0065\U000e006e\U000e0067\U000e007f",
+ ":flag_Equatorial_Guinea:": "\U0001f1ec\U0001f1f6",
+ ":flag_Eritrea:": "\U0001f1ea\U0001f1f7",
+ ":flag_Estonia:": "\U0001f1ea\U0001f1ea",
+ ":flag_Eswatini:": "\U0001f1f8\U0001f1ff",
+ ":flag_Ethiopia:": "\U0001f1ea\U0001f1f9",
+ ":flag_European_Union:": "\U0001f1ea\U0001f1fa",
+ ":flag_Falkland_Islands:": "\U0001f1eb\U0001f1f0",
+ ":flag_Faroe_Islands:": "\U0001f1eb\U0001f1f4",
+ ":flag_Fiji:": "\U0001f1eb\U0001f1ef",
+ ":flag_Finland:": "\U0001f1eb\U0001f1ee",
+ ":flag_France:": "\U0001f1eb\U0001f1f7",
+ ":flag_French_Guiana:": "\U0001f1ec\U0001f1eb",
+ ":flag_French_Polynesia:": "\U0001f1f5\U0001f1eb",
+ ":flag_French_Southern_Territories:": "\U0001f1f9\U0001f1eb",
+ ":flag_Gabon:": "\U0001f1ec\U0001f1e6",
+ ":flag_Gambia:": "\U0001f1ec\U0001f1f2",
+ ":flag_Georgia:": "\U0001f1ec\U0001f1ea",
+ ":flag_Germany:": "\U0001f1e9\U0001f1ea",
+ ":flag_Ghana:": "\U0001f1ec\U0001f1ed",
+ ":flag_Gibraltar:": "\U0001f1ec\U0001f1ee",
+ ":flag_Greece:": "\U0001f1ec\U0001f1f7",
+ ":flag_Greenland:": "\U0001f1ec\U0001f1f1",
+ ":flag_Grenada:": "\U0001f1ec\U0001f1e9",
+ ":flag_Guadeloupe:": "\U0001f1ec\U0001f1f5",
+ ":flag_Guam:": "\U0001f1ec\U0001f1fa",
+ ":flag_Guatemala:": "\U0001f1ec\U0001f1f9",
+ ":flag_Guernsey:": "\U0001f1ec\U0001f1ec",
+ ":flag_Guinea:": "\U0001f1ec\U0001f1f3",
+ ":flag_Guinea-Bissau:": "\U0001f1ec\U0001f1fc",
+ ":flag_Guyana:": "\U0001f1ec\U0001f1fe",
+ ":flag_Haiti:": "\U0001f1ed\U0001f1f9",
+ ":flag_Heard_&_McDonald_Islands:": "\U0001f1ed\U0001f1f2",
+ ":flag_Honduras:": "\U0001f1ed\U0001f1f3",
+ ":flag_Hong_Kong_SAR_China:": "\U0001f1ed\U0001f1f0",
+ ":flag_Hungary:": "\U0001f1ed\U0001f1fa",
+ ":flag_Iceland:": "\U0001f1ee\U0001f1f8",
+ ":flag_India:": "\U0001f1ee\U0001f1f3",
+ ":flag_Indonesia:": "\U0001f1ee\U0001f1e9",
+ ":flag_Iran:": "\U0001f1ee\U0001f1f7",
+ ":flag_Iraq:": "\U0001f1ee\U0001f1f6",
+ ":flag_Ireland:": "\U0001f1ee\U0001f1ea",
+ ":flag_Isle_of_Man:": "\U0001f1ee\U0001f1f2",
+ ":flag_Israel:": "\U0001f1ee\U0001f1f1",
+ ":flag_Italy:": "\U0001f1ee\U0001f1f9",
+ ":flag_Jamaica:": "\U0001f1ef\U0001f1f2",
+ ":flag_Japan:": "\U0001f1ef\U0001f1f5",
+ ":flag_Jersey:": "\U0001f1ef\U0001f1ea",
+ ":flag_Jordan:": "\U0001f1ef\U0001f1f4",
+ ":flag_Kazakhstan:": "\U0001f1f0\U0001f1ff",
+ ":flag_Kenya:": "\U0001f1f0\U0001f1ea",
+ ":flag_Kiribati:": "\U0001f1f0\U0001f1ee",
+ ":flag_Kosovo:": "\U0001f1fd\U0001f1f0",
+ ":flag_Kuwait:": "\U0001f1f0\U0001f1fc",
+ ":flag_Kyrgyzstan:": "\U0001f1f0\U0001f1ec",
+ ":flag_Laos:": "\U0001f1f1\U0001f1e6",
+ ":flag_Latvia:": "\U0001f1f1\U0001f1fb",
+ ":flag_Lebanon:": "\U0001f1f1\U0001f1e7",
+ ":flag_Lesotho:": "\U0001f1f1\U0001f1f8",
+ ":flag_Liberia:": "\U0001f1f1\U0001f1f7",
+ ":flag_Libya:": "\U0001f1f1\U0001f1fe",
+ ":flag_Liechtenstein:": "\U0001f1f1\U0001f1ee",
+ ":flag_Lithuania:": "\U0001f1f1\U0001f1f9",
+ ":flag_Luxembourg:": "\U0001f1f1\U0001f1fa",
+ ":flag_Macao_SAR_China:": "\U0001f1f2\U0001f1f4",
+ ":flag_Madagascar:": "\U0001f1f2\U0001f1ec",
+ ":flag_Malawi:": "\U0001f1f2\U0001f1fc",
+ ":flag_Malaysia:": "\U0001f1f2\U0001f1fe",
+ ":flag_Maldives:": "\U0001f1f2\U0001f1fb",
+ ":flag_Mali:": "\U0001f1f2\U0001f1f1",
+ ":flag_Malta:": "\U0001f1f2\U0001f1f9",
+ ":flag_Marshall_Islands:": "\U0001f1f2\U0001f1ed",
+ ":flag_Martinique:": "\U0001f1f2\U0001f1f6",
+ ":flag_Mauritania:": "\U0001f1f2\U0001f1f7",
+ ":flag_Mauritius:": "\U0001f1f2\U0001f1fa",
+ ":flag_Mayotte:": "\U0001f1fe\U0001f1f9",
+ ":flag_Mexico:": "\U0001f1f2\U0001f1fd",
+ ":flag_Micronesia:": "\U0001f1eb\U0001f1f2",
+ ":flag_Moldova:": "\U0001f1f2\U0001f1e9",
+ ":flag_Monaco:": "\U0001f1f2\U0001f1e8",
+ ":flag_Mongolia:": "\U0001f1f2\U0001f1f3",
+ ":flag_Montenegro:": "\U0001f1f2\U0001f1ea",
+ ":flag_Montserrat:": "\U0001f1f2\U0001f1f8",
+ ":flag_Morocco:": "\U0001f1f2\U0001f1e6",
+ ":flag_Mozambique:": "\U0001f1f2\U0001f1ff",
+ ":flag_Myanmar_(Burma):": "\U0001f1f2\U0001f1f2",
+ ":flag_Namibia:": "\U0001f1f3\U0001f1e6",
+ ":flag_Nauru:": "\U0001f1f3\U0001f1f7",
+ ":flag_Nepal:": "\U0001f1f3\U0001f1f5",
+ ":flag_Netherlands:": "\U0001f1f3\U0001f1f1",
+ ":flag_New_Caledonia:": "\U0001f1f3\U0001f1e8",
+ ":flag_New_Zealand:": "\U0001f1f3\U0001f1ff",
+ ":flag_Nicaragua:": "\U0001f1f3\U0001f1ee",
+ ":flag_Niger:": "\U0001f1f3\U0001f1ea",
+ ":flag_Nigeria:": "\U0001f1f3\U0001f1ec",
+ ":flag_Niue:": "\U0001f1f3\U0001f1fa",
+ ":flag_Norfolk_Island:": "\U0001f1f3\U0001f1eb",
+ ":flag_North_Korea:": "\U0001f1f0\U0001f1f5",
+ ":flag_North_Macedonia:": "\U0001f1f2\U0001f1f0",
+ ":flag_Northern_Mariana_Islands:": "\U0001f1f2\U0001f1f5",
+ ":flag_Norway:": "\U0001f1f3\U0001f1f4",
+ ":flag_Oman:": "\U0001f1f4\U0001f1f2",
+ ":flag_Pakistan:": "\U0001f1f5\U0001f1f0",
+ ":flag_Palau:": "\U0001f1f5\U0001f1fc",
+ ":flag_Palestinian_Territories:": "\U0001f1f5\U0001f1f8",
+ ":flag_Panama:": "\U0001f1f5\U0001f1e6",
+ ":flag_Papua_New_Guinea:": "\U0001f1f5\U0001f1ec",
+ ":flag_Paraguay:": "\U0001f1f5\U0001f1fe",
+ ":flag_Peru:": "\U0001f1f5\U0001f1ea",
+ ":flag_Philippines:": "\U0001f1f5\U0001f1ed",
+ ":flag_Pitcairn_Islands:": "\U0001f1f5\U0001f1f3",
+ ":flag_Poland:": "\U0001f1f5\U0001f1f1",
+ ":flag_Portugal:": "\U0001f1f5\U0001f1f9",
+ ":flag_Puerto_Rico:": "\U0001f1f5\U0001f1f7",
+ ":flag_Qatar:": "\U0001f1f6\U0001f1e6",
+ ":flag_Romania:": "\U0001f1f7\U0001f1f4",
+ ":flag_Russia:": "\U0001f1f7\U0001f1fa",
+ ":flag_Rwanda:": "\U0001f1f7\U0001f1fc",
+ ":flag_Réunion:": "\U0001f1f7\U0001f1ea",
+ ":flag_Samoa:": "\U0001f1fc\U0001f1f8",
+ ":flag_San_Marino:": "\U0001f1f8\U0001f1f2",
+ ":flag_Saudi_Arabia:": "\U0001f1f8\U0001f1e6",
+ ":flag_Scotland:": "\U0001f3f4\U000e0067\U000e0062\U000e0073\U000e0063\U000e0074\U000e007f",
+ ":flag_Senegal:": "\U0001f1f8\U0001f1f3",
+ ":flag_Serbia:": "\U0001f1f7\U0001f1f8",
+ ":flag_Seychelles:": "\U0001f1f8\U0001f1e8",
+ ":flag_Sierra_Leone:": "\U0001f1f8\U0001f1f1",
+ ":flag_Singapore:": "\U0001f1f8\U0001f1ec",
+ ":flag_Sint_Maarten:": "\U0001f1f8\U0001f1fd",
+ ":flag_Slovakia:": "\U0001f1f8\U0001f1f0",
+ ":flag_Slovenia:": "\U0001f1f8\U0001f1ee",
+ ":flag_Solomon_Islands:": "\U0001f1f8\U0001f1e7",
+ ":flag_Somalia:": "\U0001f1f8\U0001f1f4",
+ ":flag_South_Africa:": "\U0001f1ff\U0001f1e6",
":flag_South_Georgia_&_South_Sandwich_Islands:": "\U0001f1ec\U0001f1f8",
":flag_South_Korea:": "\U0001f1f0\U0001f1f7",
":flag_South_Sudan:": "\U0001f1f8\U0001f1f8",
@@ -1973,6 +1985,7 @@ func emojiCode() map[string]string {
":hammer_and_pick:": "\u2692\ufe0f",
":hammer_and_wrench:": "\U0001f6e0\ufe0f",
":hammer_pick:": "\u2692",
+ ":hamsa:": "\U0001faac",
":hamster:": "\U0001f439",
":hand:": "\u270b",
":hand_over_mouth:": "\U0001f92d",
@@ -1982,39 +1995,42 @@ func emojiCode() map[string]string {
":hand_splayed_tone4:": "\U0001f590\U0001f3fe",
":hand_splayed_tone5:": "\U0001f590\U0001f3ff",
":hand_with_fingers_splayed:": "\U0001f590",
- ":handbag:": "\U0001f45c",
- ":handball:": "\U0001f93e",
- ":handball_person:": "\U0001f93e",
- ":handshake:": "\U0001f91d",
- ":hankey:": "\U0001f4a9",
- ":hash:": "#\ufe0f\u20e3",
- ":hatched_chick:": "\U0001f425",
- ":hatching_chick:": "\U0001f423",
- ":head_bandage:": "\U0001f915",
- ":headphone:": "\U0001f3a7",
- ":headphones:": "\U0001f3a7",
- ":headstone:": "\U0001faa6",
- ":health_worker:": "\U0001f9d1\u200d\u2695\ufe0f",
- ":hear-no-evil_monkey:": "\U0001f649",
- ":hear_no_evil:": "\U0001f649",
- ":heard_mcdonald_islands:": "\U0001f1ed\U0001f1f2",
- ":heart:": "\u2764\ufe0f",
- ":heart_decoration:": "\U0001f49f",
- ":heart_exclamation:": "\u2763",
- ":heart_eyes:": "\U0001f60d",
- ":heart_eyes_cat:": "\U0001f63b",
- ":heart_on_fire:": "\u2764\ufe0f\u200d\U0001f525",
- ":heart_suit:": "\u2665",
- ":heart_with_arrow:": "\U0001f498",
- ":heart_with_ribbon:": "\U0001f49d",
- ":heartbeat:": "\U0001f493",
- ":heartpulse:": "\U0001f497",
- ":hearts:": "\u2665\ufe0f",
- ":heavy_check_mark:": "\u2714\ufe0f",
- ":heavy_division_sign:": "\u2797",
- ":heavy_dollar_sign:": "\U0001f4b2",
- ":heavy_exclamation_mark:": "\u2757",
- ":heavy_heart_exclamation:": "\u2763\ufe0f",
+ ":hand_with_index_finger_and_thumb_crossed:": "\U0001faf0",
+ ":handbag:": "\U0001f45c",
+ ":handball:": "\U0001f93e",
+ ":handball_person:": "\U0001f93e",
+ ":handshake:": "\U0001f91d",
+ ":hankey:": "\U0001f4a9",
+ ":hash:": "#\ufe0f\u20e3",
+ ":hatched_chick:": "\U0001f425",
+ ":hatching_chick:": "\U0001f423",
+ ":head_bandage:": "\U0001f915",
+ ":headphone:": "\U0001f3a7",
+ ":headphones:": "\U0001f3a7",
+ ":headstone:": "\U0001faa6",
+ ":health_worker:": "\U0001f9d1\u200d\u2695\ufe0f",
+ ":hear-no-evil_monkey:": "\U0001f649",
+ ":hear_no_evil:": "\U0001f649",
+ ":heard_mcdonald_islands:": "\U0001f1ed\U0001f1f2",
+ ":heart:": "\u2764\ufe0f",
+ ":heart_decoration:": "\U0001f49f",
+ ":heart_exclamation:": "\u2763",
+ ":heart_eyes:": "\U0001f60d",
+ ":heart_eyes_cat:": "\U0001f63b",
+ ":heart_hands:": "\U0001faf6",
+ ":heart_on_fire:": "\u2764\ufe0f\u200d\U0001f525",
+ ":heart_suit:": "\u2665",
+ ":heart_with_arrow:": "\U0001f498",
+ ":heart_with_ribbon:": "\U0001f49d",
+ ":heartbeat:": "\U0001f493",
+ ":heartpulse:": "\U0001f497",
+ ":hearts:": "\u2665\ufe0f",
+ ":heavy_check_mark:": "\u2714\ufe0f",
+ ":heavy_division_sign:": "\u2797",
+ ":heavy_dollar_sign:": "\U0001f4b2",
+ ":heavy_equals_sign:": "\U0001f7f0",
+ ":heavy_exclamation_mark:": "\u2757",
+ ":heavy_heart_exclamation:": "\u2763\ufe0f",
":heavy_heart_exclamation_mark_ornament:": "\u2763\ufe0f",
":heavy_minus_sign:": "\u2796",
":heavy_multiplication_x:": "\u2716\ufe0f",
@@ -2088,10 +2104,12 @@ func emojiCode() map[string]string {
":icecream:": "\U0001f366",
":iceland:": "\U0001f1ee\U0001f1f8",
":id:": "\U0001f194",
+ ":identification_card:": "\U0001faaa",
":ideograph_advantage:": "\U0001f250",
":imp:": "\U0001f47f",
":inbox_tray:": "\U0001f4e5",
":incoming_envelope:": "\U0001f4e8",
+ ":index_pointing_at_the_viewer:": "\U0001faf5",
":index_pointing_up:": "\u261d",
":india:": "\U0001f1ee\U0001f1f3",
":indonesia:": "\U0001f1ee\U0001f1e9",
@@ -2122,6 +2140,7 @@ func emojiCode() map[string]string {
":japanese_castle:": "\U0001f3ef",
":japanese_goblin:": "\U0001f47a",
":japanese_ogre:": "\U0001f479",
+ ":jar:": "\U0001fad9",
":jeans:": "\U0001f456",
":jersey:": "\U0001f1ef\U0001f1ea",
":jigsaw:": "\U0001f9e9",
@@ -2184,7 +2203,6 @@ func emojiCode() map[string]string {
":kneeling_woman:": "\U0001f9ce\u200d\u2640\ufe0f",
":knife:": "\U0001f52a",
":knife_fork_plate:": "\U0001f37d\ufe0f",
- ":knocked-out_face:": "\U0001f635",
":knot:": "\U0001faa2",
":koala:": "\U0001f428",
":koko:": "\U0001f201",
@@ -2242,6 +2260,7 @@ func emojiCode() map[string]string {
":left_right_arrow:": "\u2194\ufe0f",
":left_speech_bubble:": "\U0001f5e8\ufe0f",
":leftwards_arrow_with_hook:": "\u21a9\ufe0f",
+ ":leftwards_hand:": "\U0001faf2",
":leg:": "\U0001f9b5",
":lemon:": "\U0001f34b",
":leo:": "\u264c",
@@ -2276,6 +2295,7 @@ func emojiCode() map[string]string {
":long_drum:": "\U0001fa98",
":loop:": "\u27bf",
":lotion_bottle:": "\U0001f9f4",
+ ":lotus:": "\U0001fab7",
":lotus_position:": "\U0001f9d8",
":lotus_position_man:": "\U0001f9d8\u200d\u2642\ufe0f",
":lotus_position_woman:": "\U0001f9d8\u200d\u2640\ufe0f",
@@ -2291,6 +2311,7 @@ func emojiCode() map[string]string {
":love_you_gesture_tone3:": "\U0001f91f\U0001f3fd",
":love_you_gesture_tone4:": "\U0001f91f\U0001f3fe",
":love_you_gesture_tone5:": "\U0001f91f\U0001f3ff",
+ ":low_battery:": "\U0001faab",
":low_brightness:": "\U0001f505",
":lower_left_ballpoint_pen:": "\U0001f58a\ufe0f",
":lower_left_crayon:": "\U0001f58d\ufe0f",
@@ -2399,7 +2420,6 @@ func emojiCode() map[string]string {
":man-tipping-hand:": "\U0001f481\u200d\u2642\ufe0f",
":man-walking:": "\U0001f6b6\u200d\u2642\ufe0f",
":man-wearing-turban:": "\U0001f473\u200d\u2642\ufe0f",
- ":man-with-bunny-ears-partying:": "\U0001f46f\u200d\u2642\ufe0f",
":man-woman-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466",
":man-woman-boy-boy:": "\U0001f468\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
":man-woman-girl:": "\U0001f468\u200d\U0001f469\u200d\U0001f467",
@@ -2765,6 +2785,7 @@ func emojiCode() map[string]string {
":man_wearing_turban_tone4:": "\U0001f473\U0001f3fe\u200d\u2642\ufe0f",
":man_wearing_turban_tone5:": "\U0001f473\U0001f3ff\u200d\u2642\ufe0f",
":man_white_hair:": "\U0001f468\u200d\U0001f9b3",
+ ":man_with_beard:": "\U0001f9d4\u200d\u2642\ufe0f",
":man_with_chinese_cap:": "\U0001f472",
":man_with_chinese_cap_tone1:": "\U0001f472\U0001f3fb",
":man_with_chinese_cap_tone2:": "\U0001f472\U0001f3fc",
@@ -2809,7 +2830,9 @@ func emojiCode() map[string]string {
":mega:": "\U0001f4e3",
":megaphone:": "\U0001f4e3",
":melon:": "\U0001f348",
+ ":melting_face:": "\U0001fae0",
":memo:": "\U0001f4dd",
+ ":men-with-bunny-ears-partying:": "\U0001f46f\u200d\u2642\ufe0f",
":men_holding_hands:": "\U0001f46c",
":men_with_bunny_ears:": "\U0001f46f\u200d\u2642\ufe0f",
":men_with_bunny_ears_partying:": "\U0001f46f\u200d\u2642\ufe0f",
@@ -2865,6 +2888,7 @@ func emojiCode() map[string]string {
":minidisc:": "\U0001f4bd",
":minus:": "\u2796",
":mirror:": "\U0001fa9e",
+ ":mirror_ball:": "\U0001faa9",
":moai:": "\U0001f5ff",
":mobile_phone:": "\U0001f4f1",
":mobile_phone_off:": "\U0001f4f4",
@@ -2955,6 +2979,7 @@ func emojiCode() map[string]string {
":nepal:": "\U0001f1f3\U0001f1f5",
":nerd:": "\U0001f913",
":nerd_face:": "\U0001f913",
+ ":nest_with_eggs:": "\U0001faba",
":nesting_dolls:": "\U0001fa86",
":netherlands:": "\U0001f1f3\U0001f1f1",
":neutral_face:": "\U0001f610",
@@ -3103,7 +3128,9 @@ func emojiCode() map[string]string {
":pakistan:": "\U0001f1f5\U0001f1f0",
":palau:": "\U0001f1f5\U0001f1fc",
":palestinian_territories:": "\U0001f1f5\U0001f1f8",
+ ":palm_down_hand:": "\U0001faf3",
":palm_tree:": "\U0001f334",
+ ":palm_up_hand:": "\U0001faf4",
":palms_up_together:": "\U0001f932",
":palms_up_together_tone1:": "\U0001f932\U0001f3fb",
":palms_up_together_tone2:": "\U0001f932\U0001f3fc",
@@ -3355,6 +3382,7 @@ func emojiCode() map[string]string {
":person_white_hair:": "\U0001f9d1\u200d\U0001f9b3",
":person_with_ball:": "\u26f9\ufe0f\u200d\u2642\ufe0f",
":person_with_blond_hair:": "\U0001f471\u200d\u2642\ufe0f",
+ ":person_with_crown:": "\U0001fac5",
":person_with_headscarf:": "\U0001f9d5",
":person_with_pouting_face:": "\U0001f64e\u200d\u2640\ufe0f",
":person_with_probing_cane:": "\U0001f9d1\u200d\U0001f9af",
@@ -3393,6 +3421,7 @@ func emojiCode() map[string]string {
":play_button:": "\u25b6",
":play_or_pause_button:": "\u23ef",
":play_pause:": "\u23ef",
+ ":playground_slide:": "\U0001f6dd",
":pleading_face:": "\U0001f97a",
":plunger:": "\U0001faa0",
":plus:": "\u2795",
@@ -3454,6 +3483,7 @@ func emojiCode() map[string]string {
":poultry_leg:": "\U0001f357",
":pound:": "\U0001f4b7",
":pound_banknote:": "\U0001f4b7",
+ ":pouring_liquid:": "\U0001fad7",
":pout:": "\U0001f621",
":pouting_cat:": "\U0001f63e",
":pouting_face:": "\U0001f621",
@@ -3466,6 +3496,8 @@ func emojiCode() map[string]string {
":pray_tone4:": "\U0001f64f\U0001f3fe",
":pray_tone5:": "\U0001f64f\U0001f3ff",
":prayer_beads:": "\U0001f4ff",
+ ":pregnant_man:": "\U0001fac3",
+ ":pregnant_person:": "\U0001fac4",
":pregnant_woman:": "\U0001f930",
":pregnant_woman_tone1:": "\U0001f930\U0001f3fb",
":pregnant_woman_tone2:": "\U0001f930\U0001f3fc",
@@ -3608,7 +3640,9 @@ func emojiCode() map[string]string {
":right_facing_fist_tone3:": "\U0001f91c\U0001f3fd",
":right_facing_fist_tone4:": "\U0001f91c\U0001f3fe",
":right_facing_fist_tone5:": "\U0001f91c\U0001f3ff",
+ ":rightwards_hand:": "\U0001faf1",
":ring:": "\U0001f48d",
+ ":ring_buoy:": "\U0001f6df",
":ringed_planet:": "\U0001fa90",
":roasted_sweet_potato:": "\U0001f360",
":robot:": "\U0001f916",
@@ -3652,6 +3686,7 @@ func emojiCode() map[string]string {
":sake:": "\U0001f376",
":salad:": "\U0001f957",
":salt:": "\U0001f9c2",
+ ":saluting_face:": "\U0001fae1",
":samoa:": "\U0001f1fc\U0001f1f8",
":san_marino:": "\U0001f1f8\U0001f1f2",
":sandal:": "\U0001f461",
@@ -3792,6 +3827,7 @@ func emojiCode() map[string]string {
":smiling_face_with_heart-eyes:": "\U0001f60d",
":smiling_face_with_hearts:": "\U0001f970",
":smiling_face_with_horns:": "\U0001f608",
+ ":smiling_face_with_open_hands:": "\U0001f917",
":smiling_face_with_smiling_eyes:": "\U0001f60a",
":smiling_face_with_sunglasses:": "\U0001f60e",
":smiling_face_with_tear:": "\U0001f972",
@@ -4058,6 +4094,7 @@ func emojiCode() map[string]string {
":trinidad_tobago:": "\U0001f1f9\U0001f1f9",
":tristan_da_cunha:": "\U0001f1f9\U0001f1e6",
":triumph:": "\U0001f624",
+ ":troll:": "\U0001f9cc",
":trolleybus:": "\U0001f68e",
":trophy:": "\U0001f3c6",
":tropical_drink:": "\U0001f379",
@@ -4205,6 +4242,7 @@ func emojiCode() map[string]string {
":western_sahara:": "\U0001f1ea\U0001f1ed",
":whale:": "\U0001f433",
":whale2:": "\U0001f40b",
+ ":wheel:": "\U0001f6de",
":wheel_of_dharma:": "\u2638\ufe0f",
":wheelchair:": "\u267f",
":wheelchair_symbol:": "\u267f",
@@ -4277,7 +4315,6 @@ func emojiCode() map[string]string {
":woman-tipping-hand:": "\U0001f481\u200d\u2640\ufe0f",
":woman-walking:": "\U0001f6b6\u200d\u2640\ufe0f",
":woman-wearing-turban:": "\U0001f473\u200d\u2640\ufe0f",
- ":woman-with-bunny-ears-partying:": "\U0001f46f\u200d\u2640\ufe0f",
":woman-woman-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466",
":woman-woman-boy-boy:": "\U0001f469\u200d\U0001f469\u200d\U0001f466\u200d\U0001f466",
":woman-woman-girl:": "\U0001f469\u200d\U0001f469\u200d\U0001f467",
@@ -4627,6 +4664,7 @@ func emojiCode() map[string]string {
":woman_wearing_turban_tone4:": "\U0001f473\U0001f3fe\u200d\u2640\ufe0f",
":woman_wearing_turban_tone5:": "\U0001f473\U0001f3ff\u200d\u2640\ufe0f",
":woman_white_hair:": "\U0001f469\u200d\U0001f9b3",
+ ":woman_with_beard:": "\U0001f9d4\u200d\u2640\ufe0f",
":woman_with_headscarf:": "\U0001f9d5",
":woman_with_headscarf_tone1:": "\U0001f9d5\U0001f3fb",
":woman_with_headscarf_tone2:": "\U0001f9d5\U0001f3fc",
@@ -4645,6 +4683,7 @@ func emojiCode() map[string]string {
":woman’s_clothes:": "\U0001f45a",
":woman’s_hat:": "\U0001f452",
":woman’s_sandal:": "\U0001f461",
+ ":women-with-bunny-ears-partying:": "\U0001f46f\u200d\u2640\ufe0f",
":women_holding_hands:": "\U0001f46d",
":women_with_bunny_ears:": "\U0001f46f\u200d\u2640\ufe0f",
":women_with_bunny_ears_partying:": "\U0001f46f\u200d\u2640\ufe0f",
@@ -4668,6 +4707,7 @@ func emojiCode() map[string]string {
":writing_hand_tone4:": "\u270d\U0001f3fe",
":writing_hand_tone5:": "\u270d\U0001f3ff",
":x:": "\u274c",
+ ":x-ray:": "\U0001fa7b",
":yarn:": "\U0001f9f6",
":yawning_face:": "\U0001f971",
":yellow_circle:": "\U0001f7e1",
@@ -5819,9 +5859,9 @@ func emojiRevCode() map[string][]string {
"\U0001f469\u200d\u2695\ufe0f": {":female-doctor:", ":woman_health_worker:"},
"\U0001f469\u200d\u2696\ufe0f": {":woman_judge:", ":female-judge:"},
"\U0001f469\u200d\u2708\ufe0f": {":woman_pilot:", ":female-pilot:"},
- "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468": {":woman-heart-man:", ":couple_with_heart:", ":couple_with_heart_woman_man:"},
+ "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f468": {":woman-heart-man:", ":couple_with_heart_woman_man:"},
"\U0001f469\u200d\u2764\ufe0f\u200d\U0001f469": {":couple_ww:", ":woman-heart-woman:", ":couple_with_heart_woman_woman:"},
- "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468": {":couplekiss:", ":kiss_woman_man:", ":woman-kiss-man:", ":couplekiss_man_woman:"},
+ "\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f468": {":kiss_woman_man:", ":woman-kiss-man:", ":couplekiss_man_woman:"},
"\U0001f469\u200d\u2764\ufe0f\u200d\U0001f48b\u200d\U0001f469": {":kiss_ww:", ":kiss_woman_woman:", ":woman-kiss-woman:", ":couplekiss_woman_woman:"},
"\U0001f46b": {":couple:", ":man_and_woman_holding_hands:", ":woman_and_man_holding_hands:"},
"\U0001f46c": {":men_holding_hands:", ":two_men_holding_hands:"},
@@ -5845,8 +5885,8 @@ func emojiRevCode() map[string][]string {
"\U0001f46e\u200d\u2640\ufe0f": {":policewoman:", ":woman_police_officer:", ":female-police-officer:"},
"\U0001f46e\u200d\u2642\ufe0f": {":cop:", ":policeman:", ":man_police_officer:", ":male-police-officer:"},
"\U0001f46f": {":people_with_bunny_ears:", ":people_with_bunny_ears_partying:"},
- "\U0001f46f\u200d\u2640\ufe0f": {":dancers:", ":dancing_women:", ":women_with_bunny_ears:", ":woman-with-bunny-ears-partying:", ":women_with_bunny_ears_partying:"},
- "\U0001f46f\u200d\u2642\ufe0f": {":dancing_men:", ":men_with_bunny_ears:", ":man-with-bunny-ears-partying:", ":men_with_bunny_ears_partying:"},
+ "\U0001f46f\u200d\u2640\ufe0f": {":dancers:", ":dancing_women:", ":women_with_bunny_ears:", ":women-with-bunny-ears-partying:", ":women_with_bunny_ears_partying:"},
+ "\U0001f46f\u200d\u2642\ufe0f": {":dancing_men:", ":men_with_bunny_ears:", ":men-with-bunny-ears-partying:", ":men_with_bunny_ears_partying:"},
"\U0001f470": {":bride_with_veil:", ":person_with_veil:"},
"\U0001f470\U0001f3fb": {":bride_with_veil_tone1:"},
"\U0001f470\U0001f3fc": {":bride_with_veil_tone2:"},
@@ -6043,7 +6083,9 @@ func emojiRevCode() map[string][]string {
"\U0001f48c": {":love_letter:"},
"\U0001f48d": {":ring:"},
"\U0001f48e": {":gem:", ":gem_stone:"},
+ "\U0001f48f": {":couplekiss:"},
"\U0001f490": {":bouquet:"},
+ "\U0001f491": {":couple_with_heart:"},
"\U0001f492": {":wedding:"},
"\U0001f493": {":heartbeat:", ":beating_heart:"},
"\U0001f494": {":broken_heart:"},
@@ -6417,7 +6459,7 @@ func emojiRevCode() map[string][]string {
"\U0001f632": {":astonished:", ":astonished_face:"},
"\U0001f633": {":flushed:", ":flushed_face:"},
"\U0001f634": {":sleeping:", ":sleeping_face:"},
- "\U0001f635": {":dizzy_face:", ":knocked-out_face:"},
+ "\U0001f635": {":dizzy_face:", ":face_with_crossed-out_eyes:"},
"\U0001f635\u200d\U0001f4ab": {":face_with_spiral_eyes:"},
"\U0001f636": {":no_mouth:", ":face_without_mouth:"},
"\U0001f636\u200d\U0001f32b\ufe0f": {":face_in_clouds:"},
@@ -6719,6 +6761,9 @@ func emojiRevCode() map[string][]string {
"\U0001f6d5": {":hindu_temple:"},
"\U0001f6d6": {":hut:"},
"\U0001f6d7": {":elevator:"},
+ "\U0001f6dd": {":playground_slide:"},
+ "\U0001f6de": {":wheel:"},
+ "\U0001f6df": {":ring_buoy:"},
"\U0001f6e0": {":tools:"},
"\U0001f6e0\ufe0f": {":hammer_and_wrench:"},
"\U0001f6e1\ufe0f": {":shield:"},
@@ -6757,6 +6802,7 @@ func emojiRevCode() map[string][]string {
"\U0001f7e9": {":green_square:", ":large_green_square:"},
"\U0001f7ea": {":purple_square:", ":large_purple_square:"},
"\U0001f7eb": {":brown_square:", ":large_brown_square:"},
+ "\U0001f7f0": {":heavy_equals_sign:"},
"\U0001f90c": {":pinched_fingers:"},
"\U0001f90d": {":white_heart:"},
"\U0001f90e": {":brown_heart:"},
@@ -6768,7 +6814,7 @@ func emojiRevCode() map[string][]string {
"\U0001f914": {":thinking:", ":thinking_face:"},
"\U0001f915": {":head_bandage:", ":face_with_head-bandage:", ":face_with_head_bandage:"},
"\U0001f916": {":robot:", ":robot_face:"},
- "\U0001f917": {":hugs:", ":hugging:", ":hugging_face:"},
+ "\U0001f917": {":hugs:", ":hugging:", ":hugging_face:", ":smiling_face_with_open_hands:"},
"\U0001f918": {":metal:", ":the_horns:", ":sign_of_the_horns:"},
"\U0001f918\U0001f3fb": {":metal_tone1:"},
"\U0001f918\U0001f3fc": {":metal_tone2:"},
@@ -7040,6 +7086,7 @@ func emojiRevCode() map[string][]string {
"\U0001f976": {":cold_face:"},
"\U0001f977": {":ninja:"},
"\U0001f978": {":disguised_face:"},
+ "\U0001f979": {":face_holding_back_tears:"},
"\U0001f97a": {":pleading_face:"},
"\U0001f97b": {":sari:"},
"\U0001f97c": {":lab_coat:"},
@@ -7126,6 +7173,7 @@ func emojiRevCode() map[string][]string {
"\U0001f9c9": {":mate:", ":mate_drink:"},
"\U0001f9ca": {":ice:", ":ice_cube:"},
"\U0001f9cb": {":bubble_tea:"},
+ "\U0001f9cc": {":troll:"},
"\U0001f9cd": {":person_standing:", ":standing_person:"},
"\U0001f9cd\u200d\u2640\ufe0f": {":standing_woman:", ":woman_standing:"},
"\U0001f9cd\u200d\u2642\ufe0f": {":man_standing:", ":standing_man:"},
@@ -7186,8 +7234,8 @@ func emojiRevCode() map[string][]string {
"\U0001f9d4\U0001f3fd": {":bearded_person_tone3:"},
"\U0001f9d4\U0001f3fe": {":bearded_person_tone4:"},
"\U0001f9d4\U0001f3ff": {":bearded_person_tone5:"},
- "\U0001f9d4\u200d\u2640\ufe0f": {":woman_beard:"},
- "\U0001f9d4\u200d\u2642\ufe0f": {":man_beard:"},
+ "\U0001f9d4\u200d\u2640\ufe0f": {":woman_beard:", ":woman_with_beard:"},
+ "\U0001f9d4\u200d\u2642\ufe0f": {":man_beard:", ":man_with_beard:"},
"\U0001f9d5": {":woman_with_headscarf:", ":person_with_headscarf:"},
"\U0001f9d5\U0001f3fb": {":woman_with_headscarf_tone1:"},
"\U0001f9d5\U0001f3fc": {":woman_with_headscarf_tone2:"},
@@ -7377,6 +7425,8 @@ func emojiRevCode() map[string][]string {
"\U0001fa78": {":drop_of_blood:"},
"\U0001fa79": {":adhesive_bandage:"},
"\U0001fa7a": {":stethoscope:"},
+ "\U0001fa7b": {":x-ray:"},
+ "\U0001fa7c": {":crutch:"},
"\U0001fa80": {":yo-yo:", ":yo_yo:"},
"\U0001fa81": {":kite:"},
"\U0001fa82": {":parachute:"},
@@ -7409,6 +7459,10 @@ func emojiRevCode() map[string][]string {
"\U0001faa6": {":headstone:"},
"\U0001faa7": {":placard:"},
"\U0001faa8": {":rock:"},
+ "\U0001faa9": {":mirror_ball:"},
+ "\U0001faaa": {":identification_card:"},
+ "\U0001faab": {":low_battery:"},
+ "\U0001faac": {":hamsa:"},
"\U0001fab0": {":fly:"},
"\U0001fab1": {":worm:"},
"\U0001fab2": {":beetle:"},
@@ -7416,9 +7470,16 @@ func emojiRevCode() map[string][]string {
"\U0001fab4": {":potted_plant:"},
"\U0001fab5": {":wood:"},
"\U0001fab6": {":feather:"},
+ "\U0001fab7": {":lotus:"},
+ "\U0001fab8": {":coral:"},
+ "\U0001fab9": {":empty_nest:"},
+ "\U0001faba": {":nest_with_eggs:"},
"\U0001fac0": {":anatomical_heart:"},
"\U0001fac1": {":lungs:"},
"\U0001fac2": {":people_hugging:"},
+ "\U0001fac3": {":pregnant_man:"},
+ "\U0001fac4": {":pregnant_person:"},
+ "\U0001fac5": {":person_with_crown:"},
"\U0001fad0": {":blueberries:"},
"\U0001fad1": {":bell_pepper:"},
"\U0001fad2": {":olive:"},
@@ -7426,6 +7487,24 @@ func emojiRevCode() map[string][]string {
"\U0001fad4": {":tamale:"},
"\U0001fad5": {":fondue:"},
"\U0001fad6": {":teapot:"},
+ "\U0001fad7": {":pouring_liquid:"},
+ "\U0001fad8": {":beans:"},
+ "\U0001fad9": {":jar:"},
+ "\U0001fae0": {":melting_face:"},
+ "\U0001fae1": {":saluting_face:"},
+ "\U0001fae2": {":face_with_open_eyes_and_hand_over_mouth:"},
+ "\U0001fae3": {":face_with_peeking_eye:"},
+ "\U0001fae4": {":face_with_diagonal_mouth:"},
+ "\U0001fae5": {":dotted_line_face:"},
+ "\U0001fae6": {":biting_lip:"},
+ "\U0001fae7": {":bubbles:"},
+ "\U0001faf0": {":hand_with_index_finger_and_thumb_crossed:"},
+ "\U0001faf1": {":rightwards_hand:"},
+ "\U0001faf2": {":leftwards_hand:"},
+ "\U0001faf3": {":palm_down_hand:"},
+ "\U0001faf4": {":palm_up_hand:"},
+ "\U0001faf5": {":index_pointing_at_the_viewer:"},
+ "\U0001faf6": {":heart_hands:"},
"\u00a9\ufe0f": {":copyright:"},
"\u00ae\ufe0f": {":registered:"},
"\u203c": {":double_exclamation_mark:"},
diff --git a/vendor/github.com/labstack/echo/v4/CHANGELOG.md b/vendor/github.com/labstack/echo/v4/CHANGELOG.md
index 372ed13c..461ac89c 100644
--- a/vendor/github.com/labstack/echo/v4/CHANGELOG.md
+++ b/vendor/github.com/labstack/echo/v4/CHANGELOG.md
@@ -1,5 +1,26 @@
# Changelog
+## v4.7.0 - 2022-03-01
+
+**Enhancements**
+
+* Add JWT, KeyAuth, CSRF multivalue extractors [#2060](https://github.com/labstack/echo/pull/2060)
+* Add LogErrorFunc to recover middleware [#2072](https://github.com/labstack/echo/pull/2072)
+* Add support for HEAD method query params binding [#2027](https://github.com/labstack/echo/pull/2027)
+* Improve filesystem support with echo.FileFS, echo.StaticFS, group.FileFS, group.StaticFS [#2064](https://github.com/labstack/echo/pull/2064)
+
+**Fixes**
+
+* Fix X-Real-IP bug, improve tests [#2007](https://github.com/labstack/echo/pull/2007)
+* Minor syntax fixes [#1994](https://github.com/labstack/echo/pull/1994), [#2102](https://github.com/labstack/echo/pull/2102), [#2102](https://github.com/labstack/echo/pull/2102)
+
+**General**
+
+* Add cache-control and connection headers [#2103](https://github.com/labstack/echo/pull/2103)
+* Add Retry-After header constant [#2078](https://github.com/labstack/echo/pull/2078)
+* Upgrade `go` directive in `go.mod` to 1.17 [#2049](https://github.com/labstack/echo/pull/2049)
+* Add Pagoda [#2077](https://github.com/labstack/echo/pull/2077) and Souin [#2069](https://github.com/labstack/echo/pull/2069) to 3rd-party middlewares in README
+
## v4.6.3 - 2022-01-10
**Fixes**
diff --git a/vendor/github.com/labstack/echo/v4/README.md b/vendor/github.com/labstack/echo/v4/README.md
index 930cb034..8b2321f0 100644
--- a/vendor/github.com/labstack/echo/v4/README.md
+++ b/vendor/github.com/labstack/echo/v4/README.md
@@ -5,7 +5,6 @@
[![Go Report Card](https://goreportcard.com/badge/github.com/labstack/echo?style=flat-square)](https://goreportcard.com/report/github.com/labstack/echo)
[![Build Status](http://img.shields.io/travis/labstack/echo.svg?style=flat-square)](https://travis-ci.org/labstack/echo)
[![Codecov](https://img.shields.io/codecov/c/github/labstack/echo.svg?style=flat-square)](https://codecov.io/gh/labstack/echo)
-[![Join the chat at https://gitter.im/labstack/echo](https://img.shields.io/badge/gitter-join%20chat-brightgreen.svg?style=flat-square)](https://gitter.im/labstack/echo)
[![Forum](https://img.shields.io/badge/community-forum-00afd1.svg?style=flat-square)](https://github.com/labstack/echo/discussions)
[![Twitter](https://img.shields.io/badge/twitter-@labstack-55acee.svg?style=flat-square)](https://twitter.com/labstack)
[![License](http://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://raw.githubusercontent.com/labstack/echo/master/LICENSE)
@@ -92,10 +91,23 @@ func hello(c echo.Context) error {
}
```
+# Third-party middlewares
+
+| Repository | Description |
+|------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| [github.com/labstack/echo-contrib](https://github.com/labstack/echo-contrib) | (by Echo team) [casbin](https://github.com/casbin/casbin), [gorilla/sessions](https://github.com/gorilla/sessions), [jaegertracing](github.com/uber/jaeger-client-go), [prometheus](https://github.com/prometheus/client_golang/), [pprof](https://pkg.go.dev/net/http/pprof), [zipkin](https://github.com/openzipkin/zipkin-go) middlewares |
+| [deepmap/oapi-codegen](https://github.com/deepmap/oapi-codegen) | Automatically generate RESTful API documentation with [OpenAPI](https://swagger.io/specification/) Client and Server Code Generator |
+| [github.com/swaggo/echo-swagger](https://github.com/swaggo/echo-swagger) | Automatically generate RESTful API documentation with [Swagger](https://swagger.io/) 2.0. |
+| [github.com/ziflex/lecho](https://github.com/ziflex/lecho) | [Zerolog](https://github.com/rs/zerolog) logging library wrapper for Echo logger interface. |
+| [github.com/brpaz/echozap](https://github.com/brpaz/echozap) | Uber´s [Zap](https://github.com/uber-go/zap) logging library wrapper for Echo logger interface. |
+| [github.com/darkweak/souin/plugins/echo](https://github.com/darkweak/souin/tree/master/plugins/echo) | HTTP cache system based on [Souin](https://github.com/darkweak/souin) to automatically get your endpoints cached. It supports some distributed and non-distributed storage systems depending your needs. |
+| [github.com/mikestefanello/pagoda](https://github.com/mikestefanello/pagoda) | Rapid, easy full-stack web development starter kit built with Echo.
+
+Please send a PR to add your own library here.
+
## Help
- [Forum](https://github.com/labstack/echo/discussions)
-- [Chat](https://gitter.im/labstack/echo)
## Contribute
diff --git a/vendor/github.com/labstack/echo/v4/bind.go b/vendor/github.com/labstack/echo/v4/bind.go
index fdf0524c..c841ca01 100644
--- a/vendor/github.com/labstack/echo/v4/bind.go
+++ b/vendor/github.com/labstack/echo/v4/bind.go
@@ -111,11 +111,11 @@ func (b *DefaultBinder) Bind(i interface{}, c Context) (err error) {
if err := b.BindPathParams(c, i); err != nil {
return err
}
- // Issue #1670 - Query params are binded only for GET/DELETE and NOT for usual request with body (POST/PUT/PATCH)
- // Reasoning here is that parameters in query and bind destination struct could have UNEXPECTED matches and results due that.
- // i.e. is `&id=1&lang=en` from URL same as `{"id":100,"lang":"de"}` request body and which one should have priority when binding.
- // This HTTP method check restores pre v4.1.11 behavior and avoids different problems when query is mixed with body
- if c.Request().Method == http.MethodGet || c.Request().Method == http.MethodDelete {
+ // Only bind query parameters for GET/DELETE/HEAD to avoid unexpected behavior with destination struct binding from body.
+ // For example a request URL `&id=1&lang=en` with body `{"id":100,"lang":"de"}` would lead to precedence issues.
+ // The HTTP method check restores pre-v4.1.11 behavior to avoid these problems (see issue #1670)
+ method := c.Request().Method
+ if method == http.MethodGet || method == http.MethodDelete || method == http.MethodHead {
if err = b.BindQueryParams(c, i); err != nil {
return err
}
diff --git a/vendor/github.com/labstack/echo/v4/context.go b/vendor/github.com/labstack/echo/v4/context.go
index 91ab6e48..a4ecfadf 100644
--- a/vendor/github.com/labstack/echo/v4/context.go
+++ b/vendor/github.com/labstack/echo/v4/context.go
@@ -9,8 +9,6 @@ import (
"net"
"net/http"
"net/url"
- "os"
- "path/filepath"
"strings"
"sync"
)
@@ -211,6 +209,13 @@ type (
)
const (
+ // ContextKeyHeaderAllow is set by Router for getting value for `Allow` header in later stages of handler call chain.
+ // Allow header is mandatory for status 405 (method not found) and useful for OPTIONS method requests.
+ // It is added to context only when Router does not find matching method handler for request.
+ ContextKeyHeaderAllow = "echo_header_allow"
+)
+
+const (
defaultMemory = 32 << 20 // 32 MB
indexPage = "index.html"
defaultIndent = " "
@@ -562,29 +567,6 @@ func (c *context) Stream(code int, contentType string, r io.Reader) (err error)
return
}
-func (c *context) File(file string) (err error) {
- f, err := os.Open(file)
- if err != nil {
- return NotFoundHandler(c)
- }
- defer f.Close()
-
- fi, _ := f.Stat()
- if fi.IsDir() {
- file = filepath.Join(file, indexPage)
- f, err = os.Open(file)
- if err != nil {
- return NotFoundHandler(c)
- }
- defer f.Close()
- if fi, err = f.Stat(); err != nil {
- return
- }
- }
- http.ServeContent(c.Response(), c.Request(), fi.Name(), fi.ModTime(), f)
- return
-}
-
func (c *context) Attachment(file, name string) error {
return c.contentDisposition(file, name, "attachment")
}
diff --git a/vendor/github.com/labstack/echo/v4/context_fs.go b/vendor/github.com/labstack/echo/v4/context_fs.go
new file mode 100644
index 00000000..11ee84bc
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/context_fs.go
@@ -0,0 +1,33 @@
+//go:build !go1.16
+// +build !go1.16
+
+package echo
+
+import (
+ "net/http"
+ "os"
+ "path/filepath"
+)
+
+func (c *context) File(file string) (err error) {
+ f, err := os.Open(file)
+ if err != nil {
+ return NotFoundHandler(c)
+ }
+ defer f.Close()
+
+ fi, _ := f.Stat()
+ if fi.IsDir() {
+ file = filepath.Join(file, indexPage)
+ f, err = os.Open(file)
+ if err != nil {
+ return NotFoundHandler(c)
+ }
+ defer f.Close()
+ if fi, err = f.Stat(); err != nil {
+ return
+ }
+ }
+ http.ServeContent(c.Response(), c.Request(), fi.Name(), fi.ModTime(), f)
+ return
+}
diff --git a/vendor/github.com/labstack/echo/v4/context_fs_go1.16.go b/vendor/github.com/labstack/echo/v4/context_fs_go1.16.go
new file mode 100644
index 00000000..c1c724af
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/context_fs_go1.16.go
@@ -0,0 +1,52 @@
+//go:build go1.16
+// +build go1.16
+
+package echo
+
+import (
+ "errors"
+ "io"
+ "io/fs"
+ "net/http"
+ "path/filepath"
+)
+
+func (c *context) File(file string) error {
+ return fsFile(c, file, c.echo.Filesystem)
+}
+
+// FileFS serves file from given file system.
+//
+// When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
+// prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
+// including `assets/images` as their prefix.
+func (c *context) FileFS(file string, filesystem fs.FS) error {
+ return fsFile(c, file, filesystem)
+}
+
+func fsFile(c Context, file string, filesystem fs.FS) error {
+ f, err := filesystem.Open(file)
+ if err != nil {
+ return ErrNotFound
+ }
+ defer f.Close()
+
+ fi, _ := f.Stat()
+ if fi.IsDir() {
+ file = filepath.ToSlash(filepath.Join(file, indexPage)) // ToSlash is necessary for Windows. fs.Open and os.Open are different in that aspect.
+ f, err = filesystem.Open(file)
+ if err != nil {
+ return ErrNotFound
+ }
+ defer f.Close()
+ if fi, err = f.Stat(); err != nil {
+ return err
+ }
+ }
+ ff, ok := f.(io.ReadSeeker)
+ if !ok {
+ return errors.New("file does not implement io.ReadSeeker")
+ }
+ http.ServeContent(c.Response(), c.Request(), fi.Name(), fi.ModTime(), ff)
+ return nil
+}
diff --git a/vendor/github.com/labstack/echo/v4/echo.go b/vendor/github.com/labstack/echo/v4/echo.go
index 1a60fb07..143f9ffe 100644
--- a/vendor/github.com/labstack/echo/v4/echo.go
+++ b/vendor/github.com/labstack/echo/v4/echo.go
@@ -47,9 +47,6 @@ import (
stdLog "log"
"net"
"net/http"
- "net/url"
- "os"
- "path/filepath"
"reflect"
"runtime"
"sync"
@@ -66,6 +63,7 @@ import (
type (
// Echo is the top-level framework instance.
Echo struct {
+ filesystem
common
// startupMutex is mutex to lock Echo instance access during server configuration and startup. Useful for to get
// listener address info (on which interface/port was listener binded) without having data races.
@@ -77,7 +75,6 @@ type (
maxParam *int
router *Router
routers map[string]*Router
- notFoundHandler HandlerFunc
pool sync.Pool
Server *http.Server
TLSServer *http.Server
@@ -113,10 +110,10 @@ type (
}
// MiddlewareFunc defines a function to process middleware.
- MiddlewareFunc func(HandlerFunc) HandlerFunc
+ MiddlewareFunc func(next HandlerFunc) HandlerFunc
// HandlerFunc defines a function to serve HTTP requests.
- HandlerFunc func(Context) error
+ HandlerFunc func(c Context) error
// HTTPErrorHandler is a centralized HTTP error handler.
HTTPErrorHandler func(error, Context)
@@ -190,8 +187,12 @@ const (
// Headers
const (
- HeaderAccept = "Accept"
- HeaderAcceptEncoding = "Accept-Encoding"
+ HeaderAccept = "Accept"
+ HeaderAcceptEncoding = "Accept-Encoding"
+ // HeaderAllow is the name of the "Allow" header field used to list the set of methods
+ // advertised as supported by the target resource. Returning an Allow header is mandatory
+ // for status 405 (method not found) and useful for the OPTIONS method in responses.
+ // See RFC 7231: https://datatracker.ietf.org/doc/html/rfc7231#section-7.4.1
HeaderAllow = "Allow"
HeaderAuthorization = "Authorization"
HeaderContentDisposition = "Content-Disposition"
@@ -203,6 +204,7 @@ const (
HeaderIfModifiedSince = "If-Modified-Since"
HeaderLastModified = "Last-Modified"
HeaderLocation = "Location"
+ HeaderRetryAfter = "Retry-After"
HeaderUpgrade = "Upgrade"
HeaderVary = "Vary"
HeaderWWWAuthenticate = "WWW-Authenticate"
@@ -212,12 +214,14 @@ const (
HeaderXForwardedSsl = "X-Forwarded-Ssl"
HeaderXUrlScheme = "X-Url-Scheme"
HeaderXHTTPMethodOverride = "X-HTTP-Method-Override"
- HeaderXRealIP = "X-Real-IP"
- HeaderXRequestID = "X-Request-ID"
- HeaderXCorrelationID = "X-Correlation-ID"
+ HeaderXRealIP = "X-Real-Ip"
+ HeaderXRequestID = "X-Request-Id"
+ HeaderXCorrelationID = "X-Correlation-Id"
HeaderXRequestedWith = "X-Requested-With"
HeaderServer = "Server"
HeaderOrigin = "Origin"
+ HeaderCacheControl = "Cache-Control"
+ HeaderConnection = "Connection"
// Access control
HeaderAccessControlRequestMethod = "Access-Control-Request-Method"
@@ -242,7 +246,7 @@ const (
const (
// Version of Echo
- Version = "4.6.3"
+ Version = "4.7.0"
website = "https://echo.labstack.com"
// http://patorjk.com/software/taag/#p=display&f=Small%20Slant&t=Echo
banner = `
@@ -302,6 +306,12 @@ var (
}
MethodNotAllowedHandler = func(c Context) error {
+ // See RFC 7231 section 7.4.1: An origin server MUST generate an Allow field in a 405 (Method Not Allowed)
+ // response and MAY do so in any other response. For disabled resources an empty Allow header may be returned
+ routerAllowMethods, ok := c.Get(ContextKeyHeaderAllow).(string)
+ if ok && routerAllowMethods != "" {
+ c.Response().Header().Set(HeaderAllow, routerAllowMethods)
+ }
return ErrMethodNotAllowed
}
)
@@ -309,8 +319,9 @@ var (
// New creates an instance of Echo.
func New() (e *Echo) {
e = &Echo{
- Server: new(http.Server),
- TLSServer: new(http.Server),
+ filesystem: createFilesystem(),
+ Server: new(http.Server),
+ TLSServer: new(http.Server),
AutoTLSManager: autocert.Manager{
Prompt: autocert.AcceptTOS,
},
@@ -489,50 +500,6 @@ func (e *Echo) Match(methods []string, path string, handler HandlerFunc, middlew
return routes
}
-// Static registers a new route with path prefix to serve static files from the
-// provided root directory.
-func (e *Echo) Static(prefix, root string) *Route {
- if root == "" {
- root = "." // For security we want to restrict to CWD.
- }
- return e.static(prefix, root, e.GET)
-}
-
-func (common) static(prefix, root string, get func(string, HandlerFunc, ...MiddlewareFunc) *Route) *Route {
- h := func(c Context) error {
- p, err := url.PathUnescape(c.Param("*"))
- if err != nil {
- return err
- }
-
- name := filepath.Join(root, filepath.Clean("/"+p)) // "/"+ for security
- fi, err := os.Stat(name)
- if err != nil {
- // The access path does not exist
- return NotFoundHandler(c)
- }
-
- // If the request is for a directory and does not end with "/"
- p = c.Request().URL.Path // path must not be empty.
- if fi.IsDir() && p[len(p)-1] != '/' {
- // Redirect to ends with "/"
- return c.Redirect(http.StatusMovedPermanently, p+"/")
- }
- return c.File(name)
- }
- // Handle added routes based on trailing slash:
- // /prefix => exact route "/prefix" + any route "/prefix/*"
- // /prefix/ => only any route "/prefix/*"
- if prefix != "" {
- if prefix[len(prefix)-1] == '/' {
- // Only add any route for intentional trailing slash
- return get(prefix+"*", h)
- }
- get(prefix, h)
- }
- return get(prefix+"/*", h)
-}
-
func (common) file(path, file string, get func(string, HandlerFunc, ...MiddlewareFunc) *Route,
m ...MiddlewareFunc) *Route {
return get(path, func(c Context) error {
@@ -643,7 +610,7 @@ func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// Acquire context
c := e.pool.Get().(*context)
c.Reset(r, w)
- h := NotFoundHandler
+ var h func(Context) error
if e.premiddleware == nil {
e.findRouter(r.Host).Find(r.Method, GetPath(r), c)
diff --git a/vendor/github.com/labstack/echo/v4/echo_fs.go b/vendor/github.com/labstack/echo/v4/echo_fs.go
new file mode 100644
index 00000000..c3790545
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/echo_fs.go
@@ -0,0 +1,62 @@
+//go:build !go1.16
+// +build !go1.16
+
+package echo
+
+import (
+ "net/http"
+ "net/url"
+ "os"
+ "path/filepath"
+)
+
+type filesystem struct {
+}
+
+func createFilesystem() filesystem {
+ return filesystem{}
+}
+
+// Static registers a new route with path prefix to serve static files from the
+// provided root directory.
+func (e *Echo) Static(prefix, root string) *Route {
+ if root == "" {
+ root = "." // For security we want to restrict to CWD.
+ }
+ return e.static(prefix, root, e.GET)
+}
+
+func (common) static(prefix, root string, get func(string, HandlerFunc, ...MiddlewareFunc) *Route) *Route {
+ h := func(c Context) error {
+ p, err := url.PathUnescape(c.Param("*"))
+ if err != nil {
+ return err
+ }
+
+ name := filepath.Join(root, filepath.Clean("/"+p)) // "/"+ for security
+ fi, err := os.Stat(name)
+ if err != nil {
+ // The access path does not exist
+ return NotFoundHandler(c)
+ }
+
+ // If the request is for a directory and does not end with "/"
+ p = c.Request().URL.Path // path must not be empty.
+ if fi.IsDir() && p[len(p)-1] != '/' {
+ // Redirect to ends with "/"
+ return c.Redirect(http.StatusMovedPermanently, p+"/")
+ }
+ return c.File(name)
+ }
+ // Handle added routes based on trailing slash:
+ // /prefix => exact route "/prefix" + any route "/prefix/*"
+ // /prefix/ => only any route "/prefix/*"
+ if prefix != "" {
+ if prefix[len(prefix)-1] == '/' {
+ // Only add any route for intentional trailing slash
+ return get(prefix+"*", h)
+ }
+ get(prefix, h)
+ }
+ return get(prefix+"/*", h)
+}
diff --git a/vendor/github.com/labstack/echo/v4/echo_fs_go1.16.go b/vendor/github.com/labstack/echo/v4/echo_fs_go1.16.go
new file mode 100644
index 00000000..435459de
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/echo_fs_go1.16.go
@@ -0,0 +1,145 @@
+//go:build go1.16
+// +build go1.16
+
+package echo
+
+import (
+ "fmt"
+ "io/fs"
+ "net/http"
+ "net/url"
+ "os"
+ "path/filepath"
+ "strings"
+)
+
+type filesystem struct {
+ // Filesystem is file system used by Static and File handlers to access files.
+ // Defaults to os.DirFS(".")
+ //
+ // When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
+ // prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
+ // including `assets/images` as their prefix.
+ Filesystem fs.FS
+}
+
+func createFilesystem() filesystem {
+ return filesystem{
+ Filesystem: newDefaultFS(),
+ }
+}
+
+// Static registers a new route with path prefix to serve static files from the provided root directory.
+func (e *Echo) Static(pathPrefix, fsRoot string) *Route {
+ subFs := MustSubFS(e.Filesystem, fsRoot)
+ return e.Add(
+ http.MethodGet,
+ pathPrefix+"*",
+ StaticDirectoryHandler(subFs, false),
+ )
+}
+
+// StaticFS registers a new route with path prefix to serve static files from the provided file system.
+//
+// When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
+// prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
+// including `assets/images` as their prefix.
+func (e *Echo) StaticFS(pathPrefix string, filesystem fs.FS) *Route {
+ return e.Add(
+ http.MethodGet,
+ pathPrefix+"*",
+ StaticDirectoryHandler(filesystem, false),
+ )
+}
+
+// StaticDirectoryHandler creates handler function to serve files from provided file system
+// When disablePathUnescaping is set then file name from path is not unescaped and is served as is.
+func StaticDirectoryHandler(fileSystem fs.FS, disablePathUnescaping bool) HandlerFunc {
+ return func(c Context) error {
+ p := c.Param("*")
+ if !disablePathUnescaping { // when router is already unescaping we do not want to do is twice
+ tmpPath, err := url.PathUnescape(p)
+ if err != nil {
+ return fmt.Errorf("failed to unescape path variable: %w", err)
+ }
+ p = tmpPath
+ }
+
+ // fs.FS.Open() already assumes that file names are relative to FS root path and considers name with prefix `/` as invalid
+ name := filepath.ToSlash(filepath.Clean(strings.TrimPrefix(p, "/")))
+ fi, err := fs.Stat(fileSystem, name)
+ if err != nil {
+ return ErrNotFound
+ }
+
+ // If the request is for a directory and does not end with "/"
+ p = c.Request().URL.Path // path must not be empty.
+ if fi.IsDir() && len(p) > 0 && p[len(p)-1] != '/' {
+ // Redirect to ends with "/"
+ return c.Redirect(http.StatusMovedPermanently, p+"/")
+ }
+ return fsFile(c, name, fileSystem)
+ }
+}
+
+// FileFS registers a new route with path to serve file from the provided file system.
+func (e *Echo) FileFS(path, file string, filesystem fs.FS, m ...MiddlewareFunc) *Route {
+ return e.GET(path, StaticFileHandler(file, filesystem), m...)
+}
+
+// StaticFileHandler creates handler function to serve file from provided file system
+func StaticFileHandler(file string, filesystem fs.FS) HandlerFunc {
+ return func(c Context) error {
+ return fsFile(c, file, filesystem)
+ }
+}
+
+// defaultFS emulates os.Open behaviour with filesystem opened by `os.DirFs`. Difference between `os.Open` and `fs.Open`
+// is that FS does not allow to open path that start with `..` or `/` etc. For example previously you could have `../images`
+// in your application but `fs := os.DirFS("./")` would not allow you to use `fs.Open("../images")` and this would break
+// all old applications that rely on being able to traverse up from current executable run path.
+// NB: private because you really should use fs.FS implementation instances
+type defaultFS struct {
+ prefix string
+ fs fs.FS
+}
+
+func newDefaultFS() *defaultFS {
+ dir, _ := os.Getwd()
+ return &defaultFS{
+ prefix: dir,
+ fs: os.DirFS(dir),
+ }
+}
+
+func (fs defaultFS) Open(name string) (fs.File, error) {
+ return fs.fs.Open(name)
+}
+
+func subFS(currentFs fs.FS, root string) (fs.FS, error) {
+ root = filepath.ToSlash(filepath.Clean(root)) // note: fs.FS operates only with slashes. `ToSlash` is necessary for Windows
+ if dFS, ok := currentFs.(*defaultFS); ok {
+ // we need to make exception for `defaultFS` instances as it interprets root prefix differently from fs.FS to
+ // allow cases when root is given as `../somepath` which is not valid for fs.FS
+ root = filepath.Join(dFS.prefix, root)
+ return &defaultFS{
+ prefix: root,
+ fs: os.DirFS(root),
+ }, nil
+ }
+ return fs.Sub(currentFs, root)
+}
+
+// MustSubFS creates sub FS from current filesystem or panic on failure.
+// Panic happens when `fsRoot` contains invalid path according to `fs.ValidPath` rules.
+//
+// MustSubFS is helpful when dealing with `embed.FS` because for example `//go:embed assets/images` embeds files with
+// paths including `assets/images` as their prefix. In that case use `fs := echo.MustSubFS(fs, "rootDirectory") to
+// create sub fs which uses necessary prefix for directory path.
+func MustSubFS(currentFs fs.FS, fsRoot string) fs.FS {
+ subFs, err := subFS(currentFs, fsRoot)
+ if err != nil {
+ panic(fmt.Errorf("can not create sub FS, invalid root given, err: %w", err))
+ }
+ return subFs
+}
diff --git a/vendor/github.com/labstack/echo/v4/group.go b/vendor/github.com/labstack/echo/v4/group.go
index 426bef9e..bba470ce 100644
--- a/vendor/github.com/labstack/echo/v4/group.go
+++ b/vendor/github.com/labstack/echo/v4/group.go
@@ -102,11 +102,6 @@ func (g *Group) Group(prefix string, middleware ...MiddlewareFunc) (sg *Group) {
return
}
-// Static implements `Echo#Static()` for sub-routes within the Group.
-func (g *Group) Static(prefix, root string) {
- g.static(prefix, root, g.GET)
-}
-
// File implements `Echo#File()` for sub-routes within the Group.
func (g *Group) File(path, file string) {
g.file(path, file, g.GET)
diff --git a/vendor/github.com/labstack/echo/v4/group_fs.go b/vendor/github.com/labstack/echo/v4/group_fs.go
new file mode 100644
index 00000000..0a1ce4a9
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/group_fs.go
@@ -0,0 +1,9 @@
+//go:build !go1.16
+// +build !go1.16
+
+package echo
+
+// Static implements `Echo#Static()` for sub-routes within the Group.
+func (g *Group) Static(prefix, root string) {
+ g.static(prefix, root, g.GET)
+}
diff --git a/vendor/github.com/labstack/echo/v4/group_fs_go1.16.go b/vendor/github.com/labstack/echo/v4/group_fs_go1.16.go
new file mode 100644
index 00000000..2ba52b5e
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/group_fs_go1.16.go
@@ -0,0 +1,33 @@
+//go:build go1.16
+// +build go1.16
+
+package echo
+
+import (
+ "io/fs"
+ "net/http"
+)
+
+// Static implements `Echo#Static()` for sub-routes within the Group.
+func (g *Group) Static(pathPrefix, fsRoot string) {
+ subFs := MustSubFS(g.echo.Filesystem, fsRoot)
+ g.StaticFS(pathPrefix, subFs)
+}
+
+// StaticFS implements `Echo#StaticFS()` for sub-routes within the Group.
+//
+// When dealing with `embed.FS` use `fs := echo.MustSubFS(fs, "rootDirectory") to create sub fs which uses necessary
+// prefix for directory path. This is necessary as `//go:embed assets/images` embeds files with paths
+// including `assets/images` as their prefix.
+func (g *Group) StaticFS(pathPrefix string, filesystem fs.FS) {
+ g.Add(
+ http.MethodGet,
+ pathPrefix+"*",
+ StaticDirectoryHandler(filesystem, false),
+ )
+}
+
+// FileFS implements `Echo#FileFS()` for sub-routes within the Group.
+func (g *Group) FileFS(path, file string, filesystem fs.FS, m ...MiddlewareFunc) *Route {
+ return g.GET(path, StaticFileHandler(file, filesystem), m...)
+}
diff --git a/vendor/github.com/labstack/echo/v4/ip.go b/vendor/github.com/labstack/echo/v4/ip.go
index 39cb421f..46d464cf 100644
--- a/vendor/github.com/labstack/echo/v4/ip.go
+++ b/vendor/github.com/labstack/echo/v4/ip.go
@@ -6,6 +6,130 @@ import (
"strings"
)
+/**
+By: https://github.com/tmshn (See: https://github.com/labstack/echo/pull/1478 , https://github.com/labstack/echox/pull/134 )
+Source: https://echo.labstack.com/guide/ip-address/
+
+IP address plays fundamental role in HTTP; it's used for access control, auditing, geo-based access analysis and more.
+Echo provides handy method [`Context#RealIP()`](https://godoc.org/github.com/labstack/echo#Context) for that.
+
+However, it is not trivial to retrieve the _real_ IP address from requests especially when you put L7 proxies before the application.
+In such situation, _real_ IP needs to be relayed on HTTP layer from proxies to your app, but you must not trust HTTP headers unconditionally.
+Otherwise, you might give someone a chance of deceiving you. **A security risk!**
+
+To retrieve IP address reliably/securely, you must let your application be aware of the entire architecture of your infrastructure.
+In Echo, this can be done by configuring `Echo#IPExtractor` appropriately.
+This guides show you why and how.
+
+> Note: if you dont' set `Echo#IPExtractor` explicitly, Echo fallback to legacy behavior, which is not a good choice.
+
+Let's start from two questions to know the right direction:
+
+1. Do you put any HTTP (L7) proxy in front of the application?
+ - It includes both cloud solutions (such as AWS ALB or GCP HTTP LB) and OSS ones (such as Nginx, Envoy or Istio ingress gateway).
+2. If yes, what HTTP header do your proxies use to pass client IP to the application?
+
+## Case 1. With no proxy
+
+If you put no proxy (e.g.: directory facing to the internet), all you need to (and have to) see is IP address from network layer.
+Any HTTP header is untrustable because the clients have full control what headers to be set.
+
+In this case, use `echo.ExtractIPDirect()`.
+
+```go
+e.IPExtractor = echo.ExtractIPDirect()
+```
+
+## Case 2. With proxies using `X-Forwarded-For` header
+
+[`X-Forwared-For` (XFF)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For) is the popular header
+to relay clients' IP addresses.
+At each hop on the proxies, they append the request IP address at the end of the header.
+
+Following example diagram illustrates this behavior.
+
+```text
+┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
+│ "Origin" │───────────>│ Proxy 1 │───────────>│ Proxy 2 │───────────>│ Your app │
+│ (IP: a) │ │ (IP: b) │ │ (IP: c) │ │ │
+└──────────┘ └──────────┘ └──────────┘ └──────────┘
+
+Case 1.
+XFF: "" "a" "a, b"
+ ~~~~~~
+Case 2.
+XFF: "x" "x, a" "x, a, b"
+ ~~~~~~~~~
+ ↑ What your app will see
+```
+
+In this case, use **first _untrustable_ IP reading from right**. Never use first one reading from left, as it is
+configurable by client. Here "trustable" means "you are sure the IP address belongs to your infrastructre".
+In above example, if `b` and `c` are trustable, the IP address of the client is `a` for both cases, never be `x`.
+
+In Echo, use `ExtractIPFromXFFHeader(...TrustOption)`.
+
+```go
+e.IPExtractor = echo.ExtractIPFromXFFHeader()
+```
+
+By default, it trusts internal IP addresses (loopback, link-local unicast, private-use and unique local address
+from [RFC6890](https://tools.ietf.org/html/rfc6890), [RFC4291](https://tools.ietf.org/html/rfc4291) and
+[RFC4193](https://tools.ietf.org/html/rfc4193)).
+To control this behavior, use [`TrustOption`](https://godoc.org/github.com/labstack/echo#TrustOption)s.
+
+E.g.:
+
+```go
+e.IPExtractor = echo.ExtractIPFromXFFHeader(
+ TrustLinkLocal(false),
+ TrustIPRanges(lbIPRange),
+)
+```
+
+- Ref: https://godoc.org/github.com/labstack/echo#TrustOption
+
+## Case 3. With proxies using `X-Real-IP` header
+
+`X-Real-IP` is another HTTP header to relay clients' IP addresses, but it carries only one address unlike XFF.
+
+If your proxies set this header, use `ExtractIPFromRealIPHeader(...TrustOption)`.
+
+```go
+e.IPExtractor = echo.ExtractIPFromRealIPHeader()
+```
+
+Again, it trusts internal IP addresses by default (loopback, link-local unicast, private-use and unique local address
+from [RFC6890](https://tools.ietf.org/html/rfc6890), [RFC4291](https://tools.ietf.org/html/rfc4291) and
+[RFC4193](https://tools.ietf.org/html/rfc4193)).
+To control this behavior, use [`TrustOption`](https://godoc.org/github.com/labstack/echo#TrustOption)s.
+
+- Ref: https://godoc.org/github.com/labstack/echo#TrustOption
+
+> **Never forget** to configure the outermost proxy (i.e.; at the edge of your infrastructure) **not to pass through incoming headers**.
+> Otherwise there is a chance of fraud, as it is what clients can control.
+
+## About default behavior
+
+In default behavior, Echo sees all of first XFF header, X-Real-IP header and IP from network layer.
+
+As you might already notice, after reading this article, this is not good.
+Sole reason this is default is just backward compatibility.
+
+## Private IP ranges
+
+See: https://en.wikipedia.org/wiki/Private_network
+
+Private IPv4 address ranges (RFC 1918):
+* 10.0.0.0 – 10.255.255.255 (24-bit block)
+* 172.16.0.0 – 172.31.255.255 (20-bit block)
+* 192.168.0.0 – 192.168.255.255 (16-bit block)
+
+Private IPv6 address ranges:
+* fc00::/7 address block = RFC 4193 Unique Local Addresses (ULA)
+
+*/
+
type ipChecker struct {
trustLoopback bool
trustLinkLocal bool
@@ -52,6 +176,7 @@ func newIPChecker(configs []TrustOption) *ipChecker {
return checker
}
+// Go1.16+ added `ip.IsPrivate()` but until that use this implementation
func isPrivateIPRange(ip net.IP) bool {
if ip4 := ip.To4(); ip4 != nil {
return ip4[0] == 10 ||
@@ -87,10 +212,12 @@ type IPExtractor func(*http.Request) string
// ExtractIPDirect extracts IP address using actual IP address.
// Use this if your server faces to internet directory (i.e.: uses no proxy).
func ExtractIPDirect() IPExtractor {
- return func(req *http.Request) string {
- ra, _, _ := net.SplitHostPort(req.RemoteAddr)
- return ra
- }
+ return extractIP
+}
+
+func extractIP(req *http.Request) string {
+ ra, _, _ := net.SplitHostPort(req.RemoteAddr)
+ return ra
}
// ExtractIPFromRealIPHeader extracts IP address using x-real-ip header.
@@ -98,14 +225,13 @@ func ExtractIPDirect() IPExtractor {
func ExtractIPFromRealIPHeader(options ...TrustOption) IPExtractor {
checker := newIPChecker(options)
return func(req *http.Request) string {
- directIP := ExtractIPDirect()(req)
realIP := req.Header.Get(HeaderXRealIP)
if realIP != "" {
- if ip := net.ParseIP(directIP); ip != nil && checker.trust(ip) {
+ if ip := net.ParseIP(realIP); ip != nil && checker.trust(ip) {
return realIP
}
}
- return directIP
+ return extractIP(req)
}
}
@@ -115,7 +241,7 @@ func ExtractIPFromRealIPHeader(options ...TrustOption) IPExtractor {
func ExtractIPFromXFFHeader(options ...TrustOption) IPExtractor {
checker := newIPChecker(options)
return func(req *http.Request) string {
- directIP := ExtractIPDirect()(req)
+ directIP := extractIP(req)
xffs := req.Header[HeaderXForwardedFor]
if len(xffs) == 0 {
return directIP
diff --git a/vendor/github.com/labstack/echo/v4/middleware/cors.go b/vendor/github.com/labstack/echo/v4/middleware/cors.go
index d6ef8964..16259512 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/cors.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/cors.go
@@ -29,6 +29,8 @@ type (
// AllowMethods defines a list methods allowed when accessing the resource.
// This is used in response to a preflight request.
// Optional. Default value DefaultCORSConfig.AllowMethods.
+ // If `allowMethods` is left empty will fill for preflight request `Access-Control-Allow-Methods` header value
+ // from `Allow` header that echo.Router set into context.
AllowMethods []string `yaml:"allow_methods"`
// AllowHeaders defines a list of request headers that can be used when
@@ -41,6 +43,8 @@ type (
// a response to a preflight request, this indicates whether or not the
// actual request can be made using credentials.
// Optional. Default value false.
+ // Security: avoid using `AllowCredentials = true` with `AllowOrigins = *`.
+ // See http://blog.portswigger.net/2016/10/exploiting-cors-misconfigurations-for.html
AllowCredentials bool `yaml:"allow_credentials"`
// ExposeHeaders defines a whitelist headers that clients are allowed to
@@ -80,7 +84,9 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
if len(config.AllowOrigins) == 0 {
config.AllowOrigins = DefaultCORSConfig.AllowOrigins
}
+ hasCustomAllowMethods := true
if len(config.AllowMethods) == 0 {
+ hasCustomAllowMethods = false
config.AllowMethods = DefaultCORSConfig.AllowMethods
}
@@ -109,10 +115,28 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
origin := req.Header.Get(echo.HeaderOrigin)
allowOrigin := ""
- preflight := req.Method == http.MethodOptions
res.Header().Add(echo.HeaderVary, echo.HeaderOrigin)
- // No Origin provided
+ // Preflight request is an OPTIONS request, using three HTTP request headers: Access-Control-Request-Method,
+ // Access-Control-Request-Headers, and the Origin header. See: https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
+ // For simplicity we just consider method type and later `Origin` header.
+ preflight := req.Method == http.MethodOptions
+
+ // Although router adds special handler in case of OPTIONS method we avoid calling next for OPTIONS in this middleware
+ // as CORS requests do not have cookies / authentication headers by default, so we could get stuck in auth
+ // middlewares by calling next(c).
+ // But we still want to send `Allow` header as response in case of Non-CORS OPTIONS request as router default
+ // handler does.
+ routerAllowMethods := ""
+ if preflight {
+ tmpAllowMethods, ok := c.Get(echo.ContextKeyHeaderAllow).(string)
+ if ok && tmpAllowMethods != "" {
+ routerAllowMethods = tmpAllowMethods
+ c.Response().Header().Set(echo.HeaderAllow, routerAllowMethods)
+ }
+ }
+
+ // No Origin provided. This is (probably) not request from actual browser - proceed executing middleware chain
if origin == "" {
if !preflight {
return next(c)
@@ -145,19 +169,15 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
}
}
- // Check allowed origin patterns
- for _, re := range allowOriginPatterns {
- if allowOrigin == "" {
- didx := strings.Index(origin, "://")
- if didx == -1 {
- continue
- }
- domAuth := origin[didx+3:]
- // to avoid regex cost by invalid long domain
- if len(domAuth) > 253 {
- break
- }
-
+ checkPatterns := false
+ if allowOrigin == "" {
+ // to avoid regex cost by invalid (long) domains (253 is domain name max limit)
+ if len(origin) <= (253+3+5) && strings.Contains(origin, "://") {
+ checkPatterns = true
+ }
+ }
+ if checkPatterns {
+ for _, re := range allowOriginPatterns {
if match, _ := regexp.MatchString(re, origin); match {
allowOrigin = origin
break
@@ -174,12 +194,13 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
return c.NoContent(http.StatusNoContent)
}
+ res.Header().Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
+ if config.AllowCredentials {
+ res.Header().Set(echo.HeaderAccessControlAllowCredentials, "true")
+ }
+
// Simple request
if !preflight {
- res.Header().Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
- if config.AllowCredentials {
- res.Header().Set(echo.HeaderAccessControlAllowCredentials, "true")
- }
if exposeHeaders != "" {
res.Header().Set(echo.HeaderAccessControlExposeHeaders, exposeHeaders)
}
@@ -189,11 +210,13 @@ func CORSWithConfig(config CORSConfig) echo.MiddlewareFunc {
// Preflight request
res.Header().Add(echo.HeaderVary, echo.HeaderAccessControlRequestMethod)
res.Header().Add(echo.HeaderVary, echo.HeaderAccessControlRequestHeaders)
- res.Header().Set(echo.HeaderAccessControlAllowOrigin, allowOrigin)
- res.Header().Set(echo.HeaderAccessControlAllowMethods, allowMethods)
- if config.AllowCredentials {
- res.Header().Set(echo.HeaderAccessControlAllowCredentials, "true")
+
+ if !hasCustomAllowMethods && routerAllowMethods != "" {
+ res.Header().Set(echo.HeaderAccessControlAllowMethods, routerAllowMethods)
+ } else {
+ res.Header().Set(echo.HeaderAccessControlAllowMethods, allowMethods)
}
+
if allowHeaders != "" {
res.Header().Set(echo.HeaderAccessControlAllowHeaders, allowHeaders)
} else {
diff --git a/vendor/github.com/labstack/echo/v4/middleware/csrf.go b/vendor/github.com/labstack/echo/v4/middleware/csrf.go
index 7804997d..61299f5c 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/csrf.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/csrf.go
@@ -2,9 +2,7 @@ package middleware
import (
"crypto/subtle"
- "errors"
"net/http"
- "strings"
"time"
"github.com/labstack/echo/v4"
@@ -21,13 +19,15 @@ type (
TokenLength uint8 `yaml:"token_length"`
// Optional. Default value 32.
- // TokenLookup is a string in the form of "<source>:<key>" that is used
+ // TokenLookup is a string in the form of "<source>:<name>" or "<source>:<name>,<source>:<name>" that is used
// to extract token from the request.
// Optional. Default value "header:X-CSRF-Token".
// Possible values:
- // - "header:<name>"
- // - "form:<name>"
+ // - "header:<name>" or "header:<name>:<cut-prefix>"
// - "query:<name>"
+ // - "form:<name>"
+ // Multiple sources example:
+ // - "header:X-CSRF-Token,query:csrf"
TokenLookup string `yaml:"token_lookup"`
// Context key to store generated CSRF token into context.
@@ -62,12 +62,11 @@ type (
// Optional. Default value SameSiteDefaultMode.
CookieSameSite http.SameSite `yaml:"cookie_same_site"`
}
-
- // csrfTokenExtractor defines a function that takes `echo.Context` and returns
- // either a token or an error.
- csrfTokenExtractor func(echo.Context) (string, error)
)
+// ErrCSRFInvalid is returned when CSRF check fails
+var ErrCSRFInvalid = echo.NewHTTPError(http.StatusForbidden, "invalid csrf token")
+
var (
// DefaultCSRFConfig is the default CSRF middleware config.
DefaultCSRFConfig = CSRFConfig{
@@ -114,14 +113,9 @@ func CSRFWithConfig(config CSRFConfig) echo.MiddlewareFunc {
config.CookieSecure = true
}
- // Initialize
- parts := strings.Split(config.TokenLookup, ":")
- extractor := csrfTokenFromHeader(parts[1])
- switch parts[0] {
- case "form":
- extractor = csrfTokenFromForm(parts[1])
- case "query":
- extractor = csrfTokenFromQuery(parts[1])
+ extractors, err := createExtractors(config.TokenLookup, "")
+ if err != nil {
+ panic(err)
}
return func(next echo.HandlerFunc) echo.HandlerFunc {
@@ -130,28 +124,50 @@ func CSRFWithConfig(config CSRFConfig) echo.MiddlewareFunc {
return next(c)
}
- req := c.Request()
- k, err := c.Cookie(config.CookieName)
token := ""
-
- // Generate token
- if err != nil {
- token = random.String(config.TokenLength)
+ if k, err := c.Cookie(config.CookieName); err != nil {
+ token = random.String(config.TokenLength) // Generate token
} else {
- // Reuse token
- token = k.Value
+ token = k.Value // Reuse token
}
- switch req.Method {
+ switch c.Request().Method {
case http.MethodGet, http.MethodHead, http.MethodOptions, http.MethodTrace:
default:
// Validate token only for requests which are not defined as 'safe' by RFC7231
- clientToken, err := extractor(c)
- if err != nil {
- return echo.NewHTTPError(http.StatusBadRequest, err.Error())
+ var lastExtractorErr error
+ var lastTokenErr error
+ outer:
+ for _, extractor := range extractors {
+ clientTokens, err := extractor(c)
+ if err != nil {
+ lastExtractorErr = err
+ continue
+ }
+
+ for _, clientToken := range clientTokens {
+ if validateCSRFToken(token, clientToken) {
+ lastTokenErr = nil
+ lastExtractorErr = nil
+ break outer
+ }
+ lastTokenErr = ErrCSRFInvalid
+ }
}
- if !validateCSRFToken(token, clientToken) {
- return echo.NewHTTPError(http.StatusForbidden, "invalid csrf token")
+ if lastTokenErr != nil {
+ return lastTokenErr
+ } else if lastExtractorErr != nil {
+ // ugly part to preserve backwards compatible errors. someone could rely on them
+ if lastExtractorErr == errQueryExtractorValueMissing {
+ lastExtractorErr = echo.NewHTTPError(http.StatusBadRequest, "missing csrf token in the query string")
+ } else if lastExtractorErr == errFormExtractorValueMissing {
+ lastExtractorErr = echo.NewHTTPError(http.StatusBadRequest, "missing csrf token in the form parameter")
+ } else if lastExtractorErr == errHeaderExtractorValueMissing {
+ lastExtractorErr = echo.NewHTTPError(http.StatusBadRequest, "missing csrf token in request header")
+ } else {
+ lastExtractorErr = echo.NewHTTPError(http.StatusBadRequest, lastExtractorErr.Error())
+ }
+ return lastExtractorErr
}
}
@@ -184,38 +200,6 @@ func CSRFWithConfig(config CSRFConfig) echo.MiddlewareFunc {
}
}
-// csrfTokenFromForm returns a `csrfTokenExtractor` that extracts token from the
-// provided request header.
-func csrfTokenFromHeader(header string) csrfTokenExtractor {
- return func(c echo.Context) (string, error) {
- return c.Request().Header.Get(header), nil
- }
-}
-
-// csrfTokenFromForm returns a `csrfTokenExtractor` that extracts token from the
-// provided form parameter.
-func csrfTokenFromForm(param string) csrfTokenExtractor {
- return func(c echo.Context) (string, error) {
- token := c.FormValue(param)
- if token == "" {
- return "", errors.New("missing csrf token in the form parameter")
- }
- return token, nil
- }
-}
-
-// csrfTokenFromQuery returns a `csrfTokenExtractor` that extracts token from the
-// provided query parameter.
-func csrfTokenFromQuery(param string) csrfTokenExtractor {
- return func(c echo.Context) (string, error) {
- token := c.QueryParam(param)
- if token == "" {
- return "", errors.New("missing csrf token in the query string")
- }
- return token, nil
- }
-}
-
func validateCSRFToken(token, clientToken string) bool {
return subtle.ConstantTimeCompare([]byte(token), []byte(clientToken)) == 1
}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/extractor.go b/vendor/github.com/labstack/echo/v4/middleware/extractor.go
new file mode 100644
index 00000000..a57ed4e1
--- /dev/null
+++ b/vendor/github.com/labstack/echo/v4/middleware/extractor.go
@@ -0,0 +1,184 @@
+package middleware
+
+import (
+ "errors"
+ "fmt"
+ "github.com/labstack/echo/v4"
+ "net/textproto"
+ "strings"
+)
+
+const (
+ // extractorLimit is arbitrary number to limit values extractor can return. this limits possible resource exhaustion
+ // attack vector
+ extractorLimit = 20
+)
+
+var errHeaderExtractorValueMissing = errors.New("missing value in request header")
+var errHeaderExtractorValueInvalid = errors.New("invalid value in request header")
+var errQueryExtractorValueMissing = errors.New("missing value in the query string")
+var errParamExtractorValueMissing = errors.New("missing value in path params")
+var errCookieExtractorValueMissing = errors.New("missing value in cookies")
+var errFormExtractorValueMissing = errors.New("missing value in the form")
+
+// ValuesExtractor defines a function for extracting values (keys/tokens) from the given context.
+type ValuesExtractor func(c echo.Context) ([]string, error)
+
+func createExtractors(lookups string, authScheme string) ([]ValuesExtractor, error) {
+ if lookups == "" {
+ return nil, nil
+ }
+ sources := strings.Split(lookups, ",")
+ var extractors = make([]ValuesExtractor, 0)
+ for _, source := range sources {
+ parts := strings.Split(source, ":")
+ if len(parts) < 2 {
+ return nil, fmt.Errorf("extractor source for lookup could not be split into needed parts: %v", source)
+ }
+
+ switch parts[0] {
+ case "query":
+ extractors = append(extractors, valuesFromQuery(parts[1]))
+ case "param":
+ extractors = append(extractors, valuesFromParam(parts[1]))
+ case "cookie":
+ extractors = append(extractors, valuesFromCookie(parts[1]))
+ case "form":
+ extractors = append(extractors, valuesFromForm(parts[1]))
+ case "header":
+ prefix := ""
+ if len(parts) > 2 {
+ prefix = parts[2]
+ } else if authScheme != "" && parts[1] == echo.HeaderAuthorization {
+ // backwards compatibility for JWT and KeyAuth:
+ // * we only apply this fix to Authorization as header we use and uses prefixes like "Bearer <token-value>" etc
+ // * previously header extractor assumed that auth-scheme/prefix had a space as suffix we need to retain that
+ // behaviour for default values and Authorization header.
+ prefix = authScheme
+ if !strings.HasSuffix(prefix, " ") {
+ prefix += " "
+ }
+ }
+ extractors = append(extractors, valuesFromHeader(parts[1], prefix))
+ }
+ }
+ return extractors, nil
+}
+
+// valuesFromHeader returns a functions that extracts values from the request header.
+// valuePrefix is parameter to remove first part (prefix) of the extracted value. This is useful if header value has static
+// prefix like `Authorization: <auth-scheme> <authorisation-parameters>` where part that we want to remove is `<auth-scheme> `
+// note the space at the end. In case of basic authentication `Authorization: Basic <credentials>` prefix we want to remove
+// is `Basic `. In case of JWT tokens `Authorization: Bearer <token>` prefix is `Bearer `.
+// If prefix is left empty the whole value is returned.
+func valuesFromHeader(header string, valuePrefix string) ValuesExtractor {
+ prefixLen := len(valuePrefix)
+ // standard library parses http.Request header keys in canonical form but we may provide something else so fix this
+ header = textproto.CanonicalMIMEHeaderKey(header)
+ return func(c echo.Context) ([]string, error) {
+ values := c.Request().Header.Values(header)
+ if len(values) == 0 {
+ return nil, errHeaderExtractorValueMissing
+ }
+
+ result := make([]string, 0)
+ for i, value := range values {
+ if prefixLen == 0 {
+ result = append(result, value)
+ if i >= extractorLimit-1 {
+ break
+ }
+ continue
+ }
+ if len(value) > prefixLen && strings.EqualFold(value[:prefixLen], valuePrefix) {
+ result = append(result, value[prefixLen:])
+ if i >= extractorLimit-1 {
+ break
+ }
+ }
+ }
+
+ if len(result) == 0 {
+ if prefixLen > 0 {
+ return nil, errHeaderExtractorValueInvalid
+ }
+ return nil, errHeaderExtractorValueMissing
+ }
+ return result, nil
+ }
+}
+
+// valuesFromQuery returns a function that extracts values from the query string.
+func valuesFromQuery(param string) ValuesExtractor {
+ return func(c echo.Context) ([]string, error) {
+ result := c.QueryParams()[param]
+ if len(result) == 0 {
+ return nil, errQueryExtractorValueMissing
+ } else if len(result) > extractorLimit-1 {
+ result = result[:extractorLimit]
+ }
+ return result, nil
+ }
+}
+
+// valuesFromParam returns a function that extracts values from the url param string.
+func valuesFromParam(param string) ValuesExtractor {
+ return func(c echo.Context) ([]string, error) {
+ result := make([]string, 0)
+ paramVales := c.ParamValues()
+ for i, p := range c.ParamNames() {
+ if param == p {
+ result = append(result, paramVales[i])
+ if i >= extractorLimit-1 {
+ break
+ }
+ }
+ }
+ if len(result) == 0 {
+ return nil, errParamExtractorValueMissing
+ }
+ return result, nil
+ }
+}
+
+// valuesFromCookie returns a function that extracts values from the named cookie.
+func valuesFromCookie(name string) ValuesExtractor {
+ return func(c echo.Context) ([]string, error) {
+ cookies := c.Cookies()
+ if len(cookies) == 0 {
+ return nil, errCookieExtractorValueMissing
+ }
+
+ result := make([]string, 0)
+ for i, cookie := range cookies {
+ if name == cookie.Name {
+ result = append(result, cookie.Value)
+ if i >= extractorLimit-1 {
+ break
+ }
+ }
+ }
+ if len(result) == 0 {
+ return nil, errCookieExtractorValueMissing
+ }
+ return result, nil
+ }
+}
+
+// valuesFromForm returns a function that extracts values from the form field.
+func valuesFromForm(name string) ValuesExtractor {
+ return func(c echo.Context) ([]string, error) {
+ if parseErr := c.Request().ParseForm(); parseErr != nil {
+ return nil, fmt.Errorf("valuesFromForm parse form failed: %w", parseErr)
+ }
+ values := c.Request().Form[name]
+ if len(values) == 0 {
+ return nil, errFormExtractorValueMissing
+ }
+ if len(values) > extractorLimit-1 {
+ values = values[:extractorLimit]
+ }
+ result := append([]string{}, values...)
+ return result, nil
+ }
+}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/jwt.go b/vendor/github.com/labstack/echo/v4/middleware/jwt.go
index 21e33ab8..bec5167e 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/jwt.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/jwt.go
@@ -1,3 +1,4 @@
+//go:build go1.15
// +build go1.15
package middleware
@@ -5,12 +6,10 @@ package middleware
import (
"errors"
"fmt"
- "net/http"
- "reflect"
- "strings"
-
"github.com/golang-jwt/jwt"
"github.com/labstack/echo/v4"
+ "net/http"
+ "reflect"
)
type (
@@ -22,7 +21,8 @@ type (
// BeforeFunc defines a function which is executed just before the middleware.
BeforeFunc BeforeFunc
- // SuccessHandler defines a function which is executed for a valid token.
+ // SuccessHandler defines a function which is executed for a valid token before middleware chain continues with next
+ // middleware or handler.
SuccessHandler JWTSuccessHandler
// ErrorHandler defines a function which is executed for an invalid token.
@@ -32,6 +32,13 @@ type (
// ErrorHandlerWithContext is almost identical to ErrorHandler, but it's passed the current context.
ErrorHandlerWithContext JWTErrorHandlerWithContext
+ // ContinueOnIgnoredError allows the next middleware/handler to be called when ErrorHandlerWithContext decides to
+ // ignore the error (by returning `nil`).
+ // This is useful when parts of your site/api allow public access and some authorized routes provide extra functionality.
+ // In that case you can use ErrorHandlerWithContext to set a default public JWT token value in the request context
+ // and continue. Some logic down the remaining execution chain needs to check that (public) token value then.
+ ContinueOnIgnoredError bool
+
// Signing key to validate token.
// This is one of the three options to provide a token validation key.
// The order of precedence is a user-defined KeyFunc, SigningKeys and SigningKey.
@@ -61,16 +68,26 @@ type (
// to extract token from the request.
// Optional. Default value "header:Authorization".
// Possible values:
- // - "header:<name>"
+ // - "header:<name>" or "header:<name>:<cut-prefix>"
+ // `<cut-prefix>` is argument value to cut/trim prefix of the extracted value. This is useful if header
+ // value has static prefix like `Authorization: <auth-scheme> <authorisation-parameters>` where part that we
+ // want to cut is `<auth-scheme> ` note the space at the end.
+ // In case of JWT tokens `Authorization: Bearer <token>` prefix we cut is `Bearer `.
+ // If prefix is left empty the whole value is returned.
// - "query:<name>"
// - "param:<name>"
// - "cookie:<name>"
// - "form:<name>"
- // Multiply sources example:
- // - "header: Authorization,cookie: myowncookie"
-
+ // Multiple sources example:
+ // - "header:Authorization,cookie:myowncookie"
TokenLookup string
+ // TokenLookupFuncs defines a list of user-defined functions that extract JWT token from the given context.
+ // This is one of the two options to provide a token extractor.
+ // The order of precedence is user-defined TokenLookupFuncs, and TokenLookup.
+ // You can also provide both if you want.
+ TokenLookupFuncs []ValuesExtractor
+
// AuthScheme to be used in the Authorization header.
// Optional. Default value "Bearer".
AuthScheme string
@@ -95,15 +112,13 @@ type (
}
// JWTSuccessHandler defines a function which is executed for a valid token.
- JWTSuccessHandler func(echo.Context)
+ JWTSuccessHandler func(c echo.Context)
// JWTErrorHandler defines a function which is executed for an invalid token.
- JWTErrorHandler func(error) error
+ JWTErrorHandler func(err error) error
// JWTErrorHandlerWithContext is almost identical to JWTErrorHandler, but it's passed the current context.
- JWTErrorHandlerWithContext func(error, echo.Context) error
-
- jwtExtractor func(echo.Context) (string, error)
+ JWTErrorHandlerWithContext func(err error, c echo.Context) error
)
// Algorithms
@@ -120,13 +135,14 @@ var (
var (
// DefaultJWTConfig is the default JWT auth middleware config.
DefaultJWTConfig = JWTConfig{
- Skipper: DefaultSkipper,
- SigningMethod: AlgorithmHS256,
- ContextKey: "user",
- TokenLookup: "header:" + echo.HeaderAuthorization,
- AuthScheme: "Bearer",
- Claims: jwt.MapClaims{},
- KeyFunc: nil,
+ Skipper: DefaultSkipper,
+ SigningMethod: AlgorithmHS256,
+ ContextKey: "user",
+ TokenLookup: "header:" + echo.HeaderAuthorization,
+ TokenLookupFuncs: nil,
+ AuthScheme: "Bearer",
+ Claims: jwt.MapClaims{},
+ KeyFunc: nil,
}
)
@@ -163,7 +179,7 @@ func JWTWithConfig(config JWTConfig) echo.MiddlewareFunc {
if config.Claims == nil {
config.Claims = DefaultJWTConfig.Claims
}
- if config.TokenLookup == "" {
+ if config.TokenLookup == "" && len(config.TokenLookupFuncs) == 0 {
config.TokenLookup = DefaultJWTConfig.TokenLookup
}
if config.AuthScheme == "" {
@@ -176,25 +192,12 @@ func JWTWithConfig(config JWTConfig) echo.MiddlewareFunc {
config.ParseTokenFunc = config.defaultParseToken
}
- // Initialize
- // Split sources
- sources := strings.Split(config.TokenLookup, ",")
- var extractors []jwtExtractor
- for _, source := range sources {
- parts := strings.Split(source, ":")
-
- switch parts[0] {
- case "query":
- extractors = append(extractors, jwtFromQuery(parts[1]))
- case "param":
- extractors = append(extractors, jwtFromParam(parts[1]))
- case "cookie":
- extractors = append(extractors, jwtFromCookie(parts[1]))
- case "form":
- extractors = append(extractors, jwtFromForm(parts[1]))
- case "header":
- extractors = append(extractors, jwtFromHeader(parts[1], config.AuthScheme))
- }
+ extractors, err := createExtractors(config.TokenLookup, config.AuthScheme)
+ if err != nil {
+ panic(err)
+ }
+ if len(config.TokenLookupFuncs) > 0 {
+ extractors = append(config.TokenLookupFuncs, extractors...)
}
return func(next echo.HandlerFunc) echo.HandlerFunc {
@@ -206,48 +209,54 @@ func JWTWithConfig(config JWTConfig) echo.MiddlewareFunc {
if config.BeforeFunc != nil {
config.BeforeFunc(c)
}
- var auth string
- var err error
+
+ var lastExtractorErr error
+ var lastTokenErr error
for _, extractor := range extractors {
- // Extract token from extractor, if it's not fail break the loop and
- // set auth
- auth, err = extractor(c)
- if err == nil {
- break
+ auths, err := extractor(c)
+ if err != nil {
+ lastExtractorErr = ErrJWTMissing // backwards compatibility: all extraction errors are same (unlike KeyAuth)
+ continue
}
- }
- // If none of extractor has a token, handle error
- if err != nil {
- if config.ErrorHandler != nil {
- return config.ErrorHandler(err)
- }
-
- if config.ErrorHandlerWithContext != nil {
- return config.ErrorHandlerWithContext(err, c)
+ for _, auth := range auths {
+ token, err := config.ParseTokenFunc(auth, c)
+ if err != nil {
+ lastTokenErr = err
+ continue
+ }
+ // Store user information from token into context.
+ c.Set(config.ContextKey, token)
+ if config.SuccessHandler != nil {
+ config.SuccessHandler(c)
+ }
+ return next(c)
}
- return err
}
-
- token, err := config.ParseTokenFunc(auth, c)
- if err == nil {
- // Store user information from token into context.
- c.Set(config.ContextKey, token)
- if config.SuccessHandler != nil {
- config.SuccessHandler(c)
- }
- return next(c)
+ // we are here only when we did not successfully extract or parse any of the tokens
+ err := lastTokenErr
+ if err == nil { // prioritize token errors over extracting errors
+ err = lastExtractorErr
}
if config.ErrorHandler != nil {
return config.ErrorHandler(err)
}
if config.ErrorHandlerWithContext != nil {
- return config.ErrorHandlerWithContext(err, c)
+ tmpErr := config.ErrorHandlerWithContext(err, c)
+ if config.ContinueOnIgnoredError && tmpErr == nil {
+ return next(c)
+ }
+ return tmpErr
}
- return &echo.HTTPError{
- Code: ErrJWTInvalid.Code,
- Message: ErrJWTInvalid.Message,
- Internal: err,
+
+ // backwards compatible errors codes
+ if lastTokenErr != nil {
+ return &echo.HTTPError{
+ Code: ErrJWTInvalid.Code,
+ Message: ErrJWTInvalid.Message,
+ Internal: err,
+ }
}
+ return err // this is lastExtractorErr value
}
}
}
@@ -289,59 +298,3 @@ func (config *JWTConfig) defaultKeyFunc(t *jwt.Token) (interface{}, error) {
return config.SigningKey, nil
}
-
-// jwtFromHeader returns a `jwtExtractor` that extracts token from the request header.
-func jwtFromHeader(header string, authScheme string) jwtExtractor {
- return func(c echo.Context) (string, error) {
- auth := c.Request().Header.Get(header)
- l := len(authScheme)
- if len(auth) > l+1 && strings.EqualFold(auth[:l], authScheme) {
- return auth[l+1:], nil
- }
- return "", ErrJWTMissing
- }
-}
-
-// jwtFromQuery returns a `jwtExtractor` that extracts token from the query string.
-func jwtFromQuery(param string) jwtExtractor {
- return func(c echo.Context) (string, error) {
- token := c.QueryParam(param)
- if token == "" {
- return "", ErrJWTMissing
- }
- return token, nil
- }
-}
-
-// jwtFromParam returns a `jwtExtractor` that extracts token from the url param string.
-func jwtFromParam(param string) jwtExtractor {
- return func(c echo.Context) (string, error) {
- token := c.Param(param)
- if token == "" {
- return "", ErrJWTMissing
- }
- return token, nil
- }
-}
-
-// jwtFromCookie returns a `jwtExtractor` that extracts token from the named cookie.
-func jwtFromCookie(name string) jwtExtractor {
- return func(c echo.Context) (string, error) {
- cookie, err := c.Cookie(name)
- if err != nil {
- return "", ErrJWTMissing
- }
- return cookie.Value, nil
- }
-}
-
-// jwtFromForm returns a `jwtExtractor` that extracts token from the form field.
-func jwtFromForm(name string) jwtExtractor {
- return func(c echo.Context) (string, error) {
- field := c.FormValue(name)
- if field == "" {
- return "", ErrJWTMissing
- }
- return field, nil
- }
-}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/key_auth.go b/vendor/github.com/labstack/echo/v4/middleware/key_auth.go
index 54f3b47f..e8a6b085 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/key_auth.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/key_auth.go
@@ -2,11 +2,8 @@ package middleware
import (
"errors"
- "fmt"
- "net/http"
- "strings"
-
"github.com/labstack/echo/v4"
+ "net/http"
)
type (
@@ -15,15 +12,21 @@ type (
// Skipper defines a function to skip middleware.
Skipper Skipper
- // KeyLookup is a string in the form of "<source>:<name>" that is used
+ // KeyLookup is a string in the form of "<source>:<name>" or "<source>:<name>,<source>:<name>" that is used
// to extract key from the request.
// Optional. Default value "header:Authorization".
// Possible values:
- // - "header:<name>"
+ // - "header:<name>" or "header:<name>:<cut-prefix>"
+ // `<cut-prefix>` is argument value to cut/trim prefix of the extracted value. This is useful if header
+ // value has static prefix like `Authorization: <auth-scheme> <authorisation-parameters>` where part that we
+ // want to cut is `<auth-scheme> ` note the space at the end.
+ // In case of basic authentication `Authorization: Basic <credentials>` prefix we want to remove is `Basic `.
// - "query:<name>"
// - "form:<name>"
// - "cookie:<name>"
- KeyLookup string `yaml:"key_lookup"`
+ // Multiple sources example:
+ // - "header:Authorization,header:X-Api-Key"
+ KeyLookup string
// AuthScheme to be used in the Authorization header.
// Optional. Default value "Bearer".
@@ -36,15 +39,20 @@ type (
// ErrorHandler defines a function which is executed for an invalid key.
// It may be used to define a custom error.
ErrorHandler KeyAuthErrorHandler
+
+ // ContinueOnIgnoredError allows the next middleware/handler to be called when ErrorHandler decides to
+ // ignore the error (by returning `nil`).
+ // This is useful when parts of your site/api allow public access and some authorized routes provide extra functionality.
+ // In that case you can use ErrorHandler to set a default public key auth value in the request context
+ // and continue. Some logic down the remaining execution chain needs to check that (public) key auth value then.
+ ContinueOnIgnoredError bool
}
// KeyAuthValidator defines a function to validate KeyAuth credentials.
- KeyAuthValidator func(string, echo.Context) (bool, error)
-
- keyExtractor func(echo.Context) (string, error)
+ KeyAuthValidator func(auth string, c echo.Context) (bool, error)
// KeyAuthErrorHandler defines a function which is executed for an invalid key.
- KeyAuthErrorHandler func(error, echo.Context) error
+ KeyAuthErrorHandler func(err error, c echo.Context) error
)
var (
@@ -56,6 +64,21 @@ var (
}
)
+// ErrKeyAuthMissing is error type when KeyAuth middleware is unable to extract value from lookups
+type ErrKeyAuthMissing struct {
+ Err error
+}
+
+// Error returns errors text
+func (e *ErrKeyAuthMissing) Error() string {
+ return e.Err.Error()
+}
+
+// Unwrap unwraps error
+func (e *ErrKeyAuthMissing) Unwrap() error {
+ return e.Err
+}
+
// KeyAuth returns an KeyAuth middleware.
//
// For valid key it calls the next handler.
@@ -85,16 +108,9 @@ func KeyAuthWithConfig(config KeyAuthConfig) echo.MiddlewareFunc {
panic("echo: key-auth middleware requires a validator function")
}
- // Initialize
- parts := strings.Split(config.KeyLookup, ":")
- extractor := keyFromHeader(parts[1], config.AuthScheme)
- switch parts[0] {
- case "query":
- extractor = keyFromQuery(parts[1])
- case "form":
- extractor = keyFromForm(parts[1])
- case "cookie":
- extractor = keyFromCookie(parts[1])
+ extractors, err := createExtractors(config.KeyLookup, config.AuthScheme)
+ if err != nil {
+ panic(err)
}
return func(next echo.HandlerFunc) echo.HandlerFunc {
@@ -103,79 +119,62 @@ func KeyAuthWithConfig(config KeyAuthConfig) echo.MiddlewareFunc {
return next(c)
}
- // Extract and verify key
- key, err := extractor(c)
- if err != nil {
- if config.ErrorHandler != nil {
- return config.ErrorHandler(err, c)
+ var lastExtractorErr error
+ var lastValidatorErr error
+ for _, extractor := range extractors {
+ keys, err := extractor(c)
+ if err != nil {
+ lastExtractorErr = err
+ continue
+ }
+ for _, key := range keys {
+ valid, err := config.Validator(key, c)
+ if err != nil {
+ lastValidatorErr = err
+ continue
+ }
+ if valid {
+ return next(c)
+ }
+ lastValidatorErr = errors.New("invalid key")
}
- return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
- valid, err := config.Validator(key, c)
- if err != nil {
- if config.ErrorHandler != nil {
- return config.ErrorHandler(err, c)
+
+ // we are here only when we did not successfully extract and validate any of keys
+ err := lastValidatorErr
+ if err == nil { // prioritize validator errors over extracting errors
+ // ugly part to preserve backwards compatible errors. someone could rely on them
+ if lastExtractorErr == errQueryExtractorValueMissing {
+ err = errors.New("missing key in the query string")
+ } else if lastExtractorErr == errCookieExtractorValueMissing {
+ err = errors.New("missing key in cookies")
+ } else if lastExtractorErr == errFormExtractorValueMissing {
+ err = errors.New("missing key in the form")
+ } else if lastExtractorErr == errHeaderExtractorValueMissing {
+ err = errors.New("missing key in request header")
+ } else if lastExtractorErr == errHeaderExtractorValueInvalid {
+ err = errors.New("invalid key in the request header")
+ } else {
+ err = lastExtractorErr
}
+ err = &ErrKeyAuthMissing{Err: err}
+ }
+
+ if config.ErrorHandler != nil {
+ tmpErr := config.ErrorHandler(err, c)
+ if config.ContinueOnIgnoredError && tmpErr == nil {
+ return next(c)
+ }
+ return tmpErr
+ }
+ if lastValidatorErr != nil { // prioritize validator errors over extracting errors
return &echo.HTTPError{
Code: http.StatusUnauthorized,
- Message: "invalid key",
- Internal: err,
+ Message: "Unauthorized",
+ Internal: lastValidatorErr,
}
- } else if valid {
- return next(c)
}
- return echo.ErrUnauthorized
- }
- }
-}
-
-// keyFromHeader returns a `keyExtractor` that extracts key from the request header.
-func keyFromHeader(header string, authScheme string) keyExtractor {
- return func(c echo.Context) (string, error) {
- auth := c.Request().Header.Get(header)
- if auth == "" {
- return "", errors.New("missing key in request header")
- }
- if header == echo.HeaderAuthorization {
- l := len(authScheme)
- if len(auth) > l+1 && auth[:l] == authScheme {
- return auth[l+1:], nil
- }
- return "", errors.New("invalid key in the request header")
- }
- return auth, nil
- }
-}
-
-// keyFromQuery returns a `keyExtractor` that extracts key from the query string.
-func keyFromQuery(param string) keyExtractor {
- return func(c echo.Context) (string, error) {
- key := c.QueryParam(param)
- if key == "" {
- return "", errors.New("missing key in the query string")
- }
- return key, nil
- }
-}
-
-// keyFromForm returns a `keyExtractor` that extracts key from the form.
-func keyFromForm(param string) keyExtractor {
- return func(c echo.Context) (string, error) {
- key := c.FormValue(param)
- if key == "" {
- return "", errors.New("missing key in the form")
- }
- return key, nil
- }
-}
-
-// keyFromCookie returns a `keyExtractor` that extracts key from the form.
-func keyFromCookie(cookieName string) keyExtractor {
- return func(c echo.Context) (string, error) {
- key, err := c.Cookie(cookieName)
- if err != nil {
- return "", fmt.Errorf("missing key in cookies: %w", err)
+ return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
- return key.Value, nil
}
}
diff --git a/vendor/github.com/labstack/echo/v4/middleware/middleware.go b/vendor/github.com/labstack/echo/v4/middleware/middleware.go
index a7ad73a5..f250ca49 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/middleware.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/middleware.go
@@ -12,10 +12,10 @@ import (
type (
// Skipper defines a function to skip middleware. Returning true skips processing
// the middleware.
- Skipper func(echo.Context) bool
+ Skipper func(c echo.Context) bool
// BeforeFunc defines a function which is executed just before the middleware.
- BeforeFunc func(echo.Context)
+ BeforeFunc func(c echo.Context)
)
func captureTokens(pattern *regexp.Regexp, input string) *strings.Replacer {
diff --git a/vendor/github.com/labstack/echo/v4/middleware/recover.go b/vendor/github.com/labstack/echo/v4/middleware/recover.go
index 0dbe740d..a621a9ef 100644
--- a/vendor/github.com/labstack/echo/v4/middleware/recover.go
+++ b/vendor/github.com/labstack/echo/v4/middleware/recover.go
@@ -9,6 +9,9 @@ import (
)
type (
+ // LogErrorFunc defines a function for custom logging in the middleware.
+ LogErrorFunc func(c echo.Context, err error, stack []byte) error
+
// RecoverConfig defines the config for Recover middleware.
RecoverConfig struct {
// Skipper defines a function to skip middleware.
@@ -30,6 +33,10 @@ type (
// LogLevel is log level to printing stack trace.
// Optional. Default value 0 (Print).
LogLevel log.Lvl
+
+ // LogErrorFunc defines a function for custom logging in the middleware.
+ // If it's set you don't need to provide LogLevel for config.
+ LogErrorFunc LogErrorFunc
}
)
@@ -41,6 +48,7 @@ var (
DisableStackAll: false,
DisablePrintStack: false,
LogLevel: 0,
+ LogErrorFunc: nil,
}
)
@@ -73,9 +81,18 @@ func RecoverWithConfig(config RecoverConfig) echo.MiddlewareFunc {
if !ok {
err = fmt.Errorf("%v", r)
}
- stack := make([]byte, config.StackSize)
- length := runtime.Stack(stack, !config.DisableStackAll)
+ var stack []byte
+ var length int
+
if !config.DisablePrintStack {
+ stack = make([]byte, config.StackSize)
+ length = runtime.Stack(stack, !config.DisableStackAll)
+ stack = stack[:length]
+ }
+
+ if config.LogErrorFunc != nil {
+ err = config.LogErrorFunc(c, err, stack)
+ } else if !config.DisablePrintStack {
msg := fmt.Sprintf("[PANIC RECOVER] %v %s\n", err, stack[:length])
switch config.LogLevel {
case log.DEBUG:
diff --git a/vendor/github.com/labstack/echo/v4/router.go b/vendor/github.com/labstack/echo/v4/router.go
index dc93e29c..a1de2d6e 100644
--- a/vendor/github.com/labstack/echo/v4/router.go
+++ b/vendor/github.com/labstack/echo/v4/router.go
@@ -1,6 +1,7 @@
package echo
import (
+ "bytes"
"net/http"
)
@@ -31,17 +32,18 @@ type (
kind uint8
children []*node
methodHandler struct {
- connect HandlerFunc
- delete HandlerFunc
- get HandlerFunc
- head HandlerFunc
- options HandlerFunc
- patch HandlerFunc
- post HandlerFunc
- propfind HandlerFunc
- put HandlerFunc
- trace HandlerFunc
- report HandlerFunc
+ connect HandlerFunc
+ delete HandlerFunc
+ get HandlerFunc
+ head HandlerFunc
+ options HandlerFunc
+ patch HandlerFunc
+ post HandlerFunc
+ propfind HandlerFunc
+ put HandlerFunc
+ trace HandlerFunc
+ report HandlerFunc
+ allowHeader string
}
)
@@ -68,6 +70,51 @@ func (m *methodHandler) isHandler() bool {
m.report != nil
}
+func (m *methodHandler) updateAllowHeader() {
+ buf := new(bytes.Buffer)
+ buf.WriteString(http.MethodOptions)
+
+ if m.connect != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodConnect)
+ }
+ if m.delete != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodDelete)
+ }
+ if m.get != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodGet)
+ }
+ if m.head != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodHead)
+ }
+ if m.patch != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodPatch)
+ }
+ if m.post != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodPost)
+ }
+ if m.propfind != nil {
+ buf.WriteString(", PROPFIND")
+ }
+ if m.put != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodPut)
+ }
+ if m.trace != nil {
+ buf.WriteString(", ")
+ buf.WriteString(http.MethodTrace)
+ }
+ if m.report != nil {
+ buf.WriteString(", REPORT")
+ }
+ m.allowHeader = buf.String()
+}
+
// NewRouter returns a new Router instance.
func NewRouter(e *Echo) *Router {
return &Router{
@@ -326,6 +373,7 @@ func (n *node) addHandler(method string, h HandlerFunc) {
n.methodHandler.report = h
}
+ n.methodHandler.updateAllowHeader()
if h != nil {
n.isHandler = true
} else {
@@ -362,13 +410,14 @@ func (n *node) findHandler(method string) HandlerFunc {
}
}
-func (n *node) checkMethodNotAllowed() HandlerFunc {
- for _, m := range methods {
- if h := n.findHandler(m); h != nil {
- return MethodNotAllowedHandler
- }
+func optionsMethodHandler(allowMethods string) func(c Context) error {
+ return func(c Context) error {
+ // Note: we are not handling most of the CORS headers here. CORS is handled by CORS middleware
+ // 'OPTIONS' method RFC: https://httpwg.org/specs/rfc7231.html#OPTIONS
+ // 'Allow' header RFC: https://datatracker.ietf.org/doc/html/rfc7231#section-7.4.1
+ c.Response().Header().Add(HeaderAllow, allowMethods)
+ return c.NoContent(http.StatusNoContent)
}
- return NotFoundHandler
}
// Find lookup a handler registered for method and path. It also parses URL for path
@@ -563,10 +612,16 @@ func (r *Router) Find(method, path string, c Context) {
// use previous match as basis. although we have no matching handler we have path match.
// so we can send http.StatusMethodNotAllowed (405) instead of http.StatusNotFound (404)
currentNode = previousBestMatchNode
- ctx.handler = currentNode.checkMethodNotAllowed()
+
+ ctx.handler = NotFoundHandler
+ if currentNode.isHandler {
+ ctx.Set(ContextKeyHeaderAllow, currentNode.methodHandler.allowHeader)
+ ctx.handler = MethodNotAllowedHandler
+ if method == http.MethodOptions {
+ ctx.handler = optionsMethodHandler(currentNode.methodHandler.allowHeader)
+ }
+ }
}
ctx.path = currentNode.ppath
ctx.pnames = currentNode.pnames
-
- return
}
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/NOTICE.txt b/vendor/github.com/mattermost/mattermost-server/v6/NOTICE.txt
index 0d3d8dd9..3f186ef7 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/NOTICE.txt
+++ b/vendor/github.com/mattermost/mattermost-server/v6/NOTICE.txt
@@ -4494,7 +4494,7 @@ SOFTWARE.
This product contains 'archiver' by Matthew Holt
-A library to handle direferen archive files (zip, rar, tar.gz...)
+A library to handle different archive files (zip, rar, tar.gz...)
* HOMEPAGE:
* https://github.com/mholt/archiver
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/channel.go b/vendor/github.com/mattermost/mattermost-server/v6/model/channel.go
index 20604700..dfa40347 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/channel.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/channel.go
@@ -144,9 +144,9 @@ type ChannelSearchOpts struct {
}
type ChannelMemberCountByGroup struct {
- GroupId string `db:"-" json:"group_id"`
- ChannelMemberCount int64 `db:"-" json:"channel_member_count"`
- ChannelMemberTimezonesCount int64 `db:"-" json:"channel_member_timezones_count"`
+ GroupId string `json:"group_id"`
+ ChannelMemberCount int64 `json:"channel_member_count"`
+ ChannelMemberTimezonesCount int64 `json:"channel_member_timezones_count"`
}
type ChannelOption func(channel *Channel)
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/channel_count.go b/vendor/github.com/mattermost/mattermost-server/v6/model/channel_count.go
index 25329a15..17cea756 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/channel_count.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/channel_count.go
@@ -17,7 +17,7 @@ type ChannelCounts struct {
}
func (o *ChannelCounts) Etag() string {
- // we don't include CountsRoot in ETag calculation, since it's a deriviative
+ // we don't include CountsRoot in ETag calculation, since it's a derivative
ids := []string{}
for id := range o.Counts {
ids = append(ids, id)
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/client4.go b/vendor/github.com/mattermost/mattermost-server/v6/model/client4.go
index dd9de4d0..d4213d15 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/client4.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/client4.go
@@ -1978,7 +1978,7 @@ func (c *Client4) GetBotsIncludeDeleted(page, perPage int, etag string) ([]*Bot,
return bots, BuildResponse(r), nil
}
-// GetBotsOrphaned fetches the given page of bots, only including orphanded bots.
+// GetBotsOrphaned fetches the given page of bots, only including orphaned bots.
func (c *Client4) GetBotsOrphaned(page, perPage int, etag string) ([]*Bot, *Response, error) {
query := fmt.Sprintf("?page=%v&per_page=%v&only_orphaned="+c.boolString(true), page, perPage)
r, err := c.DoAPIGet(c.botsRoute()+query, etag)
@@ -4438,6 +4438,9 @@ func (c *Client4) UpdateConfig(config *Config) (*Config, *Response, error) {
}
// MigrateConfig will migrate existing config to the new one.
+// DEPRECATED: The config migrate API has been moved to be a purely
+// mmctl --local endpoint. This method will be removed in a
+// future major release.
func (c *Client4) MigrateConfig(from, to string) (*Response, error) {
m := make(map[string]string, 2)
m["from"] = from
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/cloud.go b/vendor/github.com/mattermost/mattermost-server/v6/model/cloud.go
index 7c63c138..90fc7f94 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/cloud.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/cloud.go
@@ -70,6 +70,7 @@ type StripeSetupIntent struct {
// ConfirmPaymentMethodRequest contains the fields for the customer payment update API.
type ConfirmPaymentMethodRequest struct {
StripeSetupIntentID string `json:"stripe_setup_intent_id"`
+ SubscriptionID string `json:"subscription_id"`
}
// Customer model represents a customer on the system.
@@ -137,24 +138,25 @@ func (s *Subscription) GetWorkSpaceNameFromDNS() string {
// Invoice model represents a cloud invoice
type Invoice struct {
- ID string `json:"id"`
- Number string `json:"number"`
- CreateAt int64 `json:"create_at"`
- Total int64 `json:"total"`
- Tax int64 `json:"tax"`
- Status string `json:"status"`
- Description string `json:"description"`
- PeriodStart int64 `json:"period_start"`
- PeriodEnd int64 `json:"period_end"`
- SubscriptionID string `json:"subscription_id"`
- Items []*InvoiceLineItem `json:"line_items"`
+ ID string `json:"id"`
+ Number string `json:"number"`
+ CreateAt int64 `json:"create_at"`
+ Total int64 `json:"total"`
+ Tax int64 `json:"tax"`
+ Status string `json:"status"`
+ Description string `json:"description"`
+ PeriodStart int64 `json:"period_start"`
+ PeriodEnd int64 `json:"period_end"`
+ SubscriptionID string `json:"subscription_id"`
+ Items []*InvoiceLineItem `json:"line_items"`
+ CurrentProductName string `json:"current_product_name"`
}
// InvoiceLineItem model represents a cloud invoice lineitem tied to an invoice.
type InvoiceLineItem struct {
PriceID string `json:"price_id"`
Total int64 `json:"total"`
- Quantity int64 `json:"quantity"`
+ Quantity float64 `json:"quantity"`
PricePerUnit int64 `json:"price_per_unit"`
Description string `json:"description"`
Type string `json:"type"`
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/config.go b/vendor/github.com/mattermost/mattermost-server/v6/model/config.go
index bec5afbe..d70b06b5 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/config.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/config.go
@@ -126,7 +126,7 @@ const (
EmailSettingsDefaultFeedbackOrganization = ""
- SupportSettingsDefaultTermsOfServiceLink = "https://mattermost.com/terms-of-service/"
+ SupportSettingsDefaultTermsOfServiceLink = "https://mattermost.com/terms-of-use/"
SupportSettingsDefaultPrivacyPolicyLink = "https://mattermost.com/privacy-policy/"
SupportSettingsDefaultAboutLink = "https://about.mattermost.com/default-about/"
SupportSettingsDefaultHelpLink = "https://about.mattermost.com/default-help/"
@@ -202,6 +202,7 @@ const (
DataRetentionSettingsDefaultMessageRetentionDays = 365
DataRetentionSettingsDefaultFileRetentionDays = 365
+ DataRetentionSettingsDefaultBoardsRetentionDays = 365
DataRetentionSettingsDefaultDeletionJobStartTime = "02:00"
DataRetentionSettingsDefaultBatchSize = 3000
@@ -771,7 +772,7 @@ func (s *ServiceSettings) SetDefaults(isUpdate bool) {
}
if s.ThreadAutoFollow == nil {
- s.ThreadAutoFollow = NewBool(true)
+ s.ThreadAutoFollow = NewBool(false)
}
if s.CollapsedThreads == nil {
@@ -1074,19 +1075,20 @@ type ReplicaLagSettings struct {
}
type SqlSettings struct {
- DriverName *string `access:"environment_database,write_restrictable,cloud_restrictable"`
- DataSource *string `access:"environment_database,write_restrictable,cloud_restrictable"` // telemetry: none
- DataSourceReplicas []string `access:"environment_database,write_restrictable,cloud_restrictable"`
- DataSourceSearchReplicas []string `access:"environment_database,write_restrictable,cloud_restrictable"`
- MaxIdleConns *int `access:"environment_database,write_restrictable,cloud_restrictable"`
- ConnMaxLifetimeMilliseconds *int `access:"environment_database,write_restrictable,cloud_restrictable"`
- ConnMaxIdleTimeMilliseconds *int `access:"environment_database,write_restrictable,cloud_restrictable"`
- MaxOpenConns *int `access:"environment_database,write_restrictable,cloud_restrictable"`
- Trace *bool `access:"environment_database,write_restrictable,cloud_restrictable"`
- AtRestEncryptKey *string `access:"environment_database,write_restrictable,cloud_restrictable"` // telemetry: none
- QueryTimeout *int `access:"environment_database,write_restrictable,cloud_restrictable"`
- DisableDatabaseSearch *bool `access:"environment_database,write_restrictable,cloud_restrictable"`
- ReplicaLagSettings []*ReplicaLagSettings `access:"environment_database,write_restrictable,cloud_restrictable"` // telemetry: none
+ DriverName *string `access:"environment_database,write_restrictable,cloud_restrictable"`
+ DataSource *string `access:"environment_database,write_restrictable,cloud_restrictable"` // telemetry: none
+ DataSourceReplicas []string `access:"environment_database,write_restrictable,cloud_restrictable"`
+ DataSourceSearchReplicas []string `access:"environment_database,write_restrictable,cloud_restrictable"`
+ MaxIdleConns *int `access:"environment_database,write_restrictable,cloud_restrictable"`
+ ConnMaxLifetimeMilliseconds *int `access:"environment_database,write_restrictable,cloud_restrictable"`
+ ConnMaxIdleTimeMilliseconds *int `access:"environment_database,write_restrictable,cloud_restrictable"`
+ MaxOpenConns *int `access:"environment_database,write_restrictable,cloud_restrictable"`
+ Trace *bool `access:"environment_database,write_restrictable,cloud_restrictable"`
+ AtRestEncryptKey *string `access:"environment_database,write_restrictable,cloud_restrictable"` // telemetry: none
+ QueryTimeout *int `access:"environment_database,write_restrictable,cloud_restrictable"`
+ DisableDatabaseSearch *bool `access:"environment_database,write_restrictable,cloud_restrictable"`
+ MigrationsStatementTimeoutSeconds *int `access:"environment_database,write_restrictable,cloud_restrictable"`
+ ReplicaLagSettings []*ReplicaLagSettings `access:"environment_database,write_restrictable,cloud_restrictable"` // telemetry: none
}
func (s *SqlSettings) SetDefaults(isUpdate bool) {
@@ -1144,6 +1146,10 @@ func (s *SqlSettings) SetDefaults(isUpdate bool) {
s.DisableDatabaseSearch = NewBool(false)
}
+ if s.MigrationsStatementTimeoutSeconds == nil {
+ s.MigrationsStatementTimeoutSeconds = NewInt(100000)
+ }
+
if s.ReplicaLagSettings == nil {
s.ReplicaLagSettings = []*ReplicaLagSettings{}
}
@@ -2581,8 +2587,10 @@ func (bs *BleveSettings) SetDefaults() {
type DataRetentionSettings struct {
EnableMessageDeletion *bool `access:"compliance_data_retention_policy"`
EnableFileDeletion *bool `access:"compliance_data_retention_policy"`
+ EnableBoardsDeletion *bool `access:"compliance_data_retention_policy"`
MessageRetentionDays *int `access:"compliance_data_retention_policy"`
FileRetentionDays *int `access:"compliance_data_retention_policy"`
+ BoardsRetentionDays *int `access:"compliance_data_retention_policy"`
DeletionJobStartTime *string `access:"compliance_data_retention_policy"`
BatchSize *int `access:"compliance_data_retention_policy"`
}
@@ -2596,6 +2604,10 @@ func (s *DataRetentionSettings) SetDefaults() {
s.EnableFileDeletion = NewBool(false)
}
+ if s.EnableBoardsDeletion == nil {
+ s.EnableBoardsDeletion = NewBool(false)
+ }
+
if s.MessageRetentionDays == nil {
s.MessageRetentionDays = NewInt(DataRetentionSettingsDefaultMessageRetentionDays)
}
@@ -2604,6 +2616,10 @@ func (s *DataRetentionSettings) SetDefaults() {
s.FileRetentionDays = NewInt(DataRetentionSettingsDefaultFileRetentionDays)
}
+ if s.BoardsRetentionDays == nil {
+ s.BoardsRetentionDays = NewInt(DataRetentionSettingsDefaultBoardsRetentionDays)
+ }
+
if s.DeletionJobStartTime == nil {
s.DeletionJobStartTime = NewString(DataRetentionSettingsDefaultDeletionJobStartTime)
}
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/data_retention_policy.go b/vendor/github.com/mattermost/mattermost-server/v6/model/data_retention_policy.go
index 0a1d318e..32102517 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/data_retention_policy.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/data_retention_policy.go
@@ -6,8 +6,10 @@ package model
type GlobalRetentionPolicy struct {
MessageDeletionEnabled bool `json:"message_deletion_enabled"`
FileDeletionEnabled bool `json:"file_deletion_enabled"`
+ BoardsDeletionEnabled bool `json:"boards_deletion_enabled"`
MessageRetentionCutoff int64 `json:"message_retention_cutoff"`
FileRetentionCutoff int64 `json:"file_retention_cutoff"`
+ BoardsRetentionCutoff int64 `json:"boards_retention_cutoff"`
}
type RetentionPolicy struct {
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/feature_flags.go b/vendor/github.com/mattermost/mattermost-server/v6/model/feature_flags.go
index a2d53e34..6998a03a 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/feature_flags.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/feature_flags.go
@@ -47,9 +47,6 @@ type FeatureFlags struct {
// Determine whether when a user gets created, they'll have noisy notifications e.g. Send desktop notifications for all activity
NewAccountNoisy bool
- // Enable Boards Unfurl Preview
- BoardsUnfurl bool
-
// Enable Calls plugin support in the mobile app
CallsMobile bool
@@ -70,6 +67,14 @@ type FeatureFlags struct {
// A/B test for whether radio buttons or toggle button is more effective in in-screen invite to team modal ("none", "toggle")
InviteToTeam string
+
+ // Enable inline post editing
+ InlinePostEditing bool
+
+ // Enable DataRetention for Boards
+ BoardsDataRetention bool
+
+ NormalizeLdapDNs bool
}
func (f *FeatureFlags) SetDefaults() {
@@ -86,7 +91,6 @@ func (f *FeatureFlags) SetDefaults() {
f.GlobalHeader = true
f.AddChannelButton = "by_team_name"
f.NewAccountNoisy = false
- f.BoardsUnfurl = true
f.CallsMobile = false
f.AutoTour = "none"
f.BoardsFeatureFlags = ""
@@ -94,6 +98,9 @@ func (f *FeatureFlags) SetDefaults() {
f.GuidedChannelCreation = false
f.ResendInviteEmailInterval = ""
f.InviteToTeam = "none"
+ f.InlinePostEditing = false
+ f.BoardsDataRetention = false
+ f.NormalizeLdapDNs = false
}
func (f *FeatureFlags) Plugins() map[string]string {
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/post.go b/vendor/github.com/mattermost/mattermost-server/v6/model/post.go
index d13fef0a..87c1f338 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/post.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/post.go
@@ -6,6 +6,7 @@ package model
import (
"encoding/json"
"errors"
+ "io"
"net/http"
"regexp"
"sort"
@@ -227,6 +228,11 @@ func (o *Post) ToJSON() (string, error) {
return string(b), err
}
+func (o *Post) EncodeJSON(w io.Writer) error {
+ o.StripActionIntegrations()
+ return json.NewEncoder(w).Encode(o)
+}
+
type GetPostsSinceOptions struct {
UserId string
ChannelId string
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/post_list.go b/vendor/github.com/mattermost/mattermost-server/v6/model/post_list.go
index 933d1f8f..bb28063a 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/post_list.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/post_list.go
@@ -5,6 +5,7 @@ package model
import (
"encoding/json"
+ "io"
"sort"
)
@@ -80,6 +81,11 @@ func (o *PostList) ToJSON() (string, error) {
return string(b), err
}
+func (o *PostList) EncodeJSON(w io.Writer) error {
+ o.StripActionIntegrations()
+ return json.NewEncoder(w).Encode(o)
+}
+
func (o *PostList) MakeNonNil() {
if o.Order == nil {
o.Order = make([]string, 0)
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/post_metadata.go b/vendor/github.com/mattermost/mattermost-server/v6/model/post_metadata.go
index 0f9e61d3..6ccc1ebf 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/post_metadata.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/post_metadata.go
@@ -14,7 +14,7 @@ type PostMetadata struct {
// Files holds information about the file attachments on the post.
Files []*FileInfo `json:"files,omitempty"`
- // Images holds the dimensions of all external images in the post as a map of the image URL to its diemsnions.
+ // Images holds the dimensions of all external images in the post as a map of the image URL to its dimensions.
// This includes image embeds (when the message contains a plaintext link to an image), Markdown images, images
// contained in the OpenGraph metadata, and images contained in message attachments. It does not contain
// the dimensions of any file attachments as those are stored in FileInfos.
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/post_search_results.go b/vendor/github.com/mattermost/mattermost-server/v6/model/post_search_results.go
index 92e044a7..a3afc723 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/post_search_results.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/post_search_results.go
@@ -5,6 +5,7 @@ package model
import (
"encoding/json"
+ "io"
)
type PostSearchMatches map[string][]string
@@ -27,3 +28,8 @@ func (o *PostSearchResults) ToJSON() (string, error) {
b, err := json.Marshal(&copy)
return string(b), err
}
+
+func (o *PostSearchResults) EncodeJSON(w io.Writer) error {
+ o.PostList.StripActionIntegrations()
+ return json.NewEncoder(w).Encode(o)
+}
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/role.go b/vendor/github.com/mattermost/mattermost-server/v6/model/role.go
index b8d75d4b..0dcb405c 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/role.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/role.go
@@ -558,7 +558,7 @@ func (r *Role) GetChannelModeratedPermissions(channelType ChannelType) map[strin
return moderatedPermissions
}
-// RolePatchFromChannelModerationsPatch Creates and returns a RolePatch based on a slice of ChannelModerationPatchs, roleName is expected to be either "members" or "guests".
+// RolePatchFromChannelModerationsPatch Creates and returns a RolePatch based on a slice of ChannelModerationPatches, roleName is expected to be either "members" or "guests".
func (r *Role) RolePatchFromChannelModerationsPatch(channelModerationsPatch []*ChannelModerationPatch, roleName string) *RolePatch {
permissionsToAddToPatch := make(map[string]bool)
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/session.go b/vendor/github.com/mattermost/mattermost-server/v6/model/session.go
index 72f8d646..36955583 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/session.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/session.go
@@ -15,6 +15,7 @@ const (
SessionCookieToken = "MMAUTHTOKEN"
SessionCookieUser = "MMUSERID"
SessionCookieCsrf = "MMCSRF"
+ SessionCookieCloudUrl = "MMCLOUDURL"
SessionCacheSize = 35000
SessionPropPlatform = "platform"
SessionPropOs = "os"
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/team_member.go b/vendor/github.com/mattermost/mattermost-server/v6/model/team_member.go
index cec0a6a6..70fd40c4 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/team_member.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/team_member.go
@@ -69,6 +69,7 @@ type TeamMembersGetOptions struct {
ViewRestrictions *ViewUsersRestrictions
}
+//msgp:ignore TeamInviteReminderData
type TeamInviteReminderData struct {
Interval string
}
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/user.go b/vendor/github.com/mattermost/mattermost-server/v6/model/user.go
index 0b691c6c..5035f9a5 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/user.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/user.go
@@ -703,7 +703,7 @@ func IsValidUserRoles(userRoles string) bool {
return true
}
-// Make sure you acually want to use this function. In context.go there are functions to check permissions
+// Make sure you actually want to use this function. In context.go there are functions to check permissions
// This function should not be used to check permissions.
func (u *User) IsGuest() bool {
return IsInRole(u.Roles, SystemGuestRoleId)
@@ -713,13 +713,13 @@ func (u *User) IsSystemAdmin() bool {
return IsInRole(u.Roles, SystemAdminRoleId)
}
-// Make sure you acually want to use this function. In context.go there are functions to check permissions
+// Make sure you actually want to use this function. In context.go there are functions to check permissions
// This function should not be used to check permissions.
func (u *User) IsInRole(inRole string) bool {
return IsInRole(u.Roles, inRole)
}
-// Make sure you acually want to use this function. In context.go there are functions to check permissions
+// Make sure you actually want to use this function. In context.go there are functions to check permissions
// This function should not be used to check permissions.
func IsInRole(userRoles string, inRole string) bool {
roles := strings.Split(userRoles, " ")
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/user_serial_gen.go b/vendor/github.com/mattermost/mattermost-server/v6/model/user_serial_gen.go
index fb40b577..3bcb3cf7 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/user_serial_gen.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/user_serial_gen.go
@@ -17,8 +17,8 @@ func (z *User) DecodeMsg(dc *msgp.Reader) (err error) {
err = msgp.WrapError(err)
return
}
- if zb0001 != 32 {
- err = msgp.ArrayError{Wanted: 32, Got: zb0001}
+ if zb0001 != 33 {
+ err = msgp.ArrayError{Wanted: 33, Got: zb0001}
return
}
z.Id, err = dc.ReadString()
@@ -205,13 +205,18 @@ func (z *User) DecodeMsg(dc *msgp.Reader) (err error) {
err = msgp.WrapError(err, "TermsOfServiceCreateAt")
return
}
+ z.DisableWelcomeEmail, err = dc.ReadBool()
+ if err != nil {
+ err = msgp.WrapError(err, "DisableWelcomeEmail")
+ return
+ }
return
}
// EncodeMsg implements msgp.Encodable
func (z *User) EncodeMsg(en *msgp.Writer) (err error) {
- // array header, size 32
- err = en.Append(0xdc, 0x0, 0x20)
+ // array header, size 33
+ err = en.Append(0xdc, 0x0, 0x21)
if err != nil {
return
}
@@ -389,14 +394,19 @@ func (z *User) EncodeMsg(en *msgp.Writer) (err error) {
err = msgp.WrapError(err, "TermsOfServiceCreateAt")
return
}
+ err = en.WriteBool(z.DisableWelcomeEmail)
+ if err != nil {
+ err = msgp.WrapError(err, "DisableWelcomeEmail")
+ return
+ }
return
}
// MarshalMsg implements msgp.Marshaler
func (z *User) MarshalMsg(b []byte) (o []byte, err error) {
o = msgp.Require(b, z.Msgsize())
- // array header, size 32
- o = append(o, 0xdc, 0x0, 0x20)
+ // array header, size 33
+ o = append(o, 0xdc, 0x0, 0x21)
o = msgp.AppendString(o, z.Id)
o = msgp.AppendInt64(o, z.CreateAt)
o = msgp.AppendInt64(o, z.UpdateAt)
@@ -449,6 +459,7 @@ func (z *User) MarshalMsg(b []byte) (o []byte, err error) {
o = msgp.AppendInt64(o, z.BotLastIconUpdate)
o = msgp.AppendString(o, z.TermsOfServiceId)
o = msgp.AppendInt64(o, z.TermsOfServiceCreateAt)
+ o = msgp.AppendBool(o, z.DisableWelcomeEmail)
return
}
@@ -460,8 +471,8 @@ func (z *User) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err)
return
}
- if zb0001 != 32 {
- err = msgp.ArrayError{Wanted: 32, Got: zb0001}
+ if zb0001 != 33 {
+ err = msgp.ArrayError{Wanted: 33, Got: zb0001}
return
}
z.Id, bts, err = msgp.ReadStringBytes(bts)
@@ -646,6 +657,11 @@ func (z *User) UnmarshalMsg(bts []byte) (o []byte, err error) {
err = msgp.WrapError(err, "TermsOfServiceCreateAt")
return
}
+ z.DisableWelcomeEmail, bts, err = msgp.ReadBoolBytes(bts)
+ if err != nil {
+ err = msgp.WrapError(err, "DisableWelcomeEmail")
+ return
+ }
o = bts
return
}
@@ -664,7 +680,7 @@ func (z *User) Msgsize() (s int) {
} else {
s += msgp.StringPrefixSize + len(*z.RemoteId)
}
- s += msgp.Int64Size + msgp.BoolSize + msgp.StringPrefixSize + len(z.BotDescription) + msgp.Int64Size + msgp.StringPrefixSize + len(z.TermsOfServiceId) + msgp.Int64Size
+ s += msgp.Int64Size + msgp.BoolSize + msgp.StringPrefixSize + len(z.BotDescription) + msgp.Int64Size + msgp.StringPrefixSize + len(z.TermsOfServiceId) + msgp.Int64Size + msgp.BoolSize
return
}
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/utils.go b/vendor/github.com/mattermost/mattermost-server/v6/model/utils.go
index e9170588..c88d9100 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/utils.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/utils.go
@@ -76,7 +76,12 @@ func (sa StringArray) Equals(input StringArray) bool {
// Value converts StringArray to database value
func (sa StringArray) Value() (driver.Value, error) {
- return json.Marshal(sa)
+ j, err := json.Marshal(sa)
+ if err != nil {
+ return nil, err
+ }
+ // non utf8 characters are not supported https://mattermost.atlassian.net/browse/MM-41066
+ return string(j), err
}
// Scan converts database column value to StringArray
@@ -117,6 +122,16 @@ func (m *StringMap) Scan(value interface{}) error {
return errors.New("received value is neither a byte slice nor string")
}
+// Value converts StringMap to database value
+func (m StringMap) Value() (driver.Value, error) {
+ j, err := json.Marshal(m)
+ if err != nil {
+ return nil, err
+ }
+ // non utf8 characters are not supported https://mattermost.atlassian.net/browse/MM-41066
+ return string(j), err
+}
+
func (si *StringInterface) Scan(value interface{}) error {
if value == nil {
return nil
@@ -135,6 +150,16 @@ func (si *StringInterface) Scan(value interface{}) error {
return errors.New("received value is neither a byte slice nor string")
}
+// Value converts StringInterface to database value
+func (si StringInterface) Value() (driver.Value, error) {
+ j, err := json.Marshal(si)
+ if err != nil {
+ return nil, err
+ }
+ // non utf8 characters are not supported https://mattermost.atlassian.net/browse/MM-41066
+ return string(j), err
+}
+
var translateFunc i18n.TranslateFunc
var translateFuncOnce sync.Once
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/model/version.go b/vendor/github.com/mattermost/mattermost-server/v6/model/version.go
index 6020d5f8..673d4be9 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/model/version.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/model/version.go
@@ -13,6 +13,9 @@ import (
// It should be maintained in chronological order with most current
// release at the front of the list.
var versions = []string{
+ "6.4.2",
+ "6.4.1",
+ "6.4.0",
"6.3.0",
"6.2.0",
"6.1.0",
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/shared/filestore/s3_overrides.go b/vendor/github.com/mattermost/mattermost-server/v6/shared/filestore/s3_overrides.go
index e7b29b98..697809ee 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/shared/filestore/s3_overrides.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/shared/filestore/s3_overrides.go
@@ -23,7 +23,7 @@ type customTransport struct {
// RoundTrip implements the http.Roundtripper interface.
func (t *customTransport) RoundTrip(req *http.Request) (*http.Response, error) {
- // Rountrippers should not modify the original request.
+ // Roundtrippers should not modify the original request.
newReq := req.Clone(context.Background())
*newReq.URL = *req.URL
req.URL.Scheme = t.scheme
diff --git a/vendor/github.com/mattermost/mattermost-server/v6/shared/mlog/mlog.go b/vendor/github.com/mattermost/mattermost-server/v6/shared/mlog/mlog.go
index 0f4cc1fe..9b4bb820 100644
--- a/vendor/github.com/mattermost/mattermost-server/v6/shared/mlog/mlog.go
+++ b/vendor/github.com/mattermost/mattermost-server/v6/shared/mlog/mlog.go
@@ -352,7 +352,7 @@ func (l *Logger) RedirectStdLog(level Level, fields ...Field) func() {
// RemoveTargets safely removes one or more targets based on the filtering method.
// `f` should return true to delete the target, false to keep it.
// When removing a target, best effort is made to write any queued log records before
-// closing, with cxt determining how much time can be spent in total.
+// closing, with ctx determining how much time can be spent in total.
// Note, keep the timeout short since this method blocks certain logging operations.
func (l *Logger) RemoveTargets(ctx context.Context, f func(ti TargetInfo) bool) error {
return l.log.Logr().RemoveTargets(ctx, f)
@@ -379,7 +379,7 @@ func (l *Logger) Flush() error {
return l.log.Logr().FlushWithTimeout(ctx)
}
-// Flush forces all targets to write out any queued log records with the specfified timeout.
+// Flush forces all targets to write out any queued log records with the specified timeout.
func (l *Logger) FlushWithTimeout(ctx context.Context) error {
return l.log.Logr().FlushWithTimeout(ctx)
}
diff --git a/vendor/github.com/slack-go/slack/README.md b/vendor/github.com/slack-go/slack/README.md
index dbf73d4e..39b04ce8 100644
--- a/vendor/github.com/slack-go/slack/README.md
+++ b/vendor/github.com/slack-go/slack/README.md
@@ -1,9 +1,9 @@
Slack API in Go [![Go Reference](https://pkg.go.dev/badge/github.com/slack-go/slack.svg)](https://pkg.go.dev/github.com/slack-go/slack)
===============
-This is the original Slack library for Go created by Norberto Lopes, transferred to a Github organization.
+This is the original Slack library for Go created by Norberto Lopes, transferred to a GitHub organization.
-[![Join the chat at https://gitter.im/go-slack/Lobby](https://badges.gitter.im/go-slack/Lobby.svg)](https://gitter.im/go-slack/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+You can also chat with us on the #slack-go, #slack-go-ja Slack channel on the Gophers Slack.
![logo](logo.png "icon")
@@ -70,8 +70,15 @@ func main() {
}
```
+## Minimal Socket Mode usage:
+
+See https://github.com/slack-go/slack/blob/master/examples/socketmode/socketmode.go
+
+
## Minimal RTM usage:
+As mentioned in https://api.slack.com/rtm - for most applications, Socket Mode is a better way to communicate with Slack.
+
See https://github.com/slack-go/slack/blob/master/examples/websocket/websocket.go
diff --git a/vendor/github.com/slack-go/slack/block_conv.go b/vendor/github.com/slack-go/slack/block_conv.go
index c5378b60..1a2c57e9 100644
--- a/vendor/github.com/slack-go/slack/block_conv.go
+++ b/vendor/github.com/slack-go/slack/block_conv.go
@@ -2,9 +2,8 @@ package slack
import (
"encoding/json"
+ "errors"
"fmt"
-
- "github.com/pkg/errors"
)
type sumtype struct {
diff --git a/vendor/github.com/slack-go/slack/messages.go b/vendor/github.com/slack-go/slack/messages.go
index 2f05f6d7..2cc31d5b 100644
--- a/vendor/github.com/slack-go/slack/messages.go
+++ b/vendor/github.com/slack-go/slack/messages.go
@@ -103,6 +103,7 @@ type Msg struct {
ReplyCount int `json:"reply_count,omitempty"`
Replies []Reply `json:"replies,omitempty"`
ParentUserId string `json:"parent_user_id,omitempty"`
+ LatestReply string `json:"latest_reply,omitempty"`
// file_share, file_comment, file_mention
Files []File `json:"files,omitempty"`
diff --git a/vendor/github.com/slack-go/slack/oauth.go b/vendor/github.com/slack-go/slack/oauth.go
index d9aca5f3..94b6546d 100644
--- a/vendor/github.com/slack-go/slack/oauth.go
+++ b/vendor/github.com/slack-go/slack/oauth.go
@@ -61,10 +61,12 @@ type OAuthV2ResponseEnterprise struct {
// OAuthV2ResponseAuthedUser ...
type OAuthV2ResponseAuthedUser struct {
- ID string `json:"id"`
- Scope string `json:"scope"`
- AccessToken string `json:"access_token"`
- TokenType string `json:"token_type"`
+ ID string `json:"id"`
+ Scope string `json:"scope"`
+ AccessToken string `json:"access_token"`
+ ExpiresIn int `json:"expires_in"`
+ RefreshToken string `json:"refresh_token"`
+ TokenType string `json:"token_type"`
}
// GetOAuthToken retrieves an AccessToken
diff --git a/vendor/github.com/slack-go/slack/webhooks_go112.go b/vendor/github.com/slack-go/slack/webhooks_go112.go
index 4e0db0e4..0eb539ac 100644
--- a/vendor/github.com/slack-go/slack/webhooks_go112.go
+++ b/vendor/github.com/slack-go/slack/webhooks_go112.go
@@ -1,3 +1,4 @@
+//go:build !go1.13
// +build !go1.13
package slack
@@ -6,27 +7,26 @@ import (
"bytes"
"context"
"encoding/json"
+ "fmt"
"net/http"
-
- "github.com/pkg/errors"
)
func PostWebhookCustomHTTPContext(ctx context.Context, url string, httpClient *http.Client, msg *WebhookMessage) error {
raw, err := json.Marshal(msg)
if err != nil {
- return errors.Wrap(err, "marshal failed")
+ return fmt.Errorf("marshal failed: %v", err)
}
req, err := http.NewRequest(http.MethodPost, url, bytes.NewReader(raw))
if err != nil {
- return errors.Wrap(err, "failed new request")
+ return fmt.Errorf("failed new request: %v", err)
}
req = req.WithContext(ctx)
req.Header.Set("Content-Type", "application/json")
resp, err := httpClient.Do(req)
if err != nil {
- return errors.Wrap(err, "failed to post webhook")
+ return fmt.Errorf("failed to post webhook: %v", err)
}
defer resp.Body.Close()
diff --git a/vendor/github.com/slack-go/slack/webhooks_go113.go b/vendor/github.com/slack-go/slack/webhooks_go113.go
index 99c243f5..021eac01 100644
--- a/vendor/github.com/slack-go/slack/webhooks_go113.go
+++ b/vendor/github.com/slack-go/slack/webhooks_go113.go
@@ -1,3 +1,4 @@
+//go:build go1.13
// +build go1.13
package slack
@@ -6,26 +7,25 @@ import (
"bytes"
"context"
"encoding/json"
+ "fmt"
"net/http"
-
- "github.com/pkg/errors"
)
func PostWebhookCustomHTTPContext(ctx context.Context, url string, httpClient *http.Client, msg *WebhookMessage) error {
raw, err := json.Marshal(msg)
if err != nil {
- return errors.Wrap(err, "marshal failed")
+ return fmt.Errorf("marshal failed: %w", err)
}
req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewReader(raw))
if err != nil {
- return errors.Wrap(err, "failed new request")
+ return fmt.Errorf("failed new request: %w", err)
}
req.Header.Set("Content-Type", "application/json")
resp, err := httpClient.Do(req)
if err != nil {
- return errors.Wrap(err, "failed to post webhook")
+ return fmt.Errorf("failed to post webhook: %w", err)
}
defer resp.Body.Close()