saving changes to pb

This commit is contained in:
xuu
2025-03-26 18:49:42 -06:00
parent 41aa46ce83
commit fb10041e71
18 changed files with 1021 additions and 321 deletions

View File

@@ -34,12 +34,6 @@ func DecodeRegistry(b []byte) (twtRegistry, error) {
}
func (r *TwtRegistry) FromLextwt(twt twtRegistry) error {
twters := twt.Twters()
r.Twters = apply(
slices.All(twters),
make([]*Twter, len(twters)),
fromTwter)
preamble := twt.Preamble()
r.Preamble = apply(
slices.All(preamble),
@@ -56,9 +50,6 @@ func (r *TwtRegistry) FromLextwt(twt twtRegistry) error {
}
func (r *TwtRegistry) ToLextwt() twtRegistry {
return lextwt.NewTwtRegistry(
apply(slices.All(r.Twters), make([]*types.Twter, len(r.Twters)), func(c *Twter) *types.Twter {
return c.ToLextwt()
}),
apply(slices.All(r.Preamble), make(lextwt.Comments, len(r.Preamble)), func(c *Comment) *lextwt.Comment {
return c.ToLextwt()
}),
@@ -68,6 +59,57 @@ func (r *TwtRegistry) ToLextwt() twtRegistry {
)
}
type twtFeed interface {
Twter() *types.Twter
Preamble() lextwt.Comments
Twts() types.Twts
WriteTo(w io.Writer) (int64, error)
}
func EncodeFeed(r twtFeed) ([]byte, error) {
o := &TwtFeed{}
o.FromLextwt(r)
return proto.Marshal(o)
}
func DecodeFeed(b []byte) (twtFeed, error) {
o := &TwtFeed{}
err := proto.Unmarshal(b, o)
if err != nil {
return nil, err
}
return o.ToLextwt(), nil
}
func (r *TwtFeed) FromLextwt(twt twtFeed) error {
r.Twter = fromTwter(twt.Twter())
preamble := twt.Preamble()
r.Preamble = apply(
slices.All(preamble),
make([]*Comment, len(preamble)),
fromComment)
twts := twt.Twts()
r.Twts = apply(
slices.All(twts),
make([]*Twt, len(twts)),
fromTwt)
return nil
}
func (r *TwtFeed) ToLextwt() twtFeed {
return lextwt.NewTwtFile(
*r.Twter.ToLextwt(),
apply(slices.All(r.Preamble), make(lextwt.Comments, len(r.Preamble)), func(c *Comment) *lextwt.Comment {
return c.ToLextwt()
}),
apply(slices.All(r.Twts), make(types.Twts, len(r.Twts)), func(c *Twt) types.Twt {
return c.ToLextwt()
}),
)
}
func apply[U, V any](u iter.Seq2[int, U], v []V, fn func(U) V) []V {
for i, u := range u {
v[i] = fn(u)

View File

@@ -67,7 +67,7 @@ func (x Code_Type) Number() protoreflect.EnumNumber {
// Deprecated: Use Code_Type.Descriptor instead.
func (Code_Type) EnumDescriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{3, 0}
return file_lextwt_proto_rawDescGZIP(), []int{5, 0}
}
type Link_Type int32
@@ -122,7 +122,7 @@ func (x Link_Type) Number() protoreflect.EnumNumber {
// Deprecated: Use Link_Type.Descriptor instead.
func (Link_Type) EnumDescriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{7, 0}
return file_lextwt_proto_rawDescGZIP(), []int{9, 0}
}
type LatestTwts struct {
@@ -161,10 +161,45 @@ func (*LatestTwts) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{0}
}
type Pager struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *Pager) Reset() {
*x = Pager{}
mi := &file_lextwt_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Pager) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Pager) ProtoMessage() {}
func (x *Pager) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Pager.ProtoReflect.Descriptor instead.
func (*Pager) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{1}
}
type TwtRegistry struct {
state protoimpl.MessageState `protogen:"open.v1"`
Preamble []*Comment `protobuf:"bytes,1,rep,name=preamble,proto3" json:"preamble,omitempty"`
Twters []*Twter `protobuf:"bytes,2,rep,name=twters,proto3" json:"twters,omitempty"`
Twts []*Twt `protobuf:"bytes,3,rep,name=twts,proto3" json:"twts,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -172,7 +207,7 @@ type TwtRegistry struct {
func (x *TwtRegistry) Reset() {
*x = TwtRegistry{}
mi := &file_lextwt_proto_msgTypes[1]
mi := &file_lextwt_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -184,7 +219,7 @@ func (x *TwtRegistry) String() string {
func (*TwtRegistry) ProtoMessage() {}
func (x *TwtRegistry) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[1]
mi := &file_lextwt_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -197,7 +232,7 @@ func (x *TwtRegistry) ProtoReflect() protoreflect.Message {
// Deprecated: Use TwtRegistry.ProtoReflect.Descriptor instead.
func (*TwtRegistry) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{1}
return file_lextwt_proto_rawDescGZIP(), []int{2}
}
func (x *TwtRegistry) GetPreamble() []*Comment {
@@ -207,14 +242,67 @@ func (x *TwtRegistry) GetPreamble() []*Comment {
return nil
}
func (x *TwtRegistry) GetTwters() []*Twter {
func (x *TwtRegistry) GetTwts() []*Twt {
if x != nil {
return x.Twters
return x.Twts
}
return nil
}
func (x *TwtRegistry) GetTwts() []*Twt {
type TwtFeed struct {
state protoimpl.MessageState `protogen:"open.v1"`
Twter *Twter `protobuf:"bytes,2,opt,name=twter,proto3" json:"twter,omitempty"`
Preamble []*Comment `protobuf:"bytes,1,rep,name=preamble,proto3" json:"preamble,omitempty"`
Twts []*Twt `protobuf:"bytes,3,rep,name=twts,proto3" json:"twts,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *TwtFeed) Reset() {
*x = TwtFeed{}
mi := &file_lextwt_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *TwtFeed) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*TwtFeed) ProtoMessage() {}
func (x *TwtFeed) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use TwtFeed.ProtoReflect.Descriptor instead.
func (*TwtFeed) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{3}
}
func (x *TwtFeed) GetTwter() *Twter {
if x != nil {
return x.Twter
}
return nil
}
func (x *TwtFeed) GetPreamble() []*Comment {
if x != nil {
return x.Preamble
}
return nil
}
func (x *TwtFeed) GetTwts() []*Twt {
if x != nil {
return x.Twts
}
@@ -231,7 +319,7 @@ type BangMention struct {
func (x *BangMention) Reset() {
*x = BangMention{}
mi := &file_lextwt_proto_msgTypes[2]
mi := &file_lextwt_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -243,7 +331,7 @@ func (x *BangMention) String() string {
func (*BangMention) ProtoMessage() {}
func (x *BangMention) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[2]
mi := &file_lextwt_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -256,7 +344,7 @@ func (x *BangMention) ProtoReflect() protoreflect.Message {
// Deprecated: Use BangMention.ProtoReflect.Descriptor instead.
func (*BangMention) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{2}
return file_lextwt_proto_rawDescGZIP(), []int{4}
}
func (x *BangMention) GetName() string {
@@ -283,7 +371,7 @@ type Code struct {
func (x *Code) Reset() {
*x = Code{}
mi := &file_lextwt_proto_msgTypes[3]
mi := &file_lextwt_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -295,7 +383,7 @@ func (x *Code) String() string {
func (*Code) ProtoMessage() {}
func (x *Code) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[3]
mi := &file_lextwt_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -308,7 +396,7 @@ func (x *Code) ProtoReflect() protoreflect.Message {
// Deprecated: Use Code.ProtoReflect.Descriptor instead.
func (*Code) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{3}
return file_lextwt_proto_rawDescGZIP(), []int{5}
}
func (x *Code) GetType() Code_Type {
@@ -336,7 +424,7 @@ type Comment struct {
func (x *Comment) Reset() {
*x = Comment{}
mi := &file_lextwt_proto_msgTypes[4]
mi := &file_lextwt_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -348,7 +436,7 @@ func (x *Comment) String() string {
func (*Comment) ProtoMessage() {}
func (x *Comment) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[4]
mi := &file_lextwt_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -361,7 +449,7 @@ func (x *Comment) ProtoReflect() protoreflect.Message {
// Deprecated: Use Comment.ProtoReflect.Descriptor instead.
func (*Comment) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{4}
return file_lextwt_proto_rawDescGZIP(), []int{6}
}
func (x *Comment) GetComment() string {
@@ -396,7 +484,7 @@ type DateTime struct {
func (x *DateTime) Reset() {
*x = DateTime{}
mi := &file_lextwt_proto_msgTypes[5]
mi := &file_lextwt_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -408,7 +496,7 @@ func (x *DateTime) String() string {
func (*DateTime) ProtoMessage() {}
func (x *DateTime) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[5]
mi := &file_lextwt_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -421,7 +509,7 @@ func (x *DateTime) ProtoReflect() protoreflect.Message {
// Deprecated: Use DateTime.ProtoReflect.Descriptor instead.
func (*DateTime) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{5}
return file_lextwt_proto_rawDescGZIP(), []int{7}
}
func (x *DateTime) GetTimestamp() int64 {
@@ -453,7 +541,7 @@ type LineSeparator struct {
func (x *LineSeparator) Reset() {
*x = LineSeparator{}
mi := &file_lextwt_proto_msgTypes[6]
mi := &file_lextwt_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -465,7 +553,7 @@ func (x *LineSeparator) String() string {
func (*LineSeparator) ProtoMessage() {}
func (x *LineSeparator) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[6]
mi := &file_lextwt_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -478,7 +566,7 @@ func (x *LineSeparator) ProtoReflect() protoreflect.Message {
// Deprecated: Use LineSeparator.ProtoReflect.Descriptor instead.
func (*LineSeparator) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{6}
return file_lextwt_proto_rawDescGZIP(), []int{8}
}
type Link struct {
@@ -493,7 +581,7 @@ type Link struct {
func (x *Link) Reset() {
*x = Link{}
mi := &file_lextwt_proto_msgTypes[7]
mi := &file_lextwt_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -505,7 +593,7 @@ func (x *Link) String() string {
func (*Link) ProtoMessage() {}
func (x *Link) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[7]
mi := &file_lextwt_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -518,7 +606,7 @@ func (x *Link) ProtoReflect() protoreflect.Message {
// Deprecated: Use Link.ProtoReflect.Descriptor instead.
func (*Link) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{7}
return file_lextwt_proto_rawDescGZIP(), []int{9}
}
func (x *Link) GetType() Link_Type {
@@ -559,7 +647,7 @@ type Mention struct {
func (x *Mention) Reset() {
*x = Mention{}
mi := &file_lextwt_proto_msgTypes[8]
mi := &file_lextwt_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -571,7 +659,7 @@ func (x *Mention) String() string {
func (*Mention) ProtoMessage() {}
func (x *Mention) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[8]
mi := &file_lextwt_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -584,7 +672,7 @@ func (x *Mention) ProtoReflect() protoreflect.Message {
// Deprecated: Use Mention.ProtoReflect.Descriptor instead.
func (*Mention) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{8}
return file_lextwt_proto_rawDescGZIP(), []int{10}
}
func (x *Mention) GetName() string {
@@ -611,7 +699,7 @@ type Subject struct {
func (x *Subject) Reset() {
*x = Subject{}
mi := &file_lextwt_proto_msgTypes[9]
mi := &file_lextwt_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -623,7 +711,7 @@ func (x *Subject) String() string {
func (*Subject) ProtoMessage() {}
func (x *Subject) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[9]
mi := &file_lextwt_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -636,7 +724,7 @@ func (x *Subject) ProtoReflect() protoreflect.Message {
// Deprecated: Use Subject.ProtoReflect.Descriptor instead.
func (*Subject) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{9}
return file_lextwt_proto_rawDescGZIP(), []int{11}
}
func (x *Subject) GetSubject() string {
@@ -663,7 +751,7 @@ type Tag struct {
func (x *Tag) Reset() {
*x = Tag{}
mi := &file_lextwt_proto_msgTypes[10]
mi := &file_lextwt_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -675,7 +763,7 @@ func (x *Tag) String() string {
func (*Tag) ProtoMessage() {}
func (x *Tag) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[10]
mi := &file_lextwt_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -688,7 +776,7 @@ func (x *Tag) ProtoReflect() protoreflect.Message {
// Deprecated: Use Tag.ProtoReflect.Descriptor instead.
func (*Tag) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{10}
return file_lextwt_proto_rawDescGZIP(), []int{12}
}
func (x *Tag) GetTag() string {
@@ -714,7 +802,7 @@ type Text struct {
func (x *Text) Reset() {
*x = Text{}
mi := &file_lextwt_proto_msgTypes[11]
mi := &file_lextwt_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -726,7 +814,7 @@ func (x *Text) String() string {
func (*Text) ProtoMessage() {}
func (x *Text) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[11]
mi := &file_lextwt_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -739,7 +827,7 @@ func (x *Text) ProtoReflect() protoreflect.Message {
// Deprecated: Use Text.ProtoReflect.Descriptor instead.
func (*Text) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{11}
return file_lextwt_proto_rawDescGZIP(), []int{13}
}
func (x *Text) GetText() string {
@@ -759,7 +847,7 @@ type Twter struct {
func (x *Twter) Reset() {
*x = Twter{}
mi := &file_lextwt_proto_msgTypes[12]
mi := &file_lextwt_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -771,7 +859,7 @@ func (x *Twter) String() string {
func (*Twter) ProtoMessage() {}
func (x *Twter) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[12]
mi := &file_lextwt_proto_msgTypes[14]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -784,7 +872,7 @@ func (x *Twter) ProtoReflect() protoreflect.Message {
// Deprecated: Use Twter.ProtoReflect.Descriptor instead.
func (*Twter) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{12}
return file_lextwt_proto_rawDescGZIP(), []int{14}
}
func (x *Twter) GetNick() string {
@@ -821,7 +909,7 @@ type Elem struct {
func (x *Elem) Reset() {
*x = Elem{}
mi := &file_lextwt_proto_msgTypes[13]
mi := &file_lextwt_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -833,7 +921,7 @@ func (x *Elem) String() string {
func (*Elem) ProtoMessage() {}
func (x *Elem) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[13]
mi := &file_lextwt_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -846,7 +934,7 @@ func (x *Elem) ProtoReflect() protoreflect.Message {
// Deprecated: Use Elem.ProtoReflect.Descriptor instead.
func (*Elem) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{13}
return file_lextwt_proto_rawDescGZIP(), []int{15}
}
func (x *Elem) GetElem() isElem_Elem {
@@ -1006,7 +1094,7 @@ type Twt struct {
func (x *Twt) Reset() {
*x = Twt{}
mi := &file_lextwt_proto_msgTypes[14]
mi := &file_lextwt_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1018,7 +1106,7 @@ func (x *Twt) String() string {
func (*Twt) ProtoMessage() {}
func (x *Twt) ProtoReflect() protoreflect.Message {
mi := &file_lextwt_proto_msgTypes[14]
mi := &file_lextwt_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1031,7 +1119,7 @@ func (x *Twt) ProtoReflect() protoreflect.Message {
// Deprecated: Use Twt.ProtoReflect.Descriptor instead.
func (*Twt) Descriptor() ([]byte, []int) {
return file_lextwt_proto_rawDescGZIP(), []int{14}
return file_lextwt_proto_rawDescGZIP(), []int{16}
}
func (x *Twt) GetTwter() *Twter {
@@ -1059,99 +1147,106 @@ var File_lextwt_proto protoreflect.FileDescriptor
var file_lextwt_proto_rawDesc = string([]byte{
0x0a, 0x0c, 0x6c, 0x65, 0x78, 0x74, 0x77, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0c,
0x0a, 0x0a, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x77, 0x74, 0x73, 0x22, 0x6d, 0x0a, 0x0b,
0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x08, 0x70,
0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e,
0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c,
0x65, 0x12, 0x1e, 0x0a, 0x06, 0x74, 0x77, 0x74, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x06, 0x2e, 0x54, 0x77, 0x74, 0x65, 0x72, 0x52, 0x06, 0x74, 0x77, 0x74, 0x65, 0x72,
0x73, 0x12, 0x18, 0x0a, 0x04, 0x74, 0x77, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x04, 0x2e, 0x54, 0x77, 0x74, 0x52, 0x04, 0x74, 0x77, 0x74, 0x73, 0x22, 0x39, 0x0a, 0x0b, 0x42,
0x61, 0x6e, 0x67, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
0x0a, 0x0a, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x77, 0x74, 0x73, 0x22, 0x07, 0x0a, 0x05,
0x50, 0x61, 0x67, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x0b, 0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69,
0x73, 0x74, 0x72, 0x79, 0x12, 0x24, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x74, 0x77,
0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x54, 0x77, 0x74, 0x52, 0x04,
0x74, 0x77, 0x74, 0x73, 0x22, 0x67, 0x0a, 0x07, 0x54, 0x77, 0x74, 0x46, 0x65, 0x65, 0x64, 0x12,
0x1c, 0x0a, 0x05, 0x74, 0x77, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06,
0x2e, 0x54, 0x77, 0x74, 0x65, 0x72, 0x52, 0x05, 0x74, 0x77, 0x74, 0x65, 0x72, 0x12, 0x24, 0x0a,
0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x08, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d,
0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x04, 0x74, 0x77, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x04, 0x2e, 0x54, 0x77, 0x74, 0x52, 0x04, 0x74, 0x77, 0x74, 0x73, 0x22, 0x39, 0x0a,
0x0b, 0x42, 0x61, 0x6e, 0x67, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x79, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65,
0x12, 0x1e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a,
0x2e, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x22, 0x3d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10,
0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44,
0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x4c, 0x49, 0x4e,
0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43,
0x4b, 0x10, 0x02, 0x22, 0x4b, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18,
0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x22, 0x54, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09,
0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73,
0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x65,
0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xc7, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b,
0x12, 0x1e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a,
0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61,
0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69,
0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
0x22, 0x5f, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x49, 0x4e, 0x4b,
0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11,
0x0a, 0x0d, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10,
0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x10,
0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10,
0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4e, 0x41, 0x4b, 0x45, 0x44, 0x10,
0x04, 0x22, 0x35, 0x0a, 0x07, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x3b, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a,
0x03, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x54, 0x61, 0x67,
0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x2f, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03,
0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x16,
0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x79, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e,
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x43,
0x6f, 0x64, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x22, 0x3d, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f,
0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10,
0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10,
0x02, 0x22, 0x4b, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07,
0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63,
0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x54,
0x0a, 0x08, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69,
0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74,
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73,
0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74,
0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x7a, 0x6f, 0x6e, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x70, 0x61,
0x72, 0x61, 0x74, 0x6f, 0x72, 0x22, 0xc7, 0x01, 0x0a, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x1e,
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0a, 0x2e, 0x4c,
0x69, 0x6e, 0x6b, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10,
0x0a, 0x03, 0x61, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x6c, 0x74,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x5f,
0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x55,
0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d,
0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12,
0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x10, 0x02, 0x12,
0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x10, 0x03, 0x12,
0x0e, 0x0a, 0x0a, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4e, 0x41, 0x4b, 0x45, 0x44, 0x10, 0x04, 0x22,
0x35, 0x0a, 0x07, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x3b, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x03, 0x74,
0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03,
0x74, 0x61, 0x67, 0x22, 0x2f, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61,
0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61,
0x72, 0x67, 0x65, 0x74, 0x22, 0x1a, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04,
0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74,
0x22, 0x2d, 0x0a, 0x05, 0x54, 0x77, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x69, 0x63,
0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x12, 0x10, 0x0a,
0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x22,
0xdb, 0x02, 0x0a, 0x04, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x0b, 0x62, 0x61, 0x6e, 0x67,
0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e,
0x42, 0x61, 0x6e, 0x67, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x62,
0x61, 0x6e, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x04, 0x63, 0x6f,
0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x48,
0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x65,
0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x36, 0x0a,
0x0d, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x04,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x70, 0x61, 0x72,
0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x65, 0x70, 0x61,
0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x05, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69,
0x6e, 0x6b, 0x12, 0x24, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
0x07, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x75, 0x62, 0x6a,
0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x18,
0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e, 0x54, 0x61,
0x67, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1b, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74,
0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52,
0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x6c, 0x65, 0x6d, 0x22, 0x61, 0x0a,
0x03, 0x54, 0x77, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x74, 0x77, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x54, 0x77, 0x74, 0x65, 0x72, 0x52, 0x05, 0x74, 0x77, 0x74,
0x65, 0x72, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x07,
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x03, 0x6d, 0x73, 0x67,
0x32, 0x3d, 0x0a, 0x12, 0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x53,
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74,
0x54, 0x77, 0x74, 0x73, 0x12, 0x0b, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54, 0x77, 0x74,
0x73, 0x1a, 0x0c, 0x2e, 0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x42,
0x1c, 0x5a, 0x1a, 0x67, 0x6f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x2e, 0x69, 0x73, 0x2f, 0x6c, 0x65,
0x78, 0x74, 0x77, 0x74, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x1a, 0x0a, 0x04, 0x54, 0x65, 0x78, 0x74, 0x12, 0x12,
0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65,
0x78, 0x74, 0x22, 0x2d, 0x0a, 0x05, 0x54, 0x77, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e,
0x69, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x69, 0x63, 0x6b, 0x12,
0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
0x69, 0x22, 0xdb, 0x02, 0x0a, 0x04, 0x45, 0x6c, 0x65, 0x6d, 0x12, 0x30, 0x0a, 0x0b, 0x62, 0x61,
0x6e, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x0c, 0x2e, 0x42, 0x61, 0x6e, 0x67, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52,
0x0b, 0x62, 0x61, 0x6e, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x04,
0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x43, 0x6f, 0x64,
0x65, 0x48, 0x00, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x43, 0x6f, 0x6d,
0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12,
0x36, 0x0a, 0x0d, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x4c, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x70,
0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x65,
0x70, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18,
0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x48, 0x00, 0x52, 0x04,
0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x24, 0x0a, 0x07, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x4d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x48,
0x00, 0x52, 0x07, 0x6d, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x07, 0x73, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x08, 0x2e, 0x53, 0x75,
0x62, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x04, 0x2e,
0x54, 0x61, 0x67, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x1b, 0x0a, 0x04, 0x74, 0x65,
0x78, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x48,
0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x6c, 0x65, 0x6d, 0x22,
0x61, 0x0a, 0x03, 0x54, 0x77, 0x74, 0x12, 0x1c, 0x0a, 0x05, 0x74, 0x77, 0x74, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e, 0x54, 0x77, 0x74, 0x65, 0x72, 0x52, 0x05, 0x74,
0x77, 0x74, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x03, 0x6d, 0x73, 0x67,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x05, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x52, 0x03, 0x6d,
0x73, 0x67, 0x32, 0x5c, 0x0a, 0x12, 0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0a, 0x6c, 0x61, 0x74, 0x65,
0x73, 0x74, 0x54, 0x77, 0x74, 0x73, 0x12, 0x0b, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x54,
0x77, 0x74, 0x73, 0x1a, 0x0c, 0x2e, 0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72,
0x79, 0x12, 0x1d, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x06, 0x2e, 0x50, 0x61, 0x67,
0x65, 0x72, 0x1a, 0x0c, 0x2e, 0x54, 0x77, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79,
0x42, 0x1c, 0x5a, 0x1a, 0x67, 0x6f, 0x2e, 0x73, 0x6f, 0x75, 0x72, 0x2e, 0x69, 0x73, 0x2f, 0x6c,
0x65, 0x78, 0x74, 0x77, 0x74, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x62, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
})
var (
@@ -1167,52 +1262,58 @@ func file_lextwt_proto_rawDescGZIP() []byte {
}
var file_lextwt_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_lextwt_proto_msgTypes = make([]protoimpl.MessageInfo, 15)
var file_lextwt_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_lextwt_proto_goTypes = []any{
(Code_Type)(0), // 0: Code.Type
(Link_Type)(0), // 1: Link.Type
(*LatestTwts)(nil), // 2: LatestTwts
(*TwtRegistry)(nil), // 3: TwtRegistry
(*BangMention)(nil), // 4: BangMention
(*Code)(nil), // 5: Code
(*Comment)(nil), // 6: Comment
(*DateTime)(nil), // 7: DateTime
(*LineSeparator)(nil), // 8: LineSeparator
(*Link)(nil), // 9: Link
(*Mention)(nil), // 10: Mention
(*Subject)(nil), // 11: Subject
(*Tag)(nil), // 12: Tag
(*Text)(nil), // 13: Text
(*Twter)(nil), // 14: Twter
(*Elem)(nil), // 15: Elem
(*Twt)(nil), // 16: Twt
(*Pager)(nil), // 3: Pager
(*TwtRegistry)(nil), // 4: TwtRegistry
(*TwtFeed)(nil), // 5: TwtFeed
(*BangMention)(nil), // 6: BangMention
(*Code)(nil), // 7: Code
(*Comment)(nil), // 8: Comment
(*DateTime)(nil), // 9: DateTime
(*LineSeparator)(nil), // 10: LineSeparator
(*Link)(nil), // 11: Link
(*Mention)(nil), // 12: Mention
(*Subject)(nil), // 13: Subject
(*Tag)(nil), // 14: Tag
(*Text)(nil), // 15: Text
(*Twter)(nil), // 16: Twter
(*Elem)(nil), // 17: Elem
(*Twt)(nil), // 18: Twt
}
var file_lextwt_proto_depIdxs = []int32{
6, // 0: TwtRegistry.preamble:type_name -> Comment
14, // 1: TwtRegistry.twters:type_name -> Twter
16, // 2: TwtRegistry.twts:type_name -> Twt
0, // 3: Code.type:type_name -> Code.Type
1, // 4: Link.type:type_name -> Link.Type
12, // 5: Subject.tag:type_name -> Tag
4, // 6: Elem.bangmention:type_name -> BangMention
5, // 7: Elem.code:type_name -> Code
6, // 8: Elem.comment:type_name -> Comment
8, // 9: Elem.lineseparator:type_name -> LineSeparator
9, // 10: Elem.link:type_name -> Link
10, // 11: Elem.mention:type_name -> Mention
11, // 12: Elem.subject:type_name -> Subject
12, // 13: Elem.tag:type_name -> Tag
13, // 14: Elem.text:type_name -> Text
14, // 15: Twt.twter:type_name -> Twter
7, // 16: Twt.created:type_name -> DateTime
15, // 17: Twt.msg:type_name -> Elem
2, // 18: TwtRegistryService.latestTwts:input_type -> LatestTwts
3, // 19: TwtRegistryService.latestTwts:output_type -> TwtRegistry
19, // [19:20] is the sub-list for method output_type
18, // [18:19] is the sub-list for method input_type
18, // [18:18] is the sub-list for extension type_name
18, // [18:18] is the sub-list for extension extendee
0, // [0:18] is the sub-list for field type_name
8, // 0: TwtRegistry.preamble:type_name -> Comment
18, // 1: TwtRegistry.twts:type_name -> Twt
16, // 2: TwtFeed.twter:type_name -> Twter
8, // 3: TwtFeed.preamble:type_name -> Comment
18, // 4: TwtFeed.twts:type_name -> Twt
0, // 5: Code.type:type_name -> Code.Type
1, // 6: Link.type:type_name -> Link.Type
14, // 7: Subject.tag:type_name -> Tag
6, // 8: Elem.bangmention:type_name -> BangMention
7, // 9: Elem.code:type_name -> Code
8, // 10: Elem.comment:type_name -> Comment
10, // 11: Elem.lineseparator:type_name -> LineSeparator
11, // 12: Elem.link:type_name -> Link
12, // 13: Elem.mention:type_name -> Mention
13, // 14: Elem.subject:type_name -> Subject
14, // 15: Elem.tag:type_name -> Tag
15, // 16: Elem.text:type_name -> Text
16, // 17: Twt.twter:type_name -> Twter
9, // 18: Twt.created:type_name -> DateTime
17, // 19: Twt.msg:type_name -> Elem
2, // 20: TwtRegistryService.latestTwts:input_type -> LatestTwts
3, // 21: TwtRegistryService.users:input_type -> Pager
4, // 22: TwtRegistryService.latestTwts:output_type -> TwtRegistry
4, // 23: TwtRegistryService.users:output_type -> TwtRegistry
22, // [22:24] is the sub-list for method output_type
20, // [20:22] is the sub-list for method input_type
20, // [20:20] is the sub-list for extension type_name
20, // [20:20] is the sub-list for extension extendee
0, // [0:20] is the sub-list for field type_name
}
func init() { file_lextwt_proto_init() }
@@ -1220,7 +1321,7 @@ func file_lextwt_proto_init() {
if File_lextwt_proto != nil {
return
}
file_lextwt_proto_msgTypes[13].OneofWrappers = []any{
file_lextwt_proto_msgTypes[15].OneofWrappers = []any{
(*Elem_Bangmention)(nil),
(*Elem_Code)(nil),
(*Elem_Comment)(nil),
@@ -1237,7 +1338,7 @@ func file_lextwt_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_lextwt_proto_rawDesc), len(file_lextwt_proto_rawDesc)),
NumEnums: 2,
NumMessages: 15,
NumMessages: 17,
NumExtensions: 0,
NumServices: 1,
},