blob: 864a4ae160bd3c81df078df9d243525ba5b02632 [file] [log] [blame]
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: go.chromium.org/luci/common/proto/config/service_config.proto
package config
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// Depending on repository type, config service imports configuration files
// differently.
type ConfigSetLocation_StorageType int32
const (
// Will be used if storage_type is not set.
ConfigSetLocation_UNSET ConfigSetLocation_StorageType = 0
// Gitiles REST API is used to fetch config files.
ConfigSetLocation_GITILES ConfigSetLocation_StorageType = 1
)
var ConfigSetLocation_StorageType_name = map[int32]string{
0: "UNSET",
1: "GITILES",
}
var ConfigSetLocation_StorageType_value = map[string]int32{
"UNSET": 0,
"GITILES": 1,
}
func (x ConfigSetLocation_StorageType) String() string {
return proto.EnumName(ConfigSetLocation_StorageType_name, int32(x))
}
func (ConfigSetLocation_StorageType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{0, 0}
}
// Severity of a validation response message. In JSON encoded as a string.
type ValidationResponseMessage_Severity int32
const (
ValidationResponseMessage_UNKNOWN ValidationResponseMessage_Severity = 0
ValidationResponseMessage_DEBUG ValidationResponseMessage_Severity = 10
ValidationResponseMessage_INFO ValidationResponseMessage_Severity = 20
ValidationResponseMessage_WARNING ValidationResponseMessage_Severity = 30
ValidationResponseMessage_ERROR ValidationResponseMessage_Severity = 40
ValidationResponseMessage_CRITICAL ValidationResponseMessage_Severity = 50
)
var ValidationResponseMessage_Severity_name = map[int32]string{
0: "UNKNOWN",
10: "DEBUG",
20: "INFO",
30: "WARNING",
40: "ERROR",
50: "CRITICAL",
}
var ValidationResponseMessage_Severity_value = map[string]int32{
"UNKNOWN": 0,
"DEBUG": 10,
"INFO": 20,
"WARNING": 30,
"ERROR": 40,
"CRITICAL": 50,
}
func (x ValidationResponseMessage_Severity) String() string {
return proto.EnumName(ValidationResponseMessage_Severity_name, int32(x))
}
func (ValidationResponseMessage_Severity) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{13, 0}
}
// Used to specify project/service configuration location.
type ConfigSetLocation struct {
// URL of the repository where project-wide configurations are stored.
Url string `protobuf:"bytes,1,opt,name=url,proto3" json:"url,omitempty"`
// Type of the configuration repository, e.g. GITILES.
StorageType ConfigSetLocation_StorageType `protobuf:"varint,2,opt,name=storage_type,json=storageType,proto3,enum=config.ConfigSetLocation_StorageType" json:"storage_type,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ConfigSetLocation) Reset() { *m = ConfigSetLocation{} }
func (m *ConfigSetLocation) String() string { return proto.CompactTextString(m) }
func (*ConfigSetLocation) ProtoMessage() {}
func (*ConfigSetLocation) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{0}
}
func (m *ConfigSetLocation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigSetLocation.Unmarshal(m, b)
}
func (m *ConfigSetLocation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ConfigSetLocation.Marshal(b, m, deterministic)
}
func (m *ConfigSetLocation) XXX_Merge(src proto.Message) {
xxx_messageInfo_ConfigSetLocation.Merge(m, src)
}
func (m *ConfigSetLocation) XXX_Size() int {
return xxx_messageInfo_ConfigSetLocation.Size(m)
}
func (m *ConfigSetLocation) XXX_DiscardUnknown() {
xxx_messageInfo_ConfigSetLocation.DiscardUnknown(m)
}
var xxx_messageInfo_ConfigSetLocation proto.InternalMessageInfo
func (m *ConfigSetLocation) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
func (m *ConfigSetLocation) GetStorageType() ConfigSetLocation_StorageType {
if m != nil {
return m.StorageType
}
return ConfigSetLocation_UNSET
}
// Used to define project specific identities for LUCI to act on behalf when
// interacting with external systems. This allows projects to use exclusive
// and isolated identities to not be accidentally affected by other projects.
type IdentityConfig struct {
// ServiceAccountEmail is the full service account email to use when
// LUCI acts on behalf of the project.
//
// Note: Due to token caching, it takes ~15 minutes for a config change
// to become effective. Keep this in mind when migrating projects to a
// new identity.
ServiceAccountEmail string `protobuf:"bytes,1,opt,name=service_account_email,json=serviceAccountEmail,proto3" json:"service_account_email,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *IdentityConfig) Reset() { *m = IdentityConfig{} }
func (m *IdentityConfig) String() string { return proto.CompactTextString(m) }
func (*IdentityConfig) ProtoMessage() {}
func (*IdentityConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{1}
}
func (m *IdentityConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_IdentityConfig.Unmarshal(m, b)
}
func (m *IdentityConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_IdentityConfig.Marshal(b, m, deterministic)
}
func (m *IdentityConfig) XXX_Merge(src proto.Message) {
xxx_messageInfo_IdentityConfig.Merge(m, src)
}
func (m *IdentityConfig) XXX_Size() int {
return xxx_messageInfo_IdentityConfig.Size(m)
}
func (m *IdentityConfig) XXX_DiscardUnknown() {
xxx_messageInfo_IdentityConfig.DiscardUnknown(m)
}
var xxx_messageInfo_IdentityConfig proto.InternalMessageInfo
func (m *IdentityConfig) GetServiceAccountEmail() string {
if m != nil {
return m.ServiceAccountEmail
}
return ""
}
// A tenant of a service. Defined in projects.cfg.
type Project struct {
// Globally unique id of the project.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Where to import "projects/<id>" config set from.
ConfigLocation *ConfigSetLocation `protobuf:"bytes,2,opt,name=config_location,json=configLocation,proto3" json:"config_location,omitempty"`
// IdentityConfig determines what identities are used when LUCI acts on
// behalf of the project towards external services.
IdentityConfig *IdentityConfig `protobuf:"bytes,3,opt,name=identity_config,json=identityConfig,proto3" json:"identity_config,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Project) Reset() { *m = Project{} }
func (m *Project) String() string { return proto.CompactTextString(m) }
func (*Project) ProtoMessage() {}
func (*Project) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{2}
}
func (m *Project) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Project.Unmarshal(m, b)
}
func (m *Project) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Project.Marshal(b, m, deterministic)
}
func (m *Project) XXX_Merge(src proto.Message) {
xxx_messageInfo_Project.Merge(m, src)
}
func (m *Project) XXX_Size() int {
return xxx_messageInfo_Project.Size(m)
}
func (m *Project) XXX_DiscardUnknown() {
xxx_messageInfo_Project.DiscardUnknown(m)
}
var xxx_messageInfo_Project proto.InternalMessageInfo
func (m *Project) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *Project) GetConfigLocation() *ConfigSetLocation {
if m != nil {
return m.ConfigLocation
}
return nil
}
func (m *Project) GetIdentityConfig() *IdentityConfig {
if m != nil {
return m.IdentityConfig
}
return nil
}
// Schema of projects.cfg file. Represents luci tenants registry.
type ProjectsCfg struct {
// All projects served by this instance of Luci.
Projects []*Project `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ProjectsCfg) Reset() { *m = ProjectsCfg{} }
func (m *ProjectsCfg) String() string { return proto.CompactTextString(m) }
func (*ProjectsCfg) ProtoMessage() {}
func (*ProjectsCfg) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{3}
}
func (m *ProjectsCfg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ProjectsCfg.Unmarshal(m, b)
}
func (m *ProjectsCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ProjectsCfg.Marshal(b, m, deterministic)
}
func (m *ProjectsCfg) XXX_Merge(src proto.Message) {
xxx_messageInfo_ProjectsCfg.Merge(m, src)
}
func (m *ProjectsCfg) XXX_Size() int {
return xxx_messageInfo_ProjectsCfg.Size(m)
}
func (m *ProjectsCfg) XXX_DiscardUnknown() {
xxx_messageInfo_ProjectsCfg.DiscardUnknown(m)
}
var xxx_messageInfo_ProjectsCfg proto.InternalMessageInfo
func (m *ProjectsCfg) GetProjects() []*Project {
if m != nil {
return m.Projects
}
return nil
}
// Describes one luci service.
type Service struct {
// Globally unique id of the service. Required.
// Used in "services/<service_id>" config set name.
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// Email addresses of responsible and point-of-contacts for the service.
Owners []string `protobuf:"bytes,2,rep,name=owners,proto3" json:"owners,omitempty"`
// Where to import "services/<id>" config set from. If config_location.url is
// relative, it is relative to the current configuration file.
// If not specified, defaults to "../<id>/".
// Not yet implemented.
ConfigLocation *ConfigSetLocation `protobuf:"bytes,3,opt,name=config_location,json=configLocation,proto3" json:"config_location,omitempty"`
// An HTTPS endpoint that returns JSON-encoded ServiceDynamicMetadata in body.
MetadataUrl string `protobuf:"bytes,4,opt,name=metadata_url,json=metadataUrl,proto3" json:"metadata_url,omitempty"`
// A list of identities that have access to this service's configs.
// of:
// * "group:<group>", where group is defined on auth server.
// * "<email>"
// * "<kind>:<value>" (for non-email identities)
//
// If not specified, only admins and trusted services have access.
Access []string `protobuf:"bytes,5,rep,name=access,proto3" json:"access,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Service) Reset() { *m = Service{} }
func (m *Service) String() string { return proto.CompactTextString(m) }
func (*Service) ProtoMessage() {}
func (*Service) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{4}
}
func (m *Service) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Service.Unmarshal(m, b)
}
func (m *Service) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Service.Marshal(b, m, deterministic)
}
func (m *Service) XXX_Merge(src proto.Message) {
xxx_messageInfo_Service.Merge(m, src)
}
func (m *Service) XXX_Size() int {
return xxx_messageInfo_Service.Size(m)
}
func (m *Service) XXX_DiscardUnknown() {
xxx_messageInfo_Service.DiscardUnknown(m)
}
var xxx_messageInfo_Service proto.InternalMessageInfo
func (m *Service) GetId() string {
if m != nil {
return m.Id
}
return ""
}
func (m *Service) GetOwners() []string {
if m != nil {
return m.Owners
}
return nil
}
func (m *Service) GetConfigLocation() *ConfigSetLocation {
if m != nil {
return m.ConfigLocation
}
return nil
}
func (m *Service) GetMetadataUrl() string {
if m != nil {
return m.MetadataUrl
}
return ""
}
func (m *Service) GetAccess() []string {
if m != nil {
return m.Access
}
return nil
}
// Machine-generated service metadata, exposed by a service endpoint.
// Typically implemented by config component, embedded in an app:
// see appengine/components/components/config/endpoint.py
//
// If you add a field here, also add it to ServiceDynamicMetadata in endpoint.py
type ServiceDynamicMetadata struct {
// Format version. Supported versions: 1.0.
Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
// What configs this service can validate and how to validate them.
Validation *Validator `protobuf:"bytes,2,opt,name=validation,proto3" json:"validation,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ServiceDynamicMetadata) Reset() { *m = ServiceDynamicMetadata{} }
func (m *ServiceDynamicMetadata) String() string { return proto.CompactTextString(m) }
func (*ServiceDynamicMetadata) ProtoMessage() {}
func (*ServiceDynamicMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{5}
}
func (m *ServiceDynamicMetadata) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServiceDynamicMetadata.Unmarshal(m, b)
}
func (m *ServiceDynamicMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServiceDynamicMetadata.Marshal(b, m, deterministic)
}
func (m *ServiceDynamicMetadata) XXX_Merge(src proto.Message) {
xxx_messageInfo_ServiceDynamicMetadata.Merge(m, src)
}
func (m *ServiceDynamicMetadata) XXX_Size() int {
return xxx_messageInfo_ServiceDynamicMetadata.Size(m)
}
func (m *ServiceDynamicMetadata) XXX_DiscardUnknown() {
xxx_messageInfo_ServiceDynamicMetadata.DiscardUnknown(m)
}
var xxx_messageInfo_ServiceDynamicMetadata proto.InternalMessageInfo
func (m *ServiceDynamicMetadata) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
func (m *ServiceDynamicMetadata) GetValidation() *Validator {
if m != nil {
return m.Validation
}
return nil
}
// Schema of services.cfg
type ServicesCfg struct {
// A list of all luci services. Should be sorted by id.
Services []*Service `protobuf:"bytes,1,rep,name=services,proto3" json:"services,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ServicesCfg) Reset() { *m = ServicesCfg{} }
func (m *ServicesCfg) String() string { return proto.CompactTextString(m) }
func (*ServicesCfg) ProtoMessage() {}
func (*ServicesCfg) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{6}
}
func (m *ServicesCfg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServicesCfg.Unmarshal(m, b)
}
func (m *ServicesCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServicesCfg.Marshal(b, m, deterministic)
}
func (m *ServicesCfg) XXX_Merge(src proto.Message) {
xxx_messageInfo_ServicesCfg.Merge(m, src)
}
func (m *ServicesCfg) XXX_Size() int {
return xxx_messageInfo_ServicesCfg.Size(m)
}
func (m *ServicesCfg) XXX_DiscardUnknown() {
xxx_messageInfo_ServicesCfg.DiscardUnknown(m)
}
var xxx_messageInfo_ServicesCfg proto.InternalMessageInfo
func (m *ServicesCfg) GetServices() []*Service {
if m != nil {
return m.Services
}
return nil
}
// Schema of acl.cfg file.
// Next tag: 8.
type AclCfg struct {
// Name of the group that has access to all projects/* config sets.
// Only trusted services should be in this group.
ProjectAccessGroup string `protobuf:"bytes,2,opt,name=project_access_group,json=projectAccessGroup,proto3" json:"project_access_group,omitempty"`
// Name of the group that has access to all services/* config sets.
// Only trusted services should be in this group.
ServiceAccessGroup string `protobuf:"bytes,7,opt,name=service_access_group,json=serviceAccessGroup,proto3" json:"service_access_group,omitempty"`
// Name of the group that has admin access to the app.
AdminGroup string `protobuf:"bytes,3,opt,name=admin_group,json=adminGroup,proto3" json:"admin_group,omitempty"`
// Name of the group that can access configs by hash.
ConfigGetByHashGroup string `protobuf:"bytes,4,opt,name=config_get_by_hash_group,json=configGetByHashGroup,proto3" json:"config_get_by_hash_group,omitempty"`
// Name of the group that may call validation API.
ValidationGroup string `protobuf:"bytes,5,opt,name=validation_group,json=validationGroup,proto3" json:"validation_group,omitempty"`
// Name of the group that may call reimport API.
ReimportGroup string `protobuf:"bytes,6,opt,name=reimport_group,json=reimportGroup,proto3" json:"reimport_group,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AclCfg) Reset() { *m = AclCfg{} }
func (m *AclCfg) String() string { return proto.CompactTextString(m) }
func (*AclCfg) ProtoMessage() {}
func (*AclCfg) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{7}
}
func (m *AclCfg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AclCfg.Unmarshal(m, b)
}
func (m *AclCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AclCfg.Marshal(b, m, deterministic)
}
func (m *AclCfg) XXX_Merge(src proto.Message) {
xxx_messageInfo_AclCfg.Merge(m, src)
}
func (m *AclCfg) XXX_Size() int {
return xxx_messageInfo_AclCfg.Size(m)
}
func (m *AclCfg) XXX_DiscardUnknown() {
xxx_messageInfo_AclCfg.DiscardUnknown(m)
}
var xxx_messageInfo_AclCfg proto.InternalMessageInfo
func (m *AclCfg) GetProjectAccessGroup() string {
if m != nil {
return m.ProjectAccessGroup
}
return ""
}
func (m *AclCfg) GetServiceAccessGroup() string {
if m != nil {
return m.ServiceAccessGroup
}
return ""
}
func (m *AclCfg) GetAdminGroup() string {
if m != nil {
return m.AdminGroup
}
return ""
}
func (m *AclCfg) GetConfigGetByHashGroup() string {
if m != nil {
return m.ConfigGetByHashGroup
}
return ""
}
func (m *AclCfg) GetValidationGroup() string {
if m != nil {
return m.ValidationGroup
}
return ""
}
func (m *AclCfg) GetReimportGroup() string {
if m != nil {
return m.ReimportGroup
}
return ""
}
// Schema for import.cfg. It specified how to import configuration files from
// external sources.
type ImportCfg struct {
// Configuration of import from Gitiles repositories.
Gitiles *ImportCfg_Gitiles `protobuf:"bytes,1,opt,name=gitiles,proto3" json:"gitiles,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ImportCfg) Reset() { *m = ImportCfg{} }
func (m *ImportCfg) String() string { return proto.CompactTextString(m) }
func (*ImportCfg) ProtoMessage() {}
func (*ImportCfg) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{8}
}
func (m *ImportCfg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImportCfg.Unmarshal(m, b)
}
func (m *ImportCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ImportCfg.Marshal(b, m, deterministic)
}
func (m *ImportCfg) XXX_Merge(src proto.Message) {
xxx_messageInfo_ImportCfg.Merge(m, src)
}
func (m *ImportCfg) XXX_Size() int {
return xxx_messageInfo_ImportCfg.Size(m)
}
func (m *ImportCfg) XXX_DiscardUnknown() {
xxx_messageInfo_ImportCfg.DiscardUnknown(m)
}
var xxx_messageInfo_ImportCfg proto.InternalMessageInfo
func (m *ImportCfg) GetGitiles() *ImportCfg_Gitiles {
if m != nil {
return m.Gitiles
}
return nil
}
type ImportCfg_Gitiles struct {
// Request timeout in seconds when requesting commit log.
FetchLogDeadline int32 `protobuf:"varint,1,opt,name=fetch_log_deadline,json=fetchLogDeadline,proto3" json:"fetch_log_deadline,omitempty"`
// Request timeout in seconds when requesting directory archive.
FetchArchiveDeadline int32 `protobuf:"varint,2,opt,name=fetch_archive_deadline,json=fetchArchiveDeadline,proto3" json:"fetch_archive_deadline,omitempty"`
// DEPRECATED, ignored. TODO(nodir): remove.
// Default ref for project configs.
ProjectConfigDefaultRef string `protobuf:"bytes,3,opt,name=project_config_default_ref,json=projectConfigDefaultRef,proto3" json:"project_config_default_ref,omitempty"`
// DEPRECATED, ignored. TODO(nodir): remove.
// Default directory for project configs.
ProjectConfigDefaultPath string `protobuf:"bytes,4,opt,name=project_config_default_path,json=projectConfigDefaultPath,proto3" json:"project_config_default_path,omitempty"`
// Default directory for ref configs.
RefConfigDefaultPath string `protobuf:"bytes,5,opt,name=ref_config_default_path,json=refConfigDefaultPath,proto3" json:"ref_config_default_path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ImportCfg_Gitiles) Reset() { *m = ImportCfg_Gitiles{} }
func (m *ImportCfg_Gitiles) String() string { return proto.CompactTextString(m) }
func (*ImportCfg_Gitiles) ProtoMessage() {}
func (*ImportCfg_Gitiles) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{8, 0}
}
func (m *ImportCfg_Gitiles) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ImportCfg_Gitiles.Unmarshal(m, b)
}
func (m *ImportCfg_Gitiles) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ImportCfg_Gitiles.Marshal(b, m, deterministic)
}
func (m *ImportCfg_Gitiles) XXX_Merge(src proto.Message) {
xxx_messageInfo_ImportCfg_Gitiles.Merge(m, src)
}
func (m *ImportCfg_Gitiles) XXX_Size() int {
return xxx_messageInfo_ImportCfg_Gitiles.Size(m)
}
func (m *ImportCfg_Gitiles) XXX_DiscardUnknown() {
xxx_messageInfo_ImportCfg_Gitiles.DiscardUnknown(m)
}
var xxx_messageInfo_ImportCfg_Gitiles proto.InternalMessageInfo
func (m *ImportCfg_Gitiles) GetFetchLogDeadline() int32 {
if m != nil {
return m.FetchLogDeadline
}
return 0
}
func (m *ImportCfg_Gitiles) GetFetchArchiveDeadline() int32 {
if m != nil {
return m.FetchArchiveDeadline
}
return 0
}
func (m *ImportCfg_Gitiles) GetProjectConfigDefaultRef() string {
if m != nil {
return m.ProjectConfigDefaultRef
}
return ""
}
func (m *ImportCfg_Gitiles) GetProjectConfigDefaultPath() string {
if m != nil {
return m.ProjectConfigDefaultPath
}
return ""
}
func (m *ImportCfg_Gitiles) GetRefConfigDefaultPath() string {
if m != nil {
return m.RefConfigDefaultPath
}
return ""
}
// Schema of schemas.cfg
type SchemasCfg struct {
// List of known schemas. They are available at /schemas/<name> as a short
// mutable link.
Schemas []*SchemasCfg_Schema `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SchemasCfg) Reset() { *m = SchemasCfg{} }
func (m *SchemasCfg) String() string { return proto.CompactTextString(m) }
func (*SchemasCfg) ProtoMessage() {}
func (*SchemasCfg) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{9}
}
func (m *SchemasCfg) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SchemasCfg.Unmarshal(m, b)
}
func (m *SchemasCfg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SchemasCfg.Marshal(b, m, deterministic)
}
func (m *SchemasCfg) XXX_Merge(src proto.Message) {
xxx_messageInfo_SchemasCfg.Merge(m, src)
}
func (m *SchemasCfg) XXX_Size() int {
return xxx_messageInfo_SchemasCfg.Size(m)
}
func (m *SchemasCfg) XXX_DiscardUnknown() {
xxx_messageInfo_SchemasCfg.DiscardUnknown(m)
}
var xxx_messageInfo_SchemasCfg proto.InternalMessageInfo
func (m *SchemasCfg) GetSchemas() []*SchemasCfg_Schema {
if m != nil {
return m.Schemas
}
return nil
}
type SchemasCfg_Schema struct {
// Name of schema.
// For service configs, "<config_set>:<path>"
// For project configs, "projects:<path>"
// For ref configs, "projects/refs:<path>"
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// URL to the schema definition, e.g. to a .proto file in a repository.
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SchemasCfg_Schema) Reset() { *m = SchemasCfg_Schema{} }
func (m *SchemasCfg_Schema) String() string { return proto.CompactTextString(m) }
func (*SchemasCfg_Schema) ProtoMessage() {}
func (*SchemasCfg_Schema) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{9, 0}
}
func (m *SchemasCfg_Schema) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SchemasCfg_Schema.Unmarshal(m, b)
}
func (m *SchemasCfg_Schema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_SchemasCfg_Schema.Marshal(b, m, deterministic)
}
func (m *SchemasCfg_Schema) XXX_Merge(src proto.Message) {
xxx_messageInfo_SchemasCfg_Schema.Merge(m, src)
}
func (m *SchemasCfg_Schema) XXX_Size() int {
return xxx_messageInfo_SchemasCfg_Schema.Size(m)
}
func (m *SchemasCfg_Schema) XXX_DiscardUnknown() {
xxx_messageInfo_SchemasCfg_Schema.DiscardUnknown(m)
}
var xxx_messageInfo_SchemasCfg_Schema proto.InternalMessageInfo
func (m *SchemasCfg_Schema) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *SchemasCfg_Schema) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
// Defines a pattern of a config identity. Both config_set and path must
// match.
type ConfigPattern struct {
// A string pattern for config_set.
ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
// A string pattern for config file path.
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ConfigPattern) Reset() { *m = ConfigPattern{} }
func (m *ConfigPattern) String() string { return proto.CompactTextString(m) }
func (*ConfigPattern) ProtoMessage() {}
func (*ConfigPattern) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{10}
}
func (m *ConfigPattern) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfigPattern.Unmarshal(m, b)
}
func (m *ConfigPattern) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ConfigPattern.Marshal(b, m, deterministic)
}
func (m *ConfigPattern) XXX_Merge(src proto.Message) {
xxx_messageInfo_ConfigPattern.Merge(m, src)
}
func (m *ConfigPattern) XXX_Size() int {
return xxx_messageInfo_ConfigPattern.Size(m)
}
func (m *ConfigPattern) XXX_DiscardUnknown() {
xxx_messageInfo_ConfigPattern.DiscardUnknown(m)
}
var xxx_messageInfo_ConfigPattern proto.InternalMessageInfo
func (m *ConfigPattern) GetConfigSet() string {
if m != nil {
return m.ConfigSet
}
return ""
}
func (m *ConfigPattern) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
// Describes what configuration can be validated and how to validate them.
type Validator struct {
// A list of configuration patterns that this validator can validate.
Patterns []*ConfigPattern `protobuf:"bytes,1,rep,name=patterns,proto3" json:"patterns,omitempty"`
// URL of a validation endpoint. The config service will send an HTTP POST
// request to the endpoint, where body is JSON-encoded
// ValidationRequestMessage. The endpoint is expected to respond with
// HTTP status 200 and JSON-encoded ValidationResponseMessage.
Url string `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Validator) Reset() { *m = Validator{} }
func (m *Validator) String() string { return proto.CompactTextString(m) }
func (*Validator) ProtoMessage() {}
func (*Validator) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{11}
}
func (m *Validator) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Validator.Unmarshal(m, b)
}
func (m *Validator) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Validator.Marshal(b, m, deterministic)
}
func (m *Validator) XXX_Merge(src proto.Message) {
xxx_messageInfo_Validator.Merge(m, src)
}
func (m *Validator) XXX_Size() int {
return xxx_messageInfo_Validator.Size(m)
}
func (m *Validator) XXX_DiscardUnknown() {
xxx_messageInfo_Validator.DiscardUnknown(m)
}
var xxx_messageInfo_Validator proto.InternalMessageInfo
func (m *Validator) GetPatterns() []*ConfigPattern {
if m != nil {
return m.Patterns
}
return nil
}
func (m *Validator) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
// This message is used only in JSON form. It is sent as request body to an
// external validation endpoint in order to validate a config.
type ValidationRequestMessage struct {
// Config set of the config file to validate.
ConfigSet string `protobuf:"bytes,1,opt,name=config_set,json=configSet,proto3" json:"config_set,omitempty"`
// Path of the config file to validate.
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
// Contents of the file.
Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ValidationRequestMessage) Reset() { *m = ValidationRequestMessage{} }
func (m *ValidationRequestMessage) String() string { return proto.CompactTextString(m) }
func (*ValidationRequestMessage) ProtoMessage() {}
func (*ValidationRequestMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{12}
}
func (m *ValidationRequestMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ValidationRequestMessage.Unmarshal(m, b)
}
func (m *ValidationRequestMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ValidationRequestMessage.Marshal(b, m, deterministic)
}
func (m *ValidationRequestMessage) XXX_Merge(src proto.Message) {
xxx_messageInfo_ValidationRequestMessage.Merge(m, src)
}
func (m *ValidationRequestMessage) XXX_Size() int {
return xxx_messageInfo_ValidationRequestMessage.Size(m)
}
func (m *ValidationRequestMessage) XXX_DiscardUnknown() {
xxx_messageInfo_ValidationRequestMessage.DiscardUnknown(m)
}
var xxx_messageInfo_ValidationRequestMessage proto.InternalMessageInfo
func (m *ValidationRequestMessage) GetConfigSet() string {
if m != nil {
return m.ConfigSet
}
return ""
}
func (m *ValidationRequestMessage) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *ValidationRequestMessage) GetContent() []byte {
if m != nil {
return m.Content
}
return nil
}
// This message is used only in JSON form. It is expected from an external
// validation endpoint that validates a config.
type ValidationResponseMessage struct {
// Errors, warnings and other information found during validation.
// If at least one error is found, the config is considered invalid.
Messages []*ValidationResponseMessage_Message `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ValidationResponseMessage) Reset() { *m = ValidationResponseMessage{} }
func (m *ValidationResponseMessage) String() string { return proto.CompactTextString(m) }
func (*ValidationResponseMessage) ProtoMessage() {}
func (*ValidationResponseMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{13}
}
func (m *ValidationResponseMessage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ValidationResponseMessage.Unmarshal(m, b)
}
func (m *ValidationResponseMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ValidationResponseMessage.Marshal(b, m, deterministic)
}
func (m *ValidationResponseMessage) XXX_Merge(src proto.Message) {
xxx_messageInfo_ValidationResponseMessage.Merge(m, src)
}
func (m *ValidationResponseMessage) XXX_Size() int {
return xxx_messageInfo_ValidationResponseMessage.Size(m)
}
func (m *ValidationResponseMessage) XXX_DiscardUnknown() {
xxx_messageInfo_ValidationResponseMessage.DiscardUnknown(m)
}
var xxx_messageInfo_ValidationResponseMessage proto.InternalMessageInfo
func (m *ValidationResponseMessage) GetMessages() []*ValidationResponseMessage_Message {
if m != nil {
return m.Messages
}
return nil
}
// A message that explains why a config is valid or not.
type ValidationResponseMessage_Message struct {
// Path of the config file that has an error.
Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
// If an error, a config is considered invalid. Defaults to INFO.
Severity ValidationResponseMessage_Severity `protobuf:"varint,2,opt,name=severity,proto3,enum=config.ValidationResponseMessage_Severity" json:"severity,omitempty"`
// Textual representation of the message.
Text string `protobuf:"bytes,3,opt,name=text,proto3" json:"text,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ValidationResponseMessage_Message) Reset() { *m = ValidationResponseMessage_Message{} }
func (m *ValidationResponseMessage_Message) String() string { return proto.CompactTextString(m) }
func (*ValidationResponseMessage_Message) ProtoMessage() {}
func (*ValidationResponseMessage_Message) Descriptor() ([]byte, []int) {
return fileDescriptor_b74f321d20ceb312, []int{13, 0}
}
func (m *ValidationResponseMessage_Message) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ValidationResponseMessage_Message.Unmarshal(m, b)
}
func (m *ValidationResponseMessage_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ValidationResponseMessage_Message.Marshal(b, m, deterministic)
}
func (m *ValidationResponseMessage_Message) XXX_Merge(src proto.Message) {
xxx_messageInfo_ValidationResponseMessage_Message.Merge(m, src)
}
func (m *ValidationResponseMessage_Message) XXX_Size() int {
return xxx_messageInfo_ValidationResponseMessage_Message.Size(m)
}
func (m *ValidationResponseMessage_Message) XXX_DiscardUnknown() {
xxx_messageInfo_ValidationResponseMessage_Message.DiscardUnknown(m)
}
var xxx_messageInfo_ValidationResponseMessage_Message proto.InternalMessageInfo
func (m *ValidationResponseMessage_Message) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *ValidationResponseMessage_Message) GetSeverity() ValidationResponseMessage_Severity {
if m != nil {
return m.Severity
}
return ValidationResponseMessage_UNKNOWN
}
func (m *ValidationResponseMessage_Message) GetText() string {
if m != nil {
return m.Text
}
return ""
}
func init() {
proto.RegisterEnum("config.ConfigSetLocation_StorageType", ConfigSetLocation_StorageType_name, ConfigSetLocation_StorageType_value)
proto.RegisterEnum("config.ValidationResponseMessage_Severity", ValidationResponseMessage_Severity_name, ValidationResponseMessage_Severity_value)
proto.RegisterType((*ConfigSetLocation)(nil), "config.ConfigSetLocation")
proto.RegisterType((*IdentityConfig)(nil), "config.IdentityConfig")
proto.RegisterType((*Project)(nil), "config.Project")
proto.RegisterType((*ProjectsCfg)(nil), "config.ProjectsCfg")
proto.RegisterType((*Service)(nil), "config.Service")
proto.RegisterType((*ServiceDynamicMetadata)(nil), "config.ServiceDynamicMetadata")
proto.RegisterType((*ServicesCfg)(nil), "config.ServicesCfg")
proto.RegisterType((*AclCfg)(nil), "config.AclCfg")
proto.RegisterType((*ImportCfg)(nil), "config.ImportCfg")
proto.RegisterType((*ImportCfg_Gitiles)(nil), "config.ImportCfg.Gitiles")
proto.RegisterType((*SchemasCfg)(nil), "config.SchemasCfg")
proto.RegisterType((*SchemasCfg_Schema)(nil), "config.SchemasCfg.Schema")
proto.RegisterType((*ConfigPattern)(nil), "config.ConfigPattern")
proto.RegisterType((*Validator)(nil), "config.Validator")
proto.RegisterType((*ValidationRequestMessage)(nil), "config.ValidationRequestMessage")
proto.RegisterType((*ValidationResponseMessage)(nil), "config.ValidationResponseMessage")
proto.RegisterType((*ValidationResponseMessage_Message)(nil), "config.ValidationResponseMessage.Message")
}
func init() {
proto.RegisterFile("go.chromium.org/luci/common/proto/config/service_config.proto", fileDescriptor_b74f321d20ceb312)
}
var fileDescriptor_b74f321d20ceb312 = []byte{
// 977 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
0x14, 0xae, 0xd7, 0x89, 0x7f, 0x8e, 0x53, 0x67, 0x3b, 0xa4, 0xe9, 0x36, 0x08, 0x08, 0x2b, 0x45,
0x4a, 0x01, 0xd9, 0xd4, 0x05, 0x2e, 0x40, 0x15, 0x72, 0x62, 0xd7, 0xb5, 0x48, 0x9d, 0x68, 0x9c,
0xb4, 0x97, 0xab, 0xe9, 0x7a, 0xbc, 0x1e, 0xb4, 0xbb, 0xe3, 0xce, 0x8e, 0x0d, 0x7e, 0x11, 0xb8,
0x43, 0x3c, 0x02, 0x3c, 0x13, 0x2f, 0x82, 0x76, 0x7e, 0xd6, 0x0e, 0x4e, 0x85, 0xe0, 0x2a, 0x73,
0xe6, 0x7c, 0xdf, 0x99, 0xef, 0x7c, 0x73, 0x3c, 0x1b, 0x78, 0x1e, 0xf1, 0x56, 0x38, 0x13, 0x3c,
0x61, 0x8b, 0xa4, 0xc5, 0x45, 0xd4, 0x8e, 0x17, 0x21, 0x6b, 0x87, 0x3c, 0x49, 0x78, 0xda, 0x9e,
0x0b, 0x2e, 0x79, 0x3b, 0xe4, 0xe9, 0x94, 0x45, 0xed, 0x8c, 0x8a, 0x25, 0x0b, 0x69, 0xa0, 0xc3,
0x96, 0xca, 0xa1, 0x8a, 0x8e, 0xfc, 0x5f, 0x4a, 0xf0, 0xe0, 0x5c, 0x2d, 0xc7, 0x54, 0x5e, 0xf0,
0x90, 0x48, 0xc6, 0x53, 0xe4, 0x42, 0x79, 0x21, 0x62, 0xaf, 0x74, 0x5c, 0x3a, 0xad, 0xe3, 0x7c,
0x89, 0x5e, 0xc2, 0x5e, 0x26, 0xb9, 0x20, 0x11, 0x0d, 0xe4, 0x6a, 0x4e, 0x3d, 0xe7, 0xb8, 0x74,
0xda, 0xec, 0x9c, 0xb4, 0x4c, 0xd1, 0xad, 0x12, 0xad, 0xb1, 0x46, 0x5f, 0xaf, 0xe6, 0x14, 0x37,
0xb2, 0x75, 0xe0, 0x9f, 0x40, 0x63, 0x23, 0x87, 0xea, 0xb0, 0x7b, 0x33, 0x1a, 0xf7, 0xaf, 0xdd,
0x7b, 0xa8, 0x01, 0xd5, 0xc1, 0xf0, 0x7a, 0x78, 0xd1, 0x1f, 0xbb, 0x25, 0xbf, 0x07, 0xcd, 0xe1,
0x84, 0xa6, 0x92, 0xc9, 0x95, 0x2e, 0x8e, 0x3a, 0xf0, 0xd0, 0xb6, 0x42, 0xc2, 0x90, 0x2f, 0x52,
0x19, 0xd0, 0x84, 0x30, 0x2b, 0xf3, 0x03, 0x93, 0xec, 0xea, 0x5c, 0x3f, 0x4f, 0xf9, 0xbf, 0x95,
0xa0, 0x7a, 0x25, 0xf8, 0x8f, 0x34, 0x94, 0xa8, 0x09, 0x0e, 0x9b, 0x18, 0xb0, 0xc3, 0x26, 0xe8,
0x0c, 0xf6, 0xb5, 0xfa, 0x20, 0x36, 0xa2, 0x55, 0x57, 0x8d, 0xce, 0xe3, 0xf7, 0x76, 0x85, 0x9b,
0x3a, 0x53, 0x18, 0xf5, 0x3d, 0xec, 0x33, 0xa3, 0xd2, 0xf8, 0xeb, 0x95, 0x55, 0x8d, 0x43, 0x5b,
0xe3, 0x76, 0x13, 0xb8, 0xc9, 0x6e, 0xc5, 0xfe, 0xb7, 0xd0, 0x30, 0xfa, 0xb2, 0xf3, 0x69, 0x84,
0x3e, 0x87, 0xda, 0xdc, 0x84, 0x5e, 0xe9, 0xb8, 0x7c, 0xda, 0xe8, 0xec, 0xdb, 0x42, 0x06, 0x86,
0x0b, 0x80, 0xff, 0x47, 0x09, 0xaa, 0x63, 0xdd, 0xf4, 0x56, 0x73, 0x87, 0x50, 0xe1, 0x3f, 0xa5,
0x54, 0x64, 0x9e, 0x73, 0x5c, 0x3e, 0xad, 0x63, 0x13, 0xdd, 0xd5, 0x74, 0xf9, 0xbf, 0x36, 0xfd,
0x29, 0xec, 0x25, 0x54, 0x92, 0x09, 0x91, 0x24, 0xc8, 0xc7, 0x64, 0x47, 0x9d, 0xda, 0xb0, 0x7b,
0x37, 0x22, 0xce, 0x8f, 0x27, 0x61, 0x48, 0xb3, 0xcc, 0xdb, 0xd5, 0xc7, 0xeb, 0xc8, 0xa7, 0x70,
0x68, 0x14, 0xf7, 0x56, 0x29, 0x49, 0x58, 0xf8, 0xca, 0x90, 0x90, 0x07, 0xd5, 0x25, 0x15, 0x59,
0x2e, 0x48, 0x77, 0x61, 0x43, 0xf4, 0x14, 0x60, 0x49, 0x62, 0x36, 0xd9, 0xbc, 0xa2, 0x07, 0x56,
0xed, 0x6b, 0x9d, 0xe1, 0x02, 0x6f, 0x80, 0x72, 0x57, 0xcd, 0x31, 0xd6, 0x55, 0x33, 0x1c, 0x5b,
0xae, 0x1a, 0x18, 0x2e, 0x00, 0xfe, 0xaf, 0x0e, 0x54, 0xba, 0x61, 0x9c, 0xf3, 0xbe, 0x84, 0x03,
0x63, 0x76, 0xa0, 0xf5, 0x07, 0x91, 0xe0, 0x8b, 0xb9, 0xd2, 0x50, 0xc7, 0xc8, 0xe4, 0xba, 0x2a,
0x35, 0xc8, 0x33, 0x39, 0x63, 0x63, 0x46, 0xd7, 0x8c, 0xaa, 0x66, 0xac, 0x47, 0xb4, 0x60, 0x7c,
0x02, 0x0d, 0x32, 0x49, 0x58, 0x6a, 0x80, 0x65, 0x05, 0x04, 0xb5, 0xa5, 0x01, 0xdf, 0x80, 0x67,
0x6e, 0x2c, 0xa2, 0x32, 0x78, 0xbb, 0x0a, 0x66, 0x24, 0x9b, 0x19, 0xb4, 0x76, 0xfe, 0x40, 0xe7,
0x07, 0x54, 0x9e, 0xad, 0x5e, 0x92, 0x6c, 0xa6, 0x79, 0x4f, 0xc0, 0x5d, 0x3b, 0x62, 0xf0, 0xbb,
0x0a, 0xbf, 0xbf, 0xde, 0xd7, 0xd0, 0x13, 0x68, 0x0a, 0xca, 0x92, 0x39, 0x17, 0xd2, 0x00, 0x2b,
0x0a, 0x78, 0xdf, 0xee, 0x2a, 0x98, 0xff, 0x97, 0x03, 0xf5, 0xa1, 0x8a, 0x73, 0x73, 0x9e, 0x41,
0x35, 0x62, 0x92, 0xc5, 0xca, 0xd3, 0x5b, 0x13, 0x54, 0x60, 0x5a, 0x03, 0x0d, 0xc0, 0x16, 0x79,
0xf4, 0xbb, 0x03, 0x55, 0xb3, 0x89, 0xbe, 0x00, 0x34, 0xa5, 0x32, 0x9c, 0x05, 0x31, 0x8f, 0x82,
0x09, 0x25, 0x93, 0x98, 0xa5, 0x54, 0xd5, 0xda, 0xc5, 0xae, 0xca, 0x5c, 0xf0, 0xa8, 0x67, 0xf6,
0xd1, 0x57, 0x70, 0xa8, 0xd1, 0x44, 0x84, 0x33, 0xb6, 0xa4, 0x6b, 0x86, 0xa3, 0x18, 0x07, 0x2a,
0xdb, 0xd5, 0xc9, 0x82, 0xf5, 0x1d, 0x1c, 0xd9, 0x1b, 0x34, 0x26, 0x4e, 0xe8, 0x94, 0x2c, 0x62,
0x19, 0x08, 0x3a, 0x35, 0x66, 0x3f, 0x32, 0x08, 0x3d, 0xf8, 0x3d, 0x9d, 0xc7, 0x74, 0x8a, 0x9e,
0xc3, 0x87, 0xef, 0x21, 0xcf, 0x89, 0x9c, 0x19, 0xf3, 0xbd, 0xbb, 0xd8, 0x57, 0x44, 0xce, 0xd0,
0xd7, 0xf0, 0x48, 0xd0, 0xe9, 0x9d, 0x54, 0x7d, 0x0f, 0x07, 0x82, 0x4e, 0xb7, 0x68, 0xfe, 0x3b,
0x80, 0x71, 0x38, 0xa3, 0x09, 0xc9, 0x8c, 0xcb, 0x99, 0x8e, 0xcc, 0xe4, 0x16, 0x2e, 0xaf, 0x41,
0x66, 0x89, 0x2d, 0xf2, 0xa8, 0x05, 0x15, 0xbd, 0x85, 0x10, 0xec, 0xa4, 0x24, 0xa1, 0xe6, 0x27,
0xa5, 0xd6, 0xf6, 0x71, 0x77, 0x8a, 0xc7, 0xdd, 0x3f, 0x83, 0xfb, 0x5a, 0xc7, 0x15, 0x91, 0x92,
0x8a, 0x14, 0x7d, 0x04, 0x60, 0x64, 0x67, 0x54, 0x1a, 0x72, 0x3d, 0xb4, 0x0f, 0x43, 0x5e, 0x55,
0xb5, 0xa1, 0x4b, 0xa8, 0xb5, 0x7f, 0x05, 0xf5, 0xe2, 0xb7, 0x88, 0x9e, 0x42, 0x6d, 0xae, 0x4b,
0x59, 0xd9, 0x0f, 0x6f, 0x3f, 0x2f, 0xe6, 0x20, 0x5c, 0xc0, 0xee, 0x50, 0x15, 0x81, 0xf7, 0xba,
0x18, 0x54, 0x4c, 0xdf, 0x2d, 0x68, 0x26, 0x5f, 0xd1, 0x2c, 0x23, 0x11, 0xfd, 0x1f, 0x02, 0xf3,
0x07, 0x26, 0xe4, 0xa9, 0xa4, 0xa9, 0x54, 0xf7, 0xbe, 0x87, 0x6d, 0xe8, 0xff, 0xe9, 0xc0, 0xe3,
0xcd, 0x93, 0xb2, 0x39, 0x4f, 0x33, 0x6a, 0x8f, 0xea, 0x43, 0x2d, 0xd1, 0x4b, 0xdb, 0xcb, 0x93,
0x7f, 0x3c, 0x3e, 0xdb, 0xa4, 0x96, 0xf9, 0x8b, 0x0b, 0xea, 0xd1, 0x0a, 0xaa, 0xb6, 0xa2, 0x55,
0x57, 0xda, 0x50, 0xf7, 0x22, 0x7f, 0xa2, 0x96, 0x54, 0x30, 0xb9, 0x32, 0xdf, 0xd6, 0xcf, 0xfe,
0xfd, 0x94, 0xb1, 0x61, 0xe0, 0x82, 0x9b, 0xd7, 0x96, 0xf4, 0x67, 0x69, 0x46, 0x5b, 0xad, 0x7d,
0x0c, 0x35, 0x8b, 0xcc, 0xbf, 0xb1, 0x37, 0xa3, 0x1f, 0x46, 0x97, 0x6f, 0x46, 0xee, 0xbd, 0xfc,
0xdb, 0xdb, 0xeb, 0x9f, 0xdd, 0x0c, 0x5c, 0x40, 0x35, 0xd8, 0x19, 0x8e, 0x5e, 0x5c, 0xba, 0x07,
0x39, 0xe2, 0x4d, 0x17, 0x8f, 0x86, 0xa3, 0x81, 0xfb, 0x71, 0x8e, 0xe8, 0x63, 0x7c, 0x89, 0xdd,
0x53, 0xb4, 0x07, 0xb5, 0x73, 0x3c, 0xbc, 0x1e, 0x9e, 0x77, 0x2f, 0xdc, 0xce, 0xdb, 0x8a, 0xfa,
0x37, 0xe2, 0xd9, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd2, 0xf7, 0x0c, 0x3b, 0x87, 0x08, 0x00,
0x00,
}