// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.32.0
// 	protoc        (unknown)
// source: content/content.proto

package content

import (
	browser "github.com/lunabrain-ai/lunabrain/pkg/gen/content/browser"
	chatgpt "github.com/lunabrain-ai/lunabrain/pkg/gen/content/chatgpt"
	user "github.com/lunabrain-ai/lunabrain/pkg/gen/user"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
	_ "google.golang.org/protobuf/types/known/anypb"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
	_ "google.golang.org/protobuf/types/known/timestamppb"
	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)
)

type InferRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prompt string `protobuf:"bytes,1,opt,name=prompt,proto3" json:"prompt,omitempty"`
}

func (x *InferRequest) Reset() {
	*x = InferRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *InferRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InferRequest) ProtoMessage() {}

func (x *InferRequest) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_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 InferRequest.ProtoReflect.Descriptor instead.
func (*InferRequest) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{0}
}

func (x *InferRequest) GetPrompt() string {
	if x != nil {
		return x.Prompt
	}
	return ""
}

type InferResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Text string `protobuf:"bytes,1,opt,name=text,proto3" json:"text,omitempty"`
}

func (x *InferResponse) Reset() {
	*x = InferResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *InferResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*InferResponse) ProtoMessage() {}

func (x *InferResponse) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_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 InferResponse.ProtoReflect.Descriptor instead.
func (*InferResponse) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{1}
}

func (x *InferResponse) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

type TypesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Content *GRPCTypeInfo `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	Site    *GRPCTypeInfo `protobuf:"bytes,2,opt,name=site,proto3" json:"site,omitempty"`
}

func (x *TypesResponse) Reset() {
	*x = TypesResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TypesResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TypesResponse) ProtoMessage() {}

func (x *TypesResponse) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_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 TypesResponse.ProtoReflect.Descriptor instead.
func (*TypesResponse) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{2}
}

func (x *TypesResponse) GetContent() *GRPCTypeInfo {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *TypesResponse) GetSite() *GRPCTypeInfo {
	if x != nil {
		return x.Site
	}
	return nil
}

type GetSourcesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContentTypes []string `protobuf:"bytes,1,rep,name=content_types,json=contentTypes,proto3" json:"content_types,omitempty"`
	Tags         []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"`
}

func (x *GetSourcesRequest) Reset() {
	*x = GetSourcesRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GetSourcesRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GetSourcesRequest) ProtoMessage() {}

func (x *GetSourcesRequest) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[3]
	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 GetSourcesRequest.ProtoReflect.Descriptor instead.
func (*GetSourcesRequest) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{3}
}

func (x *GetSourcesRequest) GetContentTypes() []string {
	if x != nil {
		return x.ContentTypes
	}
	return nil
}

func (x *GetSourcesRequest) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

type VoiceInputRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	CaptureDevice int32 `protobuf:"varint,1,opt,name=capture_device,json=captureDevice,proto3" json:"capture_device,omitempty"`
}

func (x *VoiceInputRequest) Reset() {
	*x = VoiceInputRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *VoiceInputRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VoiceInputRequest) ProtoMessage() {}

func (x *VoiceInputRequest) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[4]
	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 VoiceInputRequest.ProtoReflect.Descriptor instead.
func (*VoiceInputRequest) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{4}
}

func (x *VoiceInputRequest) GetCaptureDevice() int32 {
	if x != nil {
		return x.CaptureDevice
	}
	return 0
}

type VoiceInputResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Segment *Segment `protobuf:"bytes,1,opt,name=segment,proto3" json:"segment,omitempty"`
}

func (x *VoiceInputResponse) Reset() {
	*x = VoiceInputResponse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *VoiceInputResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VoiceInputResponse) ProtoMessage() {}

func (x *VoiceInputResponse) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[5]
	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 VoiceInputResponse.ProtoReflect.Descriptor instead.
func (*VoiceInputResponse) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{5}
}

func (x *VoiceInputResponse) GetSegment() *Segment {
	if x != nil {
		return x.Segment
	}
	return nil
}

type RelateRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Parent   string   `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
	Children []string `protobuf:"bytes,2,rep,name=children,proto3" json:"children,omitempty"`
	Connect  bool     `protobuf:"varint,3,opt,name=connect,proto3" json:"connect,omitempty"`
}

func (x *RelateRequest) Reset() {
	*x = RelateRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RelateRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RelateRequest) ProtoMessage() {}

func (x *RelateRequest) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_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 RelateRequest.ProtoReflect.Descriptor instead.
func (*RelateRequest) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{6}
}

func (x *RelateRequest) GetParent() string {
	if x != nil {
		return x.Parent
	}
	return ""
}

func (x *RelateRequest) GetChildren() []string {
	if x != nil {
		return x.Children
	}
	return nil
}

func (x *RelateRequest) GetConnect() bool {
	if x != nil {
		return x.Connect
	}
	return false
}

type Sources struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Sources []*EnumeratedSource `protobuf:"bytes,1,rep,name=sources,proto3" json:"sources,omitempty"`
}

func (x *Sources) Reset() {
	*x = Sources{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Sources) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Sources) ProtoMessage() {}

func (x *Sources) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[7]
	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 Sources.ProtoReflect.Descriptor instead.
func (*Sources) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{7}
}

func (x *Sources) GetSources() []*EnumeratedSource {
	if x != nil {
		return x.Sources
	}
	return nil
}

type EnumeratedSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Source         *Source           `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"`
	DisplayContent []*DisplayContent `protobuf:"bytes,2,rep,name=display_content,json=displayContent,proto3" json:"display_content,omitempty"`
}

func (x *EnumeratedSource) Reset() {
	*x = EnumeratedSource{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EnumeratedSource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EnumeratedSource) ProtoMessage() {}

func (x *EnumeratedSource) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[8]
	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 EnumeratedSource.ProtoReflect.Descriptor instead.
func (*EnumeratedSource) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{8}
}

func (x *EnumeratedSource) GetSource() *Source {
	if x != nil {
		return x.Source
	}
	return nil
}

func (x *EnumeratedSource) GetDisplayContent() []*DisplayContent {
	if x != nil {
		return x.DisplayContent
	}
	return nil
}

type DisplayContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title       string   `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Description string   `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"`
	Type        string   `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"`
	Content     *Content `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
}

func (x *DisplayContent) Reset() {
	*x = DisplayContent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DisplayContent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DisplayContent) ProtoMessage() {}

func (x *DisplayContent) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[9]
	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 DisplayContent.ProtoReflect.Descriptor instead.
func (*DisplayContent) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{9}
}

func (x *DisplayContent) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *DisplayContent) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *DisplayContent) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *DisplayContent) GetContent() *Content {
	if x != nil {
		return x.Content
	}
	return nil
}

type Source struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Types that are assignable to Type:
	//
	//	*Source_Server
	//	*Source_Folder
	Type isSource_Type `protobuf_oneof:"type"`
}

func (x *Source) Reset() {
	*x = Source{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Source) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Source) ProtoMessage() {}

func (x *Source) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[10]
	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 Source.ProtoReflect.Descriptor instead.
func (*Source) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{10}
}

func (x *Source) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (m *Source) GetType() isSource_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Source) GetServer() *Server {
	if x, ok := x.GetType().(*Source_Server); ok {
		return x.Server
	}
	return nil
}

func (x *Source) GetFolder() *Folder {
	if x, ok := x.GetType().(*Source_Folder); ok {
		return x.Folder
	}
	return nil
}

type isSource_Type interface {
	isSource_Type()
}

type Source_Server struct {
	Server *Server `protobuf:"bytes,2,opt,name=server,proto3,oneof"`
}

type Source_Folder struct {
	Folder *Folder `protobuf:"bytes,3,opt,name=folder,proto3,oneof"`
}

func (*Source_Server) isSource_Type() {}

func (*Source_Folder) isSource_Type() {}

type Server struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Server) Reset() {
	*x = Server{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Server) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Server) ProtoMessage() {}

func (x *Server) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[11]
	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 Server.ProtoReflect.Descriptor instead.
func (*Server) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{11}
}

type Folder struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
}

func (x *Folder) Reset() {
	*x = Folder{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Folder) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Folder) ProtoMessage() {}

func (x *Folder) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[12]
	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 Folder.ProtoReflect.Descriptor instead.
func (*Folder) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{12}
}

func (x *Folder) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

type SetTagsRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContentId string   `protobuf:"bytes,1,opt,name=content_id,json=contentId,proto3" json:"content_id,omitempty"`
	Tags      []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"`
}

func (x *SetTagsRequest) Reset() {
	*x = SetTagsRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SetTagsRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SetTagsRequest) ProtoMessage() {}

func (x *SetTagsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[13]
	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 SetTagsRequest.ProtoReflect.Descriptor instead.
func (*SetTagsRequest) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{13}
}

func (x *SetTagsRequest) GetContentId() string {
	if x != nil {
		return x.ContentId
	}
	return ""
}

func (x *SetTagsRequest) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

type TagRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	GroupId string `protobuf:"bytes,1,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
}

func (x *TagRequest) Reset() {
	*x = TagRequest{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TagRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TagRequest) ProtoMessage() {}

func (x *TagRequest) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[14]
	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 TagRequest.ProtoReflect.Descriptor instead.
func (*TagRequest) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{14}
}

func (x *TagRequest) GetGroupId() string {
	if x != nil {
		return x.GroupId
	}
	return ""
}

type Tags struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Tags []*Tag `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"`
}

func (x *Tags) Reset() {
	*x = Tags{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Tags) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Tags) ProtoMessage() {}

func (x *Tags) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[15]
	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 Tags.ProtoReflect.Descriptor instead.
func (*Tags) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{15}
}

func (x *Tags) GetTags() []*Tag {
	if x != nil {
		return x.Tags
	}
	return nil
}

type Tag struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Name    string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	SubTags []*Tag `protobuf:"bytes,2,rep,name=sub_tags,json=subTags,proto3" json:"sub_tags,omitempty"`
}

func (x *Tag) Reset() {
	*x = Tag{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Tag) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Tag) ProtoMessage() {}

func (x *Tag) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[16]
	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 Tag.ProtoReflect.Descriptor instead.
func (*Tag) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{16}
}

func (x *Tag) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Tag) GetSubTags() []*Tag {
	if x != nil {
		return x.SubTags
	}
	return nil
}

type ContentIDs struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ContentIds []string `protobuf:"bytes,1,rep,name=content_ids,json=contentIds,proto3" json:"content_ids,omitempty"`
}

func (x *ContentIDs) Reset() {
	*x = ContentIDs{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ContentIDs) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ContentIDs) ProtoMessage() {}

func (x *ContentIDs) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[17]
	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 ContentIDs.ProtoReflect.Descriptor instead.
func (*ContentIDs) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{17}
}

func (x *ContentIDs) GetContentIds() []string {
	if x != nil {
		return x.ContentIds
	}
	return nil
}

type Contents struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Content *Content   `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	Tags    []string   `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"`
	Related []*Content `protobuf:"bytes,3,rep,name=related,proto3" json:"related,omitempty"`
	Parents []string   `protobuf:"bytes,4,rep,name=parents,proto3" json:"parents,omitempty"`
}

func (x *Contents) Reset() {
	*x = Contents{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Contents) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Contents) ProtoMessage() {}

func (x *Contents) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[18]
	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 Contents.ProtoReflect.Descriptor instead.
func (*Contents) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{18}
}

func (x *Contents) GetContent() *Content {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *Contents) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *Contents) GetRelated() []*Content {
	if x != nil {
		return x.Related
	}
	return nil
}

func (x *Contents) GetParents() []string {
	if x != nil {
		return x.Parents
	}
	return nil
}

type Query struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Query        string   `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
	Page         uint32   `protobuf:"varint,2,opt,name=page,proto3" json:"page,omitempty"`
	ContentID    string   `protobuf:"bytes,3,opt,name=contentID,proto3" json:"contentID,omitempty"`
	GroupID      string   `protobuf:"bytes,4,opt,name=groupID,proto3" json:"groupID,omitempty"`
	Tags         []string `protobuf:"bytes,5,rep,name=tags,proto3" json:"tags,omitempty"`
	ContentTypes []string `protobuf:"bytes,6,rep,name=content_types,json=contentTypes,proto3" json:"content_types,omitempty"`
}

func (x *Query) Reset() {
	*x = Query{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Query) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Query) ProtoMessage() {}

func (x *Query) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[19]
	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 Query.ProtoReflect.Descriptor instead.
func (*Query) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{19}
}

func (x *Query) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *Query) GetPage() uint32 {
	if x != nil {
		return x.Page
	}
	return 0
}

func (x *Query) GetContentID() string {
	if x != nil {
		return x.ContentID
	}
	return ""
}

func (x *Query) GetGroupID() string {
	if x != nil {
		return x.GroupID
	}
	return ""
}

func (x *Query) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *Query) GetContentTypes() []string {
	if x != nil {
		return x.ContentTypes
	}
	return nil
}

type Results struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	StoredContent []*StoredContent `protobuf:"bytes,1,rep,name=storedContent,proto3" json:"storedContent,omitempty"`
}

func (x *Results) Reset() {
	*x = Results{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Results) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Results) ProtoMessage() {}

func (x *Results) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[20]
	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 Results.ProtoReflect.Descriptor instead.
func (*Results) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{20}
}

func (x *Results) GetStoredContent() []*StoredContent {
	if x != nil {
		return x.StoredContent
	}
	return nil
}

type StoredContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Content     *Content   `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	Id          string     `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
	Related     []*Content `protobuf:"bytes,3,rep,name=related,proto3" json:"related,omitempty"`
	Title       string     `protobuf:"bytes,4,opt,name=title,proto3" json:"title,omitempty"`
	Description string     `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
	Image       string     `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"`
	Url         string     `protobuf:"bytes,7,opt,name=url,proto3" json:"url,omitempty"`
	User        *user.User `protobuf:"bytes,9,opt,name=user,proto3" json:"user,omitempty"`
	Tags        []*Tag     `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty"`
	Preview     string     `protobuf:"bytes,11,opt,name=preview,proto3" json:"preview,omitempty"`
}

func (x *StoredContent) Reset() {
	*x = StoredContent{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *StoredContent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*StoredContent) ProtoMessage() {}

func (x *StoredContent) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[21]
	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 StoredContent.ProtoReflect.Descriptor instead.
func (*StoredContent) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{21}
}

func (x *StoredContent) GetContent() *Content {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *StoredContent) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *StoredContent) GetRelated() []*Content {
	if x != nil {
		return x.Related
	}
	return nil
}

func (x *StoredContent) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *StoredContent) GetDescription() string {
	if x != nil {
		return x.Description
	}
	return ""
}

func (x *StoredContent) GetImage() string {
	if x != nil {
		return x.Image
	}
	return ""
}

func (x *StoredContent) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *StoredContent) GetUser() *user.User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *StoredContent) GetTags() []*Tag {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *StoredContent) GetPreview() string {
	if x != nil {
		return x.Preview
	}
	return ""
}

type Edge struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"`
	To   string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"`
}

func (x *Edge) Reset() {
	*x = Edge{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Edge) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Edge) ProtoMessage() {}

func (x *Edge) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[22]
	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 Edge.ProtoReflect.Descriptor instead.
func (*Edge) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{22}
}

func (x *Edge) GetFrom() string {
	if x != nil {
		return x.From
	}
	return ""
}

func (x *Edge) GetTo() string {
	if x != nil {
		return x.To
	}
	return ""
}

// Content has data and metadata
type Content struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Tags      []string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"`
	CreatedAt string   `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"`
	Uri       string   `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"`
	Id        string   `protobuf:"bytes,4,opt,name=id,proto3" json:"id,omitempty"`
	// Types that are assignable to Type:
	//
	//	*Content_Data
	//	*Content_Normalized
	//	*Content_Transformed
	//	*Content_Post
	//	*Content_Site
	//	*Content_ChatgptConversation
	//	*Content_BrowserHistory
	Type isContent_Type `protobuf_oneof:"type"`
}

func (x *Content) Reset() {
	*x = Content{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Content) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Content) ProtoMessage() {}

func (x *Content) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[23]
	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 Content.ProtoReflect.Descriptor instead.
func (*Content) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{23}
}

func (x *Content) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *Content) GetCreatedAt() string {
	if x != nil {
		return x.CreatedAt
	}
	return ""
}

func (x *Content) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *Content) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (m *Content) GetType() isContent_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Content) GetData() *Data {
	if x, ok := x.GetType().(*Content_Data); ok {
		return x.Data
	}
	return nil
}

func (x *Content) GetNormalized() *Normalized {
	if x, ok := x.GetType().(*Content_Normalized); ok {
		return x.Normalized
	}
	return nil
}

func (x *Content) GetTransformed() *Transformed {
	if x, ok := x.GetType().(*Content_Transformed); ok {
		return x.Transformed
	}
	return nil
}

func (x *Content) GetPost() *Post {
	if x, ok := x.GetType().(*Content_Post); ok {
		return x.Post
	}
	return nil
}

func (x *Content) GetSite() *Site {
	if x, ok := x.GetType().(*Content_Site); ok {
		return x.Site
	}
	return nil
}

func (x *Content) GetChatgptConversation() *chatgpt.Conversation {
	if x, ok := x.GetType().(*Content_ChatgptConversation); ok {
		return x.ChatgptConversation
	}
	return nil
}

func (x *Content) GetBrowserHistory() *browser.History {
	if x, ok := x.GetType().(*Content_BrowserHistory); ok {
		return x.BrowserHistory
	}
	return nil
}

type isContent_Type interface {
	isContent_Type()
}

type Content_Data struct {
	Data *Data `protobuf:"bytes,6,opt,name=data,proto3,oneof"`
}

type Content_Normalized struct {
	Normalized *Normalized `protobuf:"bytes,7,opt,name=normalized,proto3,oneof"`
}

type Content_Transformed struct {
	Transformed *Transformed `protobuf:"bytes,8,opt,name=transformed,proto3,oneof"`
}

type Content_Post struct {
	Post *Post `protobuf:"bytes,9,opt,name=post,proto3,oneof"`
}

type Content_Site struct {
	Site *Site `protobuf:"bytes,10,opt,name=site,proto3,oneof"`
}

type Content_ChatgptConversation struct {
	ChatgptConversation *chatgpt.Conversation `protobuf:"bytes,11,opt,name=chatgpt_conversation,json=chatgptConversation,proto3,oneof"`
}

type Content_BrowserHistory struct {
	BrowserHistory *browser.History `protobuf:"bytes,12,opt,name=browser_history,json=browserHistory,proto3,oneof"`
}

func (*Content_Data) isContent_Type() {}

func (*Content_Normalized) isContent_Type() {}

func (*Content_Transformed) isContent_Type() {}

func (*Content_Post) isContent_Type() {}

func (*Content_Site) isContent_Type() {}

func (*Content_ChatgptConversation) isContent_Type() {}

func (*Content_BrowserHistory) isContent_Type() {}

type Post struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title   string   `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Summary string   `protobuf:"bytes,2,opt,name=summary,proto3" json:"summary,omitempty"`
	Content string   `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
	Authors []string `protobuf:"bytes,4,rep,name=authors,proto3" json:"authors,omitempty"`
	Draft   bool     `protobuf:"varint,6,opt,name=draft,proto3" json:"draft,omitempty"`
}

func (x *Post) Reset() {
	*x = Post{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Post) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Post) ProtoMessage() {}

func (x *Post) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[24]
	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 Post.ProtoReflect.Descriptor instead.
func (*Post) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{24}
}

func (x *Post) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Post) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

func (x *Post) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *Post) GetAuthors() []string {
	if x != nil {
		return x.Authors
	}
	return nil
}

func (x *Post) GetDraft() bool {
	if x != nil {
		return x.Draft
	}
	return false
}

type GitRepo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
}

func (x *GitRepo) Reset() {
	*x = GitRepo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GitRepo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GitRepo) ProtoMessage() {}

func (x *GitRepo) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[25]
	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 GitRepo.ProtoReflect.Descriptor instead.
func (*GitRepo) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{25}
}

func (x *GitRepo) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

type Data struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Type:
	//
	//	*Data_Text
	//	*Data_File
	//	*Data_Url
	Type isData_Type `protobuf_oneof:"type"`
}

func (x *Data) Reset() {
	*x = Data{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Data) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Data) ProtoMessage() {}

func (x *Data) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[26]
	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 Data.ProtoReflect.Descriptor instead.
func (*Data) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{26}
}

func (m *Data) GetType() isData_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Data) GetText() *Text {
	if x, ok := x.GetType().(*Data_Text); ok {
		return x.Text
	}
	return nil
}

func (x *Data) GetFile() *File {
	if x, ok := x.GetType().(*Data_File); ok {
		return x.File
	}
	return nil
}

func (x *Data) GetUrl() *URL {
	if x, ok := x.GetType().(*Data_Url); ok {
		return x.Url
	}
	return nil
}

type isData_Type interface {
	isData_Type()
}

type Data_Text struct {
	Text *Text `protobuf:"bytes,4,opt,name=text,proto3,oneof"`
}

type Data_File struct {
	File *File `protobuf:"bytes,5,opt,name=file,proto3,oneof"`
}

type Data_Url struct {
	Url *URL `protobuf:"bytes,6,opt,name=url,proto3,oneof"`
}

func (*Data_Text) isData_Type() {}

func (*Data_File) isData_Type() {}

func (*Data_Url) isData_Type() {}

type Normalized struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Type:
	//
	//	*Normalized_Article
	//	*Normalized_Html
	//	*Normalized_Transcript
	//	*Normalized_Readme
	Type isNormalized_Type `protobuf_oneof:"type"`
}

func (x *Normalized) Reset() {
	*x = Normalized{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Normalized) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Normalized) ProtoMessage() {}

func (x *Normalized) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[27]
	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 Normalized.ProtoReflect.Descriptor instead.
func (*Normalized) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{27}
}

func (m *Normalized) GetType() isNormalized_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Normalized) GetArticle() *Article {
	if x, ok := x.GetType().(*Normalized_Article); ok {
		return x.Article
	}
	return nil
}

func (x *Normalized) GetHtml() *HTML {
	if x, ok := x.GetType().(*Normalized_Html); ok {
		return x.Html
	}
	return nil
}

func (x *Normalized) GetTranscript() *Transcript {
	if x, ok := x.GetType().(*Normalized_Transcript); ok {
		return x.Transcript
	}
	return nil
}

func (x *Normalized) GetReadme() *ReadMe {
	if x, ok := x.GetType().(*Normalized_Readme); ok {
		return x.Readme
	}
	return nil
}

type isNormalized_Type interface {
	isNormalized_Type()
}

type Normalized_Article struct {
	Article *Article `protobuf:"bytes,3,opt,name=article,proto3,oneof"`
}

type Normalized_Html struct {
	Html *HTML `protobuf:"bytes,4,opt,name=html,proto3,oneof"`
}

type Normalized_Transcript struct {
	Transcript *Transcript `protobuf:"bytes,6,opt,name=transcript,proto3,oneof"`
}

type Normalized_Readme struct {
	Readme *ReadMe `protobuf:"bytes,7,opt,name=readme,proto3,oneof"`
}

func (*Normalized_Article) isNormalized_Type() {}

func (*Normalized_Html) isNormalized_Type() {}

func (*Normalized_Transcript) isNormalized_Type() {}

func (*Normalized_Readme) isNormalized_Type() {}

type Transformed struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Type:
	//
	//	*Transformed_Summary
	//	*Transformed_Categories
	Type isTransformed_Type `protobuf_oneof:"type"`
}

func (x *Transformed) Reset() {
	*x = Transformed{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Transformed) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Transformed) ProtoMessage() {}

func (x *Transformed) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[28]
	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 Transformed.ProtoReflect.Descriptor instead.
func (*Transformed) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{28}
}

func (m *Transformed) GetType() isTransformed_Type {
	if m != nil {
		return m.Type
	}
	return nil
}

func (x *Transformed) GetSummary() *Summary {
	if x, ok := x.GetType().(*Transformed_Summary); ok {
		return x.Summary
	}
	return nil
}

func (x *Transformed) GetCategories() *Categories {
	if x, ok := x.GetType().(*Transformed_Categories); ok {
		return x.Categories
	}
	return nil
}

type isTransformed_Type interface {
	isTransformed_Type()
}

type Transformed_Summary struct {
	Summary *Summary `protobuf:"bytes,1,opt,name=summary,proto3,oneof"`
}

type Transformed_Categories struct {
	Categories *Categories `protobuf:"bytes,2,opt,name=categories,proto3,oneof"`
}

func (*Transformed_Summary) isTransformed_Type() {}

func (*Transformed_Categories) isTransformed_Type() {}

type Article struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Title    string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	Author   string `protobuf:"bytes,2,opt,name=author,proto3" json:"author,omitempty"`
	Length   int32  `protobuf:"varint,3,opt,name=length,proto3" json:"length,omitempty"`
	Excerpt  string `protobuf:"bytes,4,opt,name=excerpt,proto3" json:"excerpt,omitempty"`
	SiteName string `protobuf:"bytes,5,opt,name=site_name,json=siteName,proto3" json:"site_name,omitempty"`
	Image    string `protobuf:"bytes,6,opt,name=image,proto3" json:"image,omitempty"`
	Favicon  string `protobuf:"bytes,7,opt,name=favicon,proto3" json:"favicon,omitempty"`
	Text     string `protobuf:"bytes,8,opt,name=text,proto3" json:"text,omitempty"`
}

func (x *Article) Reset() {
	*x = Article{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Article) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Article) ProtoMessage() {}

func (x *Article) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[29]
	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 Article.ProtoReflect.Descriptor instead.
func (*Article) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{29}
}

func (x *Article) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *Article) GetAuthor() string {
	if x != nil {
		return x.Author
	}
	return ""
}

func (x *Article) GetLength() int32 {
	if x != nil {
		return x.Length
	}
	return 0
}

func (x *Article) GetExcerpt() string {
	if x != nil {
		return x.Excerpt
	}
	return ""
}

func (x *Article) GetSiteName() string {
	if x != nil {
		return x.SiteName
	}
	return ""
}

func (x *Article) GetImage() string {
	if x != nil {
		return x.Image
	}
	return ""
}

func (x *Article) GetFavicon() string {
	if x != nil {
		return x.Favicon
	}
	return ""
}

func (x *Article) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

type HTML struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Html string `protobuf:"bytes,1,opt,name=html,proto3" json:"html,omitempty"`
}

func (x *HTML) Reset() {
	*x = HTML{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *HTML) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*HTML) ProtoMessage() {}

func (x *HTML) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[30]
	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 HTML.ProtoReflect.Descriptor instead.
func (*HTML) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{30}
}

func (x *HTML) GetHtml() string {
	if x != nil {
		return x.Html
	}
	return ""
}

type ReadMe struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *ReadMe) Reset() {
	*x = ReadMe{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReadMe) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReadMe) ProtoMessage() {}

func (x *ReadMe) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[31]
	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 ReadMe.ProtoReflect.Descriptor instead.
func (*ReadMe) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{31}
}

func (x *ReadMe) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

type Summary struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"`
}

func (x *Summary) Reset() {
	*x = Summary{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Summary) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Summary) ProtoMessage() {}

func (x *Summary) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[32]
	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 Summary.ProtoReflect.Descriptor instead.
func (*Summary) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{32}
}

func (x *Summary) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

type Categories struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Categories []string `protobuf:"bytes,1,rep,name=categories,proto3" json:"categories,omitempty"`
}

func (x *Categories) Reset() {
	*x = Categories{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Categories) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Categories) ProtoMessage() {}

func (x *Categories) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[33]
	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 Categories.ProtoReflect.Descriptor instead.
func (*Categories) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{33}
}

func (x *Categories) GetCategories() []string {
	if x != nil {
		return x.Categories
	}
	return nil
}

type File struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	File string `protobuf:"bytes,1,opt,name=file,proto3" json:"file,omitempty"`
	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
	Url  string `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"`
}

func (x *File) Reset() {
	*x = File{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *File) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*File) ProtoMessage() {}

func (x *File) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[34]
	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 File.ProtoReflect.Descriptor instead.
func (*File) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{34}
}

func (x *File) GetFile() string {
	if x != nil {
		return x.File
	}
	return ""
}

func (x *File) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *File) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

type Text struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"`
}

func (x *Text) Reset() {
	*x = Text{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Text) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Text) ProtoMessage() {}

func (x *Text) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[35]
	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 Text.ProtoReflect.Descriptor instead.
func (*Text) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{35}
}

func (x *Text) GetData() string {
	if x != nil {
		return x.Data
	}
	return ""
}

type URL struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Url   string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
	Crawl bool   `protobuf:"varint,2,opt,name=crawl,proto3" json:"crawl,omitempty"`
	Title string `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
}

func (x *URL) Reset() {
	*x = URL{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *URL) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*URL) ProtoMessage() {}

func (x *URL) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[36]
	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 URL.ProtoReflect.Descriptor instead.
func (*URL) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{36}
}

func (x *URL) GetUrl() string {
	if x != nil {
		return x.Url
	}
	return ""
}

func (x *URL) GetCrawl() bool {
	if x != nil {
		return x.Crawl
	}
	return false
}

func (x *URL) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

type Token struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id        uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
	StartTime uint64 `protobuf:"varint,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	EndTime   uint64 `protobuf:"varint,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
	Text      string `protobuf:"bytes,4,opt,name=text,proto3" json:"text,omitempty"`
	P         string `protobuf:"bytes,5,opt,name=p,proto3" json:"p,omitempty"`
}

func (x *Token) Reset() {
	*x = Token{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Token) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Token) ProtoMessage() {}

func (x *Token) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[37]
	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 Token.ProtoReflect.Descriptor instead.
func (*Token) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{37}
}

func (x *Token) GetId() uint32 {
	if x != nil {
		return x.Id
	}
	return 0
}

func (x *Token) GetStartTime() uint64 {
	if x != nil {
		return x.StartTime
	}
	return 0
}

func (x *Token) GetEndTime() uint64 {
	if x != nil {
		return x.EndTime
	}
	return 0
}

func (x *Token) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *Token) GetP() string {
	if x != nil {
		return x.P
	}
	return ""
}

type Segment struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Num       uint32   `protobuf:"varint,1,opt,name=num,proto3" json:"num,omitempty"`
	Tokens    []*Token `protobuf:"bytes,2,rep,name=tokens,proto3" json:"tokens,omitempty"`
	Text      string   `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
	StartTime uint64   `protobuf:"varint,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
	EndTime   uint64   `protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
}

func (x *Segment) Reset() {
	*x = Segment{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Segment) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Segment) ProtoMessage() {}

func (x *Segment) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[38]
	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 Segment.ProtoReflect.Descriptor instead.
func (*Segment) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{38}
}

func (x *Segment) GetNum() uint32 {
	if x != nil {
		return x.Num
	}
	return 0
}

func (x *Segment) GetTokens() []*Token {
	if x != nil {
		return x.Tokens
	}
	return nil
}

func (x *Segment) GetText() string {
	if x != nil {
		return x.Text
	}
	return ""
}

func (x *Segment) GetStartTime() uint64 {
	if x != nil {
		return x.StartTime
	}
	return 0
}

func (x *Segment) GetEndTime() uint64 {
	if x != nil {
		return x.EndTime
	}
	return 0
}

type Transcript struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Id       string     `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Name     string     `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Segments []*Segment `protobuf:"bytes,3,rep,name=segments,proto3" json:"segments,omitempty"`
}

func (x *Transcript) Reset() {
	*x = Transcript{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Transcript) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Transcript) ProtoMessage() {}

func (x *Transcript) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[39]
	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 Transcript.ProtoReflect.Descriptor instead.
func (*Transcript) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{39}
}

func (x *Transcript) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Transcript) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *Transcript) GetSegments() []*Segment {
	if x != nil {
		return x.Segments
	}
	return nil
}

type GRPCTypeInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Msg         *descriptorpb.DescriptorProto                `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
	DescLookup  map[string]*descriptorpb.DescriptorProto     `protobuf:"bytes,3,rep,name=desc_lookup,json=descLookup,proto3" json:"desc_lookup,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	EnumLookup  map[string]*descriptorpb.EnumDescriptorProto `protobuf:"bytes,4,rep,name=enum_lookup,json=enumLookup,proto3" json:"enum_lookup,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	PackageName string                                       `protobuf:"bytes,6,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
}

func (x *GRPCTypeInfo) Reset() {
	*x = GRPCTypeInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *GRPCTypeInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*GRPCTypeInfo) ProtoMessage() {}

func (x *GRPCTypeInfo) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[40]
	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 GRPCTypeInfo.ProtoReflect.Descriptor instead.
func (*GRPCTypeInfo) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{40}
}

func (x *GRPCTypeInfo) GetMsg() *descriptorpb.DescriptorProto {
	if x != nil {
		return x.Msg
	}
	return nil
}

func (x *GRPCTypeInfo) GetDescLookup() map[string]*descriptorpb.DescriptorProto {
	if x != nil {
		return x.DescLookup
	}
	return nil
}

func (x *GRPCTypeInfo) GetEnumLookup() map[string]*descriptorpb.EnumDescriptorProto {
	if x != nil {
		return x.EnumLookup
	}
	return nil
}

func (x *GRPCTypeInfo) GetPackageName() string {
	if x != nil {
		return x.PackageName
	}
	return ""
}

type Site struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Sections   []*Section  `protobuf:"bytes,1,rep,name=sections,proto3" json:"sections,omitempty"`
	HugoConfig *HugoConfig `protobuf:"bytes,2,opt,name=hugo_config,json=hugoConfig,proto3" json:"hugo_config,omitempty"`
}

func (x *Site) Reset() {
	*x = Site{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Site) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Site) ProtoMessage() {}

func (x *Site) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[41]
	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 Site.ProtoReflect.Descriptor instead.
func (*Site) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{41}
}

func (x *Site) GetSections() []*Section {
	if x != nil {
		return x.Sections
	}
	return nil
}

func (x *Site) GetHugoConfig() *HugoConfig {
	if x != nil {
		return x.HugoConfig
	}
	return nil
}

type Section struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// TODO breadchris tags should be a filter that can have AND, OR, regex?
	Tags []string  `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty"`
	Menu *MenuItem `protobuf:"bytes,2,opt,name=menu,proto3" json:"menu,omitempty"`
}

func (x *Section) Reset() {
	*x = Section{}
	if protoimpl.UnsafeEnabled {
		mi := &file_content_content_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *Section) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Section) ProtoMessage() {}

func (x *Section) ProtoReflect() protoreflect.Message {
	mi := &file_content_content_proto_msgTypes[42]
	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 Section.ProtoReflect.Descriptor instead.
func (*Section) Descriptor() ([]byte, []int) {
	return file_content_content_proto_rawDescGZIP(), []int{42}
}

func (x *Section) GetTags() []string {
	if x != nil {
		return x.Tags
	}
	return nil
}

func (x *Section) GetMenu() *MenuItem {
	if x != nil {
		return x.Menu
	}
	return nil
}

var file_content_content_proto_extTypes = []protoimpl.ExtensionInfo{
	{
		ExtendedType:  (*descriptorpb.FieldOptions)(nil),
		ExtensionType: (*bool)(nil),
		Field:         50001,
		Name:          "content.ui_hide_field",
		Tag:           "varint,50001,opt,name=ui_hide_field",
		Filename:      "content/content.proto",
	},
}

// Extension fields to descriptorpb.FieldOptions.
var (
	// TODO breadchris make this a message for more robust settings?
	//
	// optional bool ui_hide_field = 50001;
	E_UiHideField = &file_content_content_proto_extTypes[0]
)

var File_content_content_proto protoreflect.FileDescriptor

var file_content_content_proto_rawDesc = []byte{
	0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70,
	0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x75,
	0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73,
	0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x1a, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x67, 0x70,
	0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x72,
	0x6f, 0x77, 0x73, 0x65, 0x72, 0x2f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0x26, 0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x22, 0x23, 0x0a, 0x0d, 0x49,
	0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x22, 0x6b, 0x0a, 0x0d, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x12, 0x2f, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x52, 0x50,
	0x43, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x54,
	0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x22, 0x4c, 0x0a,
	0x11, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79,
	0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x3a, 0x0a, 0x11, 0x56,
	0x6f, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x12, 0x25, 0x0a, 0x0e, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69,
	0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72,
	0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x56, 0x6f, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a,
	0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74,
	0x52, 0x07, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x5d, 0x0a, 0x0d, 0x52, 0x65, 0x6c,
	0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61,
	0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65,
	0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x18,
	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x07, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x22, 0x3e, 0x0a, 0x07, 0x53, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x45,
	0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52,
	0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x22, 0x7d, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d,
	0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x06,
	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x44, 0x69, 0x73, 0x70,
	0x6c, 0x61, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69,
	0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
	0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x22, 0x7a, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x29, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65,
	0x72, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x06, 0x66,
	0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06,
	0x66, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x08,
	0x0a, 0x06, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x1c, 0x0a, 0x06, 0x46, 0x6f, 0x6c, 0x64,
	0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x43, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67,
	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x27, 0x0a, 0x0a, 0x54,
	0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x49, 0x64, 0x22, 0x28, 0x0a, 0x04, 0x54, 0x61, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x04,
	0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x42,
	0x0a, 0x03, 0x54, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x73, 0x75, 0x62,
	0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x07, 0x73, 0x75, 0x62, 0x54, 0x61,
	0x67, 0x73, 0x22, 0x2d, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x73,
	0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18,
	0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x64,
	0x73, 0x22, 0x90, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a,
	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61,
	0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x2a,
	0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61,
	0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x72,
	0x65, 0x6e, 0x74, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71,
	0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49,
	0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x44,
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
	0x74, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x07, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x22, 0xb3, 0x02, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
	0x12, 0x2a, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
	0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x1e, 0x0a, 0x04,
	0x75, 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x75, 0x73, 0x65,
	0x72, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x04,
	0x74, 0x61, 0x67, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x18,
	0x0a, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x22, 0x2a, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x74, 0x6f, 0x22, 0xd5, 0x03, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x12, 0x18, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x04,
	0x88, 0xb5, 0x18, 0x01, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x0e, 0x0a, 0x02, 0x69,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x64,
	0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x12, 0x35, 0x0a, 0x0a, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x4e,
	0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x6f, 0x72,
	0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
	0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65,
	0x64, 0x12, 0x23, 0x0a, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x48, 0x00,
	0x52, 0x04, 0x70, 0x6f, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x0a,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53,
	0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x4a, 0x0a, 0x14, 0x63,
	0x68, 0x61, 0x74, 0x67, 0x70, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x63, 0x68, 0x61, 0x74,
	0x67, 0x70, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x48, 0x00, 0x52, 0x13, 0x63, 0x68, 0x61, 0x74, 0x67, 0x70, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65,
	0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0f, 0x62, 0x72, 0x6f, 0x77, 0x73,
	0x65, 0x72, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x10, 0x2e, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f,
	0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x48, 0x69, 0x73,
	0x74, 0x6f, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x80, 0x01, 0x0a,
	0x04, 0x50, 0x6f, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75,
	0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12,
	0x18, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x61,
	0x66, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x72, 0x61, 0x66, 0x74, 0x22,
	0x1b, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x7a, 0x0a, 0x04,
	0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78,
	0x74, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x66, 0x69, 0x6c,
	0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20,
	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x52, 0x4c, 0x48, 0x00, 0x52, 0x03, 0x75, 0x72, 0x6c,
	0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x0a, 0x4e, 0x6f, 0x72,
	0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x61, 0x72, 0x74, 0x69, 0x63,
	0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x07, 0x61, 0x72,
	0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x54,
	0x4d, 0x4c, 0x48, 0x00, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x12, 0x35, 0x0a, 0x0a, 0x74, 0x72,
	0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72,
	0x69, 0x70, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x63, 0x72, 0x69, 0x70,
	0x74, 0x12, 0x29, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x0f, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64,
	0x4d, 0x65, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x61, 0x64, 0x6d, 0x65, 0x42, 0x06, 0x0a, 0x04,
	0x74, 0x79, 0x70, 0x65, 0x22, 0x7a, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72,
	0x6d, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
	0x79, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e,
	0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x61,
	0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65,
	0x22, 0xca, 0x01, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65,
	0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67,
	0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x78, 0x63, 0x65, 0x72, 0x70, 0x74, 0x12, 0x1b, 0x0a, 0x09,
	0x73, 0x69, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x73, 0x69, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6d, 0x61,
	0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12,
	0x18, 0x0a, 0x07, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78,
	0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0x1a, 0x0a,
	0x04, 0x48, 0x54, 0x4d, 0x4c, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x1c, 0x0a, 0x06, 0x52, 0x65, 0x61,
	0x64, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x23, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x2c, 0x0a, 0x0a,
	0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61,
	0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
	0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x40, 0x0a, 0x04, 0x46, 0x69,
	0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
	0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x22, 0x1a, 0x0a, 0x04,
	0x54, 0x65, 0x78, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x43, 0x0a, 0x03, 0x55, 0x52, 0x4c, 0x12,
	0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72,
	0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x72, 0x61, 0x77, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x05, 0x63, 0x72, 0x61, 0x77, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x73, 0x0a,
	0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f,
	0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72,
	0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
	0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x74, 0x65, 0x78, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x01, 0x70, 0x22, 0x91, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10,
	0x0a, 0x03, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6e, 0x75, 0x6d,
	0x12, 0x26, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x0e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
	0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
	0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65,
	0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x65,
	0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x0a, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x63,
	0x72, 0x69, 0x70, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x73, 0x65, 0x67, 0x6d,
	0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x73, 0x65,
	0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xbb, 0x03, 0x0a, 0x0c, 0x47, 0x52, 0x50, 0x43, 0x54,
	0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x32, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
	0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x46, 0x0a, 0x0b, 0x64,
	0x65, 0x73, 0x63, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x54,
	0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x4c, 0x6f, 0x6f, 0x6b,
	0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x63, 0x4c, 0x6f, 0x6f,
	0x6b, 0x75, 0x70, 0x12, 0x46, 0x0a, 0x0b, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b,
	0x75, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x2e, 0x47, 0x52, 0x50, 0x43, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e,
	0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
	0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x70,
	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x5f,
	0x0a, 0x0f, 0x44, 0x65, 0x73, 0x63, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72,
	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
	0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
	0x63, 0x0a, 0x0f, 0x45, 0x6e, 0x75, 0x6d, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
	0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x22, 0x6a, 0x0a, 0x04, 0x53, 0x69, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x08,
	0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0b, 0x68, 0x75,
	0x67, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x75, 0x67, 0x6f, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x68, 0x75, 0x67, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
	0x22, 0x44, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74,
	0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12,
	0x25, 0x0a, 0x04, 0x6d, 0x65, 0x6e, 0x75, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x6e, 0x75, 0x49, 0x74, 0x65, 0x6d,
	0x52, 0x04, 0x6d, 0x65, 0x6e, 0x75, 0x32, 0xa2, 0x05, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x53, 0x61, 0x76,
	0x65, 0x12, 0x11, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x73, 0x1a, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x12, 0x0e, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x1a, 0x10, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x12,
	0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x65,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
	0x2e, 0x0a, 0x07, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0x10, 0x2e, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x1a, 0x11, 0x2e, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x12,
	0x32, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x73, 0x1a, 0x13,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x49, 0x44, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x13,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61,
	0x67, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x12, 0x17, 0x2e,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x61, 0x67, 0x73, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x33,
	0x0a, 0x07, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x12, 0x13, 0x2e, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x73, 0x1a, 0x13,
	0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x49, 0x44, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x73, 0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x53,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e,
	0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12,
	0x38, 0x0a, 0x05, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x12, 0x15, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
	0x16, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x66, 0x65, 0x72, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x37, 0x0a, 0x05, 0x54, 0x79, 0x70,
	0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x63, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
	0x73, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75, 0x74,
	0x12, 0x1a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x6f, 0x69, 0x63, 0x65,
	0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x3a, 0x43, 0x0a, 0x0d, 0x75,
	0x69, 0x5f, 0x68, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
	0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd1, 0x86, 0x03, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x69, 0x48, 0x69, 0x64, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64,
	0x42, 0x8a, 0x01, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x42, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
	0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x75, 0x6e,
	0x61, 0x62, 0x72, 0x61, 0x69, 0x6e, 0x2d, 0x61, 0x69, 0x2f, 0x6c, 0x75, 0x6e, 0x61, 0x62, 0x72,
	0x61, 0x69, 0x6e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x07, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0xca, 0x02, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0xe2, 0x02, 0x13,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
	0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x62, 0x06, 0x70,
	0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_content_content_proto_rawDescOnce sync.Once
	file_content_content_proto_rawDescData = file_content_content_proto_rawDesc
)

func file_content_content_proto_rawDescGZIP() []byte {
	file_content_content_proto_rawDescOnce.Do(func() {
		file_content_content_proto_rawDescData = protoimpl.X.CompressGZIP(file_content_content_proto_rawDescData)
	})
	return file_content_content_proto_rawDescData
}

var file_content_content_proto_msgTypes = make([]protoimpl.MessageInfo, 45)
var file_content_content_proto_goTypes = []interface{}{
	(*InferRequest)(nil),                     // 0: content.InferRequest
	(*InferResponse)(nil),                    // 1: content.InferResponse
	(*TypesResponse)(nil),                    // 2: content.TypesResponse
	(*GetSourcesRequest)(nil),                // 3: content.GetSourcesRequest
	(*VoiceInputRequest)(nil),                // 4: content.VoiceInputRequest
	(*VoiceInputResponse)(nil),               // 5: content.VoiceInputResponse
	(*RelateRequest)(nil),                    // 6: content.RelateRequest
	(*Sources)(nil),                          // 7: content.Sources
	(*EnumeratedSource)(nil),                 // 8: content.EnumeratedSource
	(*DisplayContent)(nil),                   // 9: content.DisplayContent
	(*Source)(nil),                           // 10: content.Source
	(*Server)(nil),                           // 11: content.Server
	(*Folder)(nil),                           // 12: content.Folder
	(*SetTagsRequest)(nil),                   // 13: content.SetTagsRequest
	(*TagRequest)(nil),                       // 14: content.TagRequest
	(*Tags)(nil),                             // 15: content.Tags
	(*Tag)(nil),                              // 16: content.Tag
	(*ContentIDs)(nil),                       // 17: content.ContentIDs
	(*Contents)(nil),                         // 18: content.Contents
	(*Query)(nil),                            // 19: content.Query
	(*Results)(nil),                          // 20: content.Results
	(*StoredContent)(nil),                    // 21: content.StoredContent
	(*Edge)(nil),                             // 22: content.Edge
	(*Content)(nil),                          // 23: content.Content
	(*Post)(nil),                             // 24: content.Post
	(*GitRepo)(nil),                          // 25: content.GitRepo
	(*Data)(nil),                             // 26: content.Data
	(*Normalized)(nil),                       // 27: content.Normalized
	(*Transformed)(nil),                      // 28: content.Transformed
	(*Article)(nil),                          // 29: content.Article
	(*HTML)(nil),                             // 30: content.HTML
	(*ReadMe)(nil),                           // 31: content.ReadMe
	(*Summary)(nil),                          // 32: content.Summary
	(*Categories)(nil),                       // 33: content.Categories
	(*File)(nil),                             // 34: content.File
	(*Text)(nil),                             // 35: content.Text
	(*URL)(nil),                              // 36: content.URL
	(*Token)(nil),                            // 37: content.Token
	(*Segment)(nil),                          // 38: content.Segment
	(*Transcript)(nil),                       // 39: content.Transcript
	(*GRPCTypeInfo)(nil),                     // 40: content.GRPCTypeInfo
	(*Site)(nil),                             // 41: content.Site
	(*Section)(nil),                          // 42: content.Section
	nil,                                      // 43: content.GRPCTypeInfo.DescLookupEntry
	nil,                                      // 44: content.GRPCTypeInfo.EnumLookupEntry
	(*user.User)(nil),                        // 45: user.User
	(*chatgpt.Conversation)(nil),             // 46: chatgpt.Conversation
	(*browser.History)(nil),                  // 47: browser.History
	(*descriptorpb.DescriptorProto)(nil),     // 48: google.protobuf.DescriptorProto
	(*HugoConfig)(nil),                       // 49: content.HugoConfig
	(*MenuItem)(nil),                         // 50: content.MenuItem
	(*descriptorpb.EnumDescriptorProto)(nil), // 51: google.protobuf.EnumDescriptorProto
	(*descriptorpb.FieldOptions)(nil),        // 52: google.protobuf.FieldOptions
	(*emptypb.Empty)(nil),                    // 53: google.protobuf.Empty
}
var file_content_content_proto_depIdxs = []int32{
	40, // 0: content.TypesResponse.content:type_name -> content.GRPCTypeInfo
	40, // 1: content.TypesResponse.site:type_name -> content.GRPCTypeInfo
	38, // 2: content.VoiceInputResponse.segment:type_name -> content.Segment
	8,  // 3: content.Sources.sources:type_name -> content.EnumeratedSource
	10, // 4: content.EnumeratedSource.source:type_name -> content.Source
	9,  // 5: content.EnumeratedSource.display_content:type_name -> content.DisplayContent
	23, // 6: content.DisplayContent.content:type_name -> content.Content
	11, // 7: content.Source.server:type_name -> content.Server
	12, // 8: content.Source.folder:type_name -> content.Folder
	16, // 9: content.Tags.tags:type_name -> content.Tag
	16, // 10: content.Tag.sub_tags:type_name -> content.Tag
	23, // 11: content.Contents.content:type_name -> content.Content
	23, // 12: content.Contents.related:type_name -> content.Content
	21, // 13: content.Results.storedContent:type_name -> content.StoredContent
	23, // 14: content.StoredContent.content:type_name -> content.Content
	23, // 15: content.StoredContent.related:type_name -> content.Content
	45, // 16: content.StoredContent.user:type_name -> user.User
	16, // 17: content.StoredContent.tags:type_name -> content.Tag
	26, // 18: content.Content.data:type_name -> content.Data
	27, // 19: content.Content.normalized:type_name -> content.Normalized
	28, // 20: content.Content.transformed:type_name -> content.Transformed
	24, // 21: content.Content.post:type_name -> content.Post
	41, // 22: content.Content.site:type_name -> content.Site
	46, // 23: content.Content.chatgpt_conversation:type_name -> chatgpt.Conversation
	47, // 24: content.Content.browser_history:type_name -> browser.History
	35, // 25: content.Data.text:type_name -> content.Text
	34, // 26: content.Data.file:type_name -> content.File
	36, // 27: content.Data.url:type_name -> content.URL
	29, // 28: content.Normalized.article:type_name -> content.Article
	30, // 29: content.Normalized.html:type_name -> content.HTML
	39, // 30: content.Normalized.transcript:type_name -> content.Transcript
	31, // 31: content.Normalized.readme:type_name -> content.ReadMe
	32, // 32: content.Transformed.summary:type_name -> content.Summary
	33, // 33: content.Transformed.categories:type_name -> content.Categories
	37, // 34: content.Segment.tokens:type_name -> content.Token
	38, // 35: content.Transcript.segments:type_name -> content.Segment
	48, // 36: content.GRPCTypeInfo.msg:type_name -> google.protobuf.DescriptorProto
	43, // 37: content.GRPCTypeInfo.desc_lookup:type_name -> content.GRPCTypeInfo.DescLookupEntry
	44, // 38: content.GRPCTypeInfo.enum_lookup:type_name -> content.GRPCTypeInfo.EnumLookupEntry
	42, // 39: content.Site.sections:type_name -> content.Section
	49, // 40: content.Site.hugo_config:type_name -> content.HugoConfig
	50, // 41: content.Section.menu:type_name -> content.MenuItem
	48, // 42: content.GRPCTypeInfo.DescLookupEntry.value:type_name -> google.protobuf.DescriptorProto
	51, // 43: content.GRPCTypeInfo.EnumLookupEntry.value:type_name -> google.protobuf.EnumDescriptorProto
	52, // 44: content.ui_hide_field:extendee -> google.protobuf.FieldOptions
	18, // 45: content.ContentService.Save:input_type -> content.Contents
	19, // 46: content.ContentService.Search:input_type -> content.Query
	6,  // 47: content.ContentService.Relate:input_type -> content.RelateRequest
	23, // 48: content.ContentService.Analyze:input_type -> content.Content
	17, // 49: content.ContentService.Delete:input_type -> content.ContentIDs
	14, // 50: content.ContentService.GetTags:input_type -> content.TagRequest
	13, // 51: content.ContentService.SetTags:input_type -> content.SetTagsRequest
	17, // 52: content.ContentService.Publish:input_type -> content.ContentIDs
	3,  // 53: content.ContentService.GetSources:input_type -> content.GetSourcesRequest
	0,  // 54: content.ContentService.Infer:input_type -> content.InferRequest
	53, // 55: content.ContentService.Types:input_type -> google.protobuf.Empty
	4,  // 56: content.ContentService.VoiceInput:input_type -> content.VoiceInputRequest
	17, // 57: content.ContentService.Save:output_type -> content.ContentIDs
	20, // 58: content.ContentService.Search:output_type -> content.Results
	53, // 59: content.ContentService.Relate:output_type -> google.protobuf.Empty
	18, // 60: content.ContentService.Analyze:output_type -> content.Contents
	17, // 61: content.ContentService.Delete:output_type -> content.ContentIDs
	15, // 62: content.ContentService.GetTags:output_type -> content.Tags
	53, // 63: content.ContentService.SetTags:output_type -> google.protobuf.Empty
	17, // 64: content.ContentService.Publish:output_type -> content.ContentIDs
	7,  // 65: content.ContentService.GetSources:output_type -> content.Sources
	1,  // 66: content.ContentService.Infer:output_type -> content.InferResponse
	2,  // 67: content.ContentService.Types:output_type -> content.TypesResponse
	5,  // 68: content.ContentService.VoiceInput:output_type -> content.VoiceInputResponse
	57, // [57:69] is the sub-list for method output_type
	45, // [45:57] is the sub-list for method input_type
	45, // [45:45] is the sub-list for extension type_name
	44, // [44:45] is the sub-list for extension extendee
	0,  // [0:44] is the sub-list for field type_name
}

func init() { file_content_content_proto_init() }
func file_content_content_proto_init() {
	if File_content_content_proto != nil {
		return
	}
	file_content_blog_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_content_content_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*InferRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*InferResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TypesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GetSourcesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VoiceInputRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VoiceInputResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RelateRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Sources); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EnumeratedSource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DisplayContent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Source); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Server); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Folder); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetTagsRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TagRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Tags); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Tag); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ContentIDs); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Contents); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Query); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Results); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StoredContent); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Edge); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Content); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Post); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GitRepo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Data); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Normalized); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Transformed); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Article); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HTML); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReadMe); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Summary); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Categories); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*File); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Text); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*URL); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Token); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Segment); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Transcript); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GRPCTypeInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Site); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_content_content_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Section); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_content_content_proto_msgTypes[10].OneofWrappers = []interface{}{
		(*Source_Server)(nil),
		(*Source_Folder)(nil),
	}
	file_content_content_proto_msgTypes[23].OneofWrappers = []interface{}{
		(*Content_Data)(nil),
		(*Content_Normalized)(nil),
		(*Content_Transformed)(nil),
		(*Content_Post)(nil),
		(*Content_Site)(nil),
		(*Content_ChatgptConversation)(nil),
		(*Content_BrowserHistory)(nil),
	}
	file_content_content_proto_msgTypes[26].OneofWrappers = []interface{}{
		(*Data_Text)(nil),
		(*Data_File)(nil),
		(*Data_Url)(nil),
	}
	file_content_content_proto_msgTypes[27].OneofWrappers = []interface{}{
		(*Normalized_Article)(nil),
		(*Normalized_Html)(nil),
		(*Normalized_Transcript)(nil),
		(*Normalized_Readme)(nil),
	}
	file_content_content_proto_msgTypes[28].OneofWrappers = []interface{}{
		(*Transformed_Summary)(nil),
		(*Transformed_Categories)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_content_content_proto_rawDesc,
			NumEnums:      0,
			NumMessages:   45,
			NumExtensions: 1,
			NumServices:   1,
		},
		GoTypes:           file_content_content_proto_goTypes,
		DependencyIndexes: file_content_content_proto_depIdxs,
		MessageInfos:      file_content_content_proto_msgTypes,
		ExtensionInfos:    file_content_content_proto_extTypes,
	}.Build()
	File_content_content_proto = out.File
	file_content_content_proto_rawDesc = nil
	file_content_content_proto_goTypes = nil
	file_content_content_proto_depIdxs = nil
}
