Add OpenAPI validation in CRD schema (#1256)

This commit is contained in:
Jesse Suen 2019-04-06 17:18:00 -07:00 committed by GitHub
parent 85a5fb5a41
commit 6b69449175
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
42 changed files with 4538 additions and 473 deletions

54
Gopkg.lock generated
View file

@ -48,6 +48,14 @@
pruneopts = ""
revision = "09c41003ee1d5015b75f331e52215512e7145b8d"
[[projects]]
branch = "master"
digest = "1:0cac9c70f3308d54ed601878aa66423eb95c374616fdd7d2ea4e2d18b045ae62"
name = "github.com/ant31/crd-validation"
packages = ["pkg"]
pruneopts = ""
revision = "38f6a293f140402953f884b015014e0cd519bbb3"
[[projects]]
branch = "master"
digest = "1:0caf9208419fa5db5a0ca7112affaa9550c54291dda8e2abac0c0e76181c959e"
@ -1218,7 +1226,7 @@
[[projects]]
branch = "release-1.12"
digest = "1:ed04c5203ecbf6358fb6a774b0ecd40ea992d6dcc42adc1d3b7cf9eceb66b6c8"
digest = "1:3e3e9df293bd6f9fd64effc9fa1f0edcd97e6c74145cd9ab05d35719004dc41f"
name = "k8s.io/api"
packages = [
"admission/v1beta1",
@ -1256,15 +1264,19 @@
"storage/v1beta1",
]
pruneopts = ""
revision = "475331a8afff5587f47d0470a93f79c60c573c03"
revision = "6db15a15d2d3874a6c3ddb2140ac9f3bc7058428"
[[projects]]
branch = "release-1.12"
digest = "1:39be82077450762b5e14b5268e679a14ac0e9c7d3286e2fcface437556a29e4c"
branch = "master"
digest = "1:49e0fcdcaeaf937c6c608d1da19eb80de74fe990021278d49d46e10288659be6"
name = "k8s.io/apiextensions-apiserver"
packages = ["pkg/features"]
packages = [
"pkg/apis/apiextensions",
"pkg/apis/apiextensions/v1beta1",
"pkg/features",
]
pruneopts = ""
revision = "ca1024863b48cf0701229109df75ac5f0bb4907e"
revision = "7f7d2b94eca3a7a1c49840e119a8bc03c3afb1e3"
[[projects]]
branch = "release-1.12"
@ -1323,15 +1335,15 @@
revision = "f71dbbc36e126f5a371b85f6cca96bc8c57db2b6"
[[projects]]
branch = "master"
digest = "1:cb3ac215bfac54696f64a6e5c46524a7fc0f7a8f9b7a22cccb2e1e83ac2d013f"
branch = "release-1.12"
digest = "1:b2c55ff9df6d053e40094b943f949c257c3f7dcdbb035c11487c93c96df9eade"
name = "k8s.io/apiserver"
packages = [
"pkg/features",
"pkg/util/feature",
]
pruneopts = ""
revision = "19cf388d0a374e95329bf7d98e9bfd7da8853be0"
revision = "5e1c1f41ee34b3bb153f928f8c91c2a6dd9482a9"
[[projects]]
branch = "release-9.0"
@ -1449,7 +1461,7 @@
[[projects]]
branch = "release-1.12"
digest = "1:e6fffdf0dfeb0d189a7c6d735e76e7564685d3b6513f8b19d3651191cb6b084b"
digest = "1:8108815d1aef9159daabdb3f0fcef04a88765536daf0c0cd29a31fdba135ee54"
name = "k8s.io/code-generator"
packages = [
"cmd/go-to-protobuf",
@ -1458,21 +1470,22 @@
"third_party/forked/golang/reflect",
]
pruneopts = ""
revision = "3dcf91f64f638563e5106f21f50c31fa361c918d"
revision = "b1289fc74931d4b6b04bd1a259acfc88a2cb0a66"
[[projects]]
branch = "master"
digest = "1:15710582bd5ceff07eee4726884f75f97f90366fde9307b8dd09500c75722456"
digest = "1:6a2a63e09a59caff3fd2d36d69b7b92c2fe7cf783390f0b7349fb330820f9a8e"
name = "k8s.io/gengo"
packages = [
"args",
"examples/set-gen/sets",
"generator",
"namer",
"parser",
"types",
]
pruneopts = ""
revision = "8394c995ab8fbe52216f38d0e1a37de36d820528"
revision = "e17681d19d3ac4837a019ece36c2a0ec31ffe985"
[[projects]]
digest = "1:4f5eb833037cc0ba0bf8fe9cae6be9df62c19dd1c869415275c708daa8ccfda5"
@ -1483,15 +1496,19 @@
version = "v0.1.0"
[[projects]]
branch = "master"
digest = "1:9a648ff9eb89673d2870c22fc011ec5db0fcff6c4e5174a650298e51be71bbf1"
digest = "1:aae856b28533bfdb39112514290f7722d00a55a99d2d0b897c6ee82e6feb87b3"
name = "k8s.io/kube-openapi"
packages = [
"cmd/openapi-gen",
"cmd/openapi-gen/args",
"pkg/common",
"pkg/generators",
"pkg/generators/rules",
"pkg/util/proto",
"pkg/util/sets",
]
pruneopts = ""
revision = "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
revision = "master"
[[projects]]
digest = "1:6061aa42761235df375f20fa4a1aa6d1845cba3687575f3adb2ef3f3bc540af5"
@ -1530,6 +1547,7 @@
input-imports = [
"github.com/Masterminds/semver",
"github.com/TomOnTime/utfutil",
"github.com/ant31/crd-validation/pkg",
"github.com/argoproj/argo/pkg/apis/workflow/v1alpha1",
"github.com/argoproj/argo/util",
"github.com/argoproj/pkg/exec",
@ -1544,6 +1562,7 @@
"github.com/ghodss/yaml",
"github.com/go-openapi/loads",
"github.com/go-openapi/runtime/middleware",
"github.com/go-openapi/spec",
"github.com/go-redis/cache",
"github.com/go-redis/redis",
"github.com/gobuffalo/packr",
@ -1618,6 +1637,7 @@
"k8s.io/api/core/v1",
"k8s.io/api/extensions/v1beta1",
"k8s.io/api/rbac/v1",
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1",
"k8s.io/apimachinery/pkg/api/equality",
"k8s.io/apimachinery/pkg/api/errors",
"k8s.io/apimachinery/pkg/apis/meta/v1",
@ -1651,6 +1671,8 @@
"k8s.io/client-go/util/flowcontrol",
"k8s.io/client-go/util/workqueue",
"k8s.io/code-generator/cmd/go-to-protobuf",
"k8s.io/kube-openapi/cmd/openapi-gen",
"k8s.io/kube-openapi/pkg/common",
"k8s.io/kubernetes/pkg/api/v1/pod",
"k8s.io/kubernetes/pkg/apis/apps",
"k8s.io/kubernetes/pkg/apis/batch",

View file

@ -7,6 +7,7 @@ required = [
"github.com/gogo/protobuf/protoc-gen-gofast",
"github.com/gogo/protobuf/protoc-gen-gogofast",
"k8s.io/code-generator/cmd/go-to-protobuf",
"k8s.io/kube-openapi/cmd/openapi-gen",
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway",
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger",
"golang.org/x/sync/errgroup",
@ -61,3 +62,7 @@ required = [
[[constraint]]
branch = "master"
name = "github.com/yudai/gojsondiff"
[[override]]
revision = "master"
name = "k8s.io/kube-openapi"

View file

@ -51,12 +51,16 @@ all: cli image argocd-util
protogen:
./hack/generate-proto.sh
.PHONY: openapigen
openapigen:
./hack/update-openapi.sh
.PHONY: clientgen
clientgen:
./hack/update-codegen.sh
.PHONY: codegen
codegen: protogen clientgen
codegen: protogen clientgen openapigen
.PHONY: cli
cli: clean-debug

View file

@ -2976,7 +2976,7 @@
"type": "string"
}
},
"targetRef": {
"targetRefs": {
"type": "array",
"items": {
"$ref": "#/definitions/v1alpha1ResourceRef"

View file

@ -33,7 +33,6 @@ APIMACHINERY_PKGS=(
k8s.io/api/core/v1
)
go-to-protobuf \
--logtostderr \
--go-header-file=${PROJECT_ROOT}/hack/custom-boilerplate.go.txt \
--packages=$(IFS=, ; echo "${PACKAGES[*]}") \
--apimachinery-packages=$(IFS=, ; echo "${APIMACHINERY_PKGS[*]}") \

View file

@ -0,0 +1,63 @@
package main
import (
"encoding/json"
"io/ioutil"
"log"
"os"
crdutil "github.com/ant31/crd-validation/pkg"
"github.com/ghodss/yaml"
apiextensions "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
)
// Generate OpenAPI spec definitions for Rollout Resource
func main() {
if len(os.Args) != 3 {
log.Fatalf("Usage: %s CRDSPEC TYPE", os.Args[0])
}
crdPath := os.Args[1]
typePath := os.Args[2]
data, err := ioutil.ReadFile(crdPath)
if err != nil {
log.Fatal(err)
}
var crd apiextensions.CustomResourceDefinition
err = yaml.Unmarshal(data, &crd)
if err != nil {
log.Fatal(err)
}
crd.Spec.Validation = crdutil.GetCustomResourceValidation(typePath, v1alpha1.GetOpenAPIDefinitions)
jsonBytes, err := json.Marshal(crd)
if err != nil {
log.Fatal(err)
}
var r unstructured.Unstructured
if err := json.Unmarshal(jsonBytes, &r.Object); err != nil {
log.Fatal(err)
}
unstructured.RemoveNestedField(r.Object, "status")
unstructured.RemoveNestedField(r.Object, "metadata", "creationTimestamp")
jsonBytes, err = json.MarshalIndent(r.Object, "", " ")
if err != nil {
log.Fatal(err)
}
yamlBytes, err := yaml.JSONToYAML(jsonBytes)
if err != nil {
log.Fatal(err)
}
err = ioutil.WriteFile(crdPath, yamlBytes, 0644)
if err != nil {
panic(err)
}
os.Exit(0)
}

25
hack/update-openapi.sh Executable file
View file

@ -0,0 +1,25 @@
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
PROJECT_ROOT=$(cd $(dirname "$0")/.. ; pwd)
CODEGEN_PKG=${PROJECT_ROOT}/vendor/k8s.io/kube-openapi
VERSION="v1alpha1"
go run ${CODEGEN_PKG}/cmd/openapi-gen/openapi-gen.go \
--go-header-file ${PROJECT_ROOT}/hack/custom-boilerplate.go.txt \
--input-dirs github.com/argoproj/argo-cd/pkg/apis/application/${VERSION} \
--output-package github.com/argoproj/argo-cd/pkg/apis/application/${VERSION} \
--report-filename pkg/apis/api-rules/violation_exceptions.list \
$@
go run ./hack/update-openapi-validation/main.go \
./manifests/crds/application-crd.yaml \
github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.Application
go run ./hack/update-openapi-validation/main.go \
./manifests/crds/appproject-crd.yaml \
github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1.AppProject

File diff suppressed because it is too large Load diff

View file

@ -14,4 +14,104 @@ spec:
- appproj
- appprojs
scope: Namespaced
validation:
openAPIV3Schema:
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
type: string
metadata: {}
spec:
description: AppProjectSpec is the specification of an AppProject
properties:
clusterResourceWhitelist:
description: ClusterResourceWhitelist contains list of whitelisted cluster
level resources
items: {}
type: array
description:
description: Description contains optional project description
type: string
destinations:
description: Destinations contains list of destinations available for
deployment
items:
description: ApplicationDestination contains deployment destination
information
properties:
namespace:
description: Namespace overrides the environment namespace value
in the ksonnet app.yaml
type: string
server:
description: Server overrides the environment server value in
the ksonnet app.yaml
type: string
type: object
type: array
namespaceResourceBlacklist:
description: NamespaceResourceBlacklist contains list of blacklisted
namespace level resources
items: {}
type: array
roles:
description: Roles are user defined RBAC roles associated with this
project
items:
description: ProjectRole represents a role that has access to a project
properties:
description:
description: Description is a description of the role
type: string
groups:
description: Groups are a list of OIDC group claims bound to this
role
items:
type: string
type: array
jwtTokens:
description: JWTTokens are a list of generated JWT tokens bound
to this role
items:
description: JWTToken holds the issuedAt and expiresAt values
of a token
properties:
exp:
format: int64
type: integer
iat:
format: int64
type: integer
required:
- iat
type: object
type: array
name:
description: Name is a name for this role
type: string
policies:
description: Policies Stores a list of casbin formated strings
that define access policies for the role in the project
items:
type: string
type: array
required:
- name
type: object
type: array
sourceRepos:
description: SourceRepos contains list of git repository URLs which
can be used for deployment
items:
type: string
type: array
type: object
type: object
version: v1alpha1

View file

@ -0,0 +1,7 @@
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ApplicationSourceJsonnet,TLAs
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ConnectionState,ModifiedAt
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,JWTToken,ExpiresAt
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,JWTToken,IssuedAt
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,ResourceOverride,HealthLua
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,SyncStrategyHook,SyncStrategyApply
API rule violation: names_match,github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1,objectMeta,Name

View file

@ -33,7 +33,7 @@ const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
func (m *AWSAuthConfig) Reset() { *m = AWSAuthConfig{} }
func (*AWSAuthConfig) ProtoMessage() {}
func (*AWSAuthConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{0}
return fileDescriptor_generated_bc7e074832f25bd9, []int{0}
}
func (m *AWSAuthConfig) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -61,7 +61,7 @@ var xxx_messageInfo_AWSAuthConfig proto.InternalMessageInfo
func (m *AppProject) Reset() { *m = AppProject{} }
func (*AppProject) ProtoMessage() {}
func (*AppProject) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{1}
return fileDescriptor_generated_bc7e074832f25bd9, []int{1}
}
func (m *AppProject) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -89,7 +89,7 @@ var xxx_messageInfo_AppProject proto.InternalMessageInfo
func (m *AppProjectList) Reset() { *m = AppProjectList{} }
func (*AppProjectList) ProtoMessage() {}
func (*AppProjectList) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{2}
return fileDescriptor_generated_bc7e074832f25bd9, []int{2}
}
func (m *AppProjectList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -117,7 +117,7 @@ var xxx_messageInfo_AppProjectList proto.InternalMessageInfo
func (m *AppProjectSpec) Reset() { *m = AppProjectSpec{} }
func (*AppProjectSpec) ProtoMessage() {}
func (*AppProjectSpec) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{3}
return fileDescriptor_generated_bc7e074832f25bd9, []int{3}
}
func (m *AppProjectSpec) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -145,7 +145,7 @@ var xxx_messageInfo_AppProjectSpec proto.InternalMessageInfo
func (m *Application) Reset() { *m = Application{} }
func (*Application) ProtoMessage() {}
func (*Application) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{4}
return fileDescriptor_generated_bc7e074832f25bd9, []int{4}
}
func (m *Application) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -173,7 +173,7 @@ var xxx_messageInfo_Application proto.InternalMessageInfo
func (m *ApplicationCondition) Reset() { *m = ApplicationCondition{} }
func (*ApplicationCondition) ProtoMessage() {}
func (*ApplicationCondition) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{5}
return fileDescriptor_generated_bc7e074832f25bd9, []int{5}
}
func (m *ApplicationCondition) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -201,7 +201,7 @@ var xxx_messageInfo_ApplicationCondition proto.InternalMessageInfo
func (m *ApplicationDestination) Reset() { *m = ApplicationDestination{} }
func (*ApplicationDestination) ProtoMessage() {}
func (*ApplicationDestination) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{6}
return fileDescriptor_generated_bc7e074832f25bd9, []int{6}
}
func (m *ApplicationDestination) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -229,7 +229,7 @@ var xxx_messageInfo_ApplicationDestination proto.InternalMessageInfo
func (m *ApplicationList) Reset() { *m = ApplicationList{} }
func (*ApplicationList) ProtoMessage() {}
func (*ApplicationList) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{7}
return fileDescriptor_generated_bc7e074832f25bd9, []int{7}
}
func (m *ApplicationList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -257,7 +257,7 @@ var xxx_messageInfo_ApplicationList proto.InternalMessageInfo
func (m *ApplicationSource) Reset() { *m = ApplicationSource{} }
func (*ApplicationSource) ProtoMessage() {}
func (*ApplicationSource) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{8}
return fileDescriptor_generated_bc7e074832f25bd9, []int{8}
}
func (m *ApplicationSource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -285,7 +285,7 @@ var xxx_messageInfo_ApplicationSource proto.InternalMessageInfo
func (m *ApplicationSourceDirectory) Reset() { *m = ApplicationSourceDirectory{} }
func (*ApplicationSourceDirectory) ProtoMessage() {}
func (*ApplicationSourceDirectory) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{9}
return fileDescriptor_generated_bc7e074832f25bd9, []int{9}
}
func (m *ApplicationSourceDirectory) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -313,7 +313,7 @@ var xxx_messageInfo_ApplicationSourceDirectory proto.InternalMessageInfo
func (m *ApplicationSourceHelm) Reset() { *m = ApplicationSourceHelm{} }
func (*ApplicationSourceHelm) ProtoMessage() {}
func (*ApplicationSourceHelm) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{10}
return fileDescriptor_generated_bc7e074832f25bd9, []int{10}
}
func (m *ApplicationSourceHelm) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -341,7 +341,7 @@ var xxx_messageInfo_ApplicationSourceHelm proto.InternalMessageInfo
func (m *ApplicationSourceJsonnet) Reset() { *m = ApplicationSourceJsonnet{} }
func (*ApplicationSourceJsonnet) ProtoMessage() {}
func (*ApplicationSourceJsonnet) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{11}
return fileDescriptor_generated_bc7e074832f25bd9, []int{11}
}
func (m *ApplicationSourceJsonnet) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -369,7 +369,7 @@ var xxx_messageInfo_ApplicationSourceJsonnet proto.InternalMessageInfo
func (m *ApplicationSourceKsonnet) Reset() { *m = ApplicationSourceKsonnet{} }
func (*ApplicationSourceKsonnet) ProtoMessage() {}
func (*ApplicationSourceKsonnet) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{12}
return fileDescriptor_generated_bc7e074832f25bd9, []int{12}
}
func (m *ApplicationSourceKsonnet) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -397,7 +397,7 @@ var xxx_messageInfo_ApplicationSourceKsonnet proto.InternalMessageInfo
func (m *ApplicationSourceKustomize) Reset() { *m = ApplicationSourceKustomize{} }
func (*ApplicationSourceKustomize) ProtoMessage() {}
func (*ApplicationSourceKustomize) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{13}
return fileDescriptor_generated_bc7e074832f25bd9, []int{13}
}
func (m *ApplicationSourceKustomize) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -425,7 +425,7 @@ var xxx_messageInfo_ApplicationSourceKustomize proto.InternalMessageInfo
func (m *ApplicationSourcePlugin) Reset() { *m = ApplicationSourcePlugin{} }
func (*ApplicationSourcePlugin) ProtoMessage() {}
func (*ApplicationSourcePlugin) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{14}
return fileDescriptor_generated_bc7e074832f25bd9, []int{14}
}
func (m *ApplicationSourcePlugin) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -453,7 +453,7 @@ var xxx_messageInfo_ApplicationSourcePlugin proto.InternalMessageInfo
func (m *ApplicationSpec) Reset() { *m = ApplicationSpec{} }
func (*ApplicationSpec) ProtoMessage() {}
func (*ApplicationSpec) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{15}
return fileDescriptor_generated_bc7e074832f25bd9, []int{15}
}
func (m *ApplicationSpec) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -481,7 +481,7 @@ var xxx_messageInfo_ApplicationSpec proto.InternalMessageInfo
func (m *ApplicationStatus) Reset() { *m = ApplicationStatus{} }
func (*ApplicationStatus) ProtoMessage() {}
func (*ApplicationStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{16}
return fileDescriptor_generated_bc7e074832f25bd9, []int{16}
}
func (m *ApplicationStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -509,7 +509,7 @@ var xxx_messageInfo_ApplicationStatus proto.InternalMessageInfo
func (m *ApplicationTree) Reset() { *m = ApplicationTree{} }
func (*ApplicationTree) ProtoMessage() {}
func (*ApplicationTree) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{17}
return fileDescriptor_generated_bc7e074832f25bd9, []int{17}
}
func (m *ApplicationTree) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -537,7 +537,7 @@ var xxx_messageInfo_ApplicationTree proto.InternalMessageInfo
func (m *ApplicationWatchEvent) Reset() { *m = ApplicationWatchEvent{} }
func (*ApplicationWatchEvent) ProtoMessage() {}
func (*ApplicationWatchEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{18}
return fileDescriptor_generated_bc7e074832f25bd9, []int{18}
}
func (m *ApplicationWatchEvent) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -565,7 +565,7 @@ var xxx_messageInfo_ApplicationWatchEvent proto.InternalMessageInfo
func (m *Cluster) Reset() { *m = Cluster{} }
func (*Cluster) ProtoMessage() {}
func (*Cluster) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{19}
return fileDescriptor_generated_bc7e074832f25bd9, []int{19}
}
func (m *Cluster) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -593,7 +593,7 @@ var xxx_messageInfo_Cluster proto.InternalMessageInfo
func (m *ClusterConfig) Reset() { *m = ClusterConfig{} }
func (*ClusterConfig) ProtoMessage() {}
func (*ClusterConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{20}
return fileDescriptor_generated_bc7e074832f25bd9, []int{20}
}
func (m *ClusterConfig) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -621,7 +621,7 @@ var xxx_messageInfo_ClusterConfig proto.InternalMessageInfo
func (m *ClusterList) Reset() { *m = ClusterList{} }
func (*ClusterList) ProtoMessage() {}
func (*ClusterList) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{21}
return fileDescriptor_generated_bc7e074832f25bd9, []int{21}
}
func (m *ClusterList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -649,7 +649,7 @@ var xxx_messageInfo_ClusterList proto.InternalMessageInfo
func (m *Command) Reset() { *m = Command{} }
func (*Command) ProtoMessage() {}
func (*Command) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{22}
return fileDescriptor_generated_bc7e074832f25bd9, []int{22}
}
func (m *Command) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -677,7 +677,7 @@ var xxx_messageInfo_Command proto.InternalMessageInfo
func (m *ComparedTo) Reset() { *m = ComparedTo{} }
func (*ComparedTo) ProtoMessage() {}
func (*ComparedTo) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{23}
return fileDescriptor_generated_bc7e074832f25bd9, []int{23}
}
func (m *ComparedTo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -705,7 +705,7 @@ var xxx_messageInfo_ComparedTo proto.InternalMessageInfo
func (m *ComponentParameter) Reset() { *m = ComponentParameter{} }
func (*ComponentParameter) ProtoMessage() {}
func (*ComponentParameter) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{24}
return fileDescriptor_generated_bc7e074832f25bd9, []int{24}
}
func (m *ComponentParameter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -733,7 +733,7 @@ var xxx_messageInfo_ComponentParameter proto.InternalMessageInfo
func (m *ConfigManagementPlugin) Reset() { *m = ConfigManagementPlugin{} }
func (*ConfigManagementPlugin) ProtoMessage() {}
func (*ConfigManagementPlugin) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{25}
return fileDescriptor_generated_bc7e074832f25bd9, []int{25}
}
func (m *ConfigManagementPlugin) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -761,7 +761,7 @@ var xxx_messageInfo_ConfigManagementPlugin proto.InternalMessageInfo
func (m *ConnectionState) Reset() { *m = ConnectionState{} }
func (*ConnectionState) ProtoMessage() {}
func (*ConnectionState) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{26}
return fileDescriptor_generated_bc7e074832f25bd9, []int{26}
}
func (m *ConnectionState) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -789,7 +789,7 @@ var xxx_messageInfo_ConnectionState proto.InternalMessageInfo
func (m *HealthStatus) Reset() { *m = HealthStatus{} }
func (*HealthStatus) ProtoMessage() {}
func (*HealthStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{27}
return fileDescriptor_generated_bc7e074832f25bd9, []int{27}
}
func (m *HealthStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -817,7 +817,7 @@ var xxx_messageInfo_HealthStatus proto.InternalMessageInfo
func (m *HelmParameter) Reset() { *m = HelmParameter{} }
func (*HelmParameter) ProtoMessage() {}
func (*HelmParameter) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{28}
return fileDescriptor_generated_bc7e074832f25bd9, []int{28}
}
func (m *HelmParameter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -845,7 +845,7 @@ var xxx_messageInfo_HelmParameter proto.InternalMessageInfo
func (m *HelmRepository) Reset() { *m = HelmRepository{} }
func (*HelmRepository) ProtoMessage() {}
func (*HelmRepository) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{29}
return fileDescriptor_generated_bc7e074832f25bd9, []int{29}
}
func (m *HelmRepository) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -873,7 +873,7 @@ var xxx_messageInfo_HelmRepository proto.InternalMessageInfo
func (m *InfoItem) Reset() { *m = InfoItem{} }
func (*InfoItem) ProtoMessage() {}
func (*InfoItem) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{30}
return fileDescriptor_generated_bc7e074832f25bd9, []int{30}
}
func (m *InfoItem) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -901,7 +901,7 @@ var xxx_messageInfo_InfoItem proto.InternalMessageInfo
func (m *JWTToken) Reset() { *m = JWTToken{} }
func (*JWTToken) ProtoMessage() {}
func (*JWTToken) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{31}
return fileDescriptor_generated_bc7e074832f25bd9, []int{31}
}
func (m *JWTToken) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -929,7 +929,7 @@ var xxx_messageInfo_JWTToken proto.InternalMessageInfo
func (m *JsonnetVar) Reset() { *m = JsonnetVar{} }
func (*JsonnetVar) ProtoMessage() {}
func (*JsonnetVar) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{32}
return fileDescriptor_generated_bc7e074832f25bd9, []int{32}
}
func (m *JsonnetVar) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -957,7 +957,7 @@ var xxx_messageInfo_JsonnetVar proto.InternalMessageInfo
func (m *KsonnetParameter) Reset() { *m = KsonnetParameter{} }
func (*KsonnetParameter) ProtoMessage() {}
func (*KsonnetParameter) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{33}
return fileDescriptor_generated_bc7e074832f25bd9, []int{33}
}
func (m *KsonnetParameter) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -985,7 +985,7 @@ var xxx_messageInfo_KsonnetParameter proto.InternalMessageInfo
func (m *KustomizeImageTag) Reset() { *m = KustomizeImageTag{} }
func (*KustomizeImageTag) ProtoMessage() {}
func (*KustomizeImageTag) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{34}
return fileDescriptor_generated_bc7e074832f25bd9, []int{34}
}
func (m *KustomizeImageTag) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1013,7 +1013,7 @@ var xxx_messageInfo_KustomizeImageTag proto.InternalMessageInfo
func (m *Operation) Reset() { *m = Operation{} }
func (*Operation) ProtoMessage() {}
func (*Operation) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{35}
return fileDescriptor_generated_bc7e074832f25bd9, []int{35}
}
func (m *Operation) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1041,7 +1041,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo
func (m *OperationState) Reset() { *m = OperationState{} }
func (*OperationState) ProtoMessage() {}
func (*OperationState) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{36}
return fileDescriptor_generated_bc7e074832f25bd9, []int{36}
}
func (m *OperationState) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1069,7 +1069,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo
func (m *ProjectRole) Reset() { *m = ProjectRole{} }
func (*ProjectRole) ProtoMessage() {}
func (*ProjectRole) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{37}
return fileDescriptor_generated_bc7e074832f25bd9, []int{37}
}
func (m *ProjectRole) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1097,7 +1097,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo
func (m *Repository) Reset() { *m = Repository{} }
func (*Repository) ProtoMessage() {}
func (*Repository) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{38}
return fileDescriptor_generated_bc7e074832f25bd9, []int{38}
}
func (m *Repository) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1125,7 +1125,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo
func (m *RepositoryList) Reset() { *m = RepositoryList{} }
func (*RepositoryList) ProtoMessage() {}
func (*RepositoryList) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{39}
return fileDescriptor_generated_bc7e074832f25bd9, []int{39}
}
func (m *RepositoryList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1153,7 +1153,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo
func (m *ResourceDiff) Reset() { *m = ResourceDiff{} }
func (*ResourceDiff) ProtoMessage() {}
func (*ResourceDiff) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{40}
return fileDescriptor_generated_bc7e074832f25bd9, []int{40}
}
func (m *ResourceDiff) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1181,7 +1181,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo
func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} }
func (*ResourceIgnoreDifferences) ProtoMessage() {}
func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{41}
return fileDescriptor_generated_bc7e074832f25bd9, []int{41}
}
func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1209,7 +1209,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo
func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} }
func (*ResourceNetworkingInfo) ProtoMessage() {}
func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{42}
return fileDescriptor_generated_bc7e074832f25bd9, []int{42}
}
func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1237,7 +1237,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo
func (m *ResourceNode) Reset() { *m = ResourceNode{} }
func (*ResourceNode) ProtoMessage() {}
func (*ResourceNode) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{43}
return fileDescriptor_generated_bc7e074832f25bd9, []int{43}
}
func (m *ResourceNode) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1265,7 +1265,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo
func (m *ResourceOverride) Reset() { *m = ResourceOverride{} }
func (*ResourceOverride) ProtoMessage() {}
func (*ResourceOverride) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{44}
return fileDescriptor_generated_bc7e074832f25bd9, []int{44}
}
func (m *ResourceOverride) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1293,7 +1293,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo
func (m *ResourceRef) Reset() { *m = ResourceRef{} }
func (*ResourceRef) ProtoMessage() {}
func (*ResourceRef) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{45}
return fileDescriptor_generated_bc7e074832f25bd9, []int{45}
}
func (m *ResourceRef) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1321,7 +1321,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo
func (m *ResourceResult) Reset() { *m = ResourceResult{} }
func (*ResourceResult) ProtoMessage() {}
func (*ResourceResult) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{46}
return fileDescriptor_generated_bc7e074832f25bd9, []int{46}
}
func (m *ResourceResult) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1349,7 +1349,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo
func (m *ResourceStatus) Reset() { *m = ResourceStatus{} }
func (*ResourceStatus) ProtoMessage() {}
func (*ResourceStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{47}
return fileDescriptor_generated_bc7e074832f25bd9, []int{47}
}
func (m *ResourceStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1377,7 +1377,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo
func (m *RevisionHistory) Reset() { *m = RevisionHistory{} }
func (*RevisionHistory) ProtoMessage() {}
func (*RevisionHistory) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{48}
return fileDescriptor_generated_bc7e074832f25bd9, []int{48}
}
func (m *RevisionHistory) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1405,7 +1405,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo
func (m *SyncOperation) Reset() { *m = SyncOperation{} }
func (*SyncOperation) ProtoMessage() {}
func (*SyncOperation) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{49}
return fileDescriptor_generated_bc7e074832f25bd9, []int{49}
}
func (m *SyncOperation) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1433,7 +1433,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo
func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} }
func (*SyncOperationResource) ProtoMessage() {}
func (*SyncOperationResource) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{50}
return fileDescriptor_generated_bc7e074832f25bd9, []int{50}
}
func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1461,7 +1461,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo
func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} }
func (*SyncOperationResult) ProtoMessage() {}
func (*SyncOperationResult) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{51}
return fileDescriptor_generated_bc7e074832f25bd9, []int{51}
}
func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1489,7 +1489,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo
func (m *SyncPolicy) Reset() { *m = SyncPolicy{} }
func (*SyncPolicy) ProtoMessage() {}
func (*SyncPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{52}
return fileDescriptor_generated_bc7e074832f25bd9, []int{52}
}
func (m *SyncPolicy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1517,7 +1517,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo
func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} }
func (*SyncPolicyAutomated) ProtoMessage() {}
func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{53}
return fileDescriptor_generated_bc7e074832f25bd9, []int{53}
}
func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1545,7 +1545,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo
func (m *SyncStatus) Reset() { *m = SyncStatus{} }
func (*SyncStatus) ProtoMessage() {}
func (*SyncStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{54}
return fileDescriptor_generated_bc7e074832f25bd9, []int{54}
}
func (m *SyncStatus) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1573,7 +1573,7 @@ var xxx_messageInfo_SyncStatus proto.InternalMessageInfo
func (m *SyncStrategy) Reset() { *m = SyncStrategy{} }
func (*SyncStrategy) ProtoMessage() {}
func (*SyncStrategy) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{55}
return fileDescriptor_generated_bc7e074832f25bd9, []int{55}
}
func (m *SyncStrategy) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1601,7 +1601,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo
func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} }
func (*SyncStrategyApply) ProtoMessage() {}
func (*SyncStrategyApply) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{56}
return fileDescriptor_generated_bc7e074832f25bd9, []int{56}
}
func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1629,7 +1629,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo
func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} }
func (*SyncStrategyHook) ProtoMessage() {}
func (*SyncStrategyHook) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{57}
return fileDescriptor_generated_bc7e074832f25bd9, []int{57}
}
func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -1657,7 +1657,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo
func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} }
func (*TLSClientConfig) ProtoMessage() {}
func (*TLSClientConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_generated_090fe54925d89cd3, []int{58}
return fileDescriptor_generated_bc7e074832f25bd9, []int{58}
}
func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@ -15182,243 +15182,243 @@ var (
)
func init() {
proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_090fe54925d89cd3)
proto.RegisterFile("github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1/generated.proto", fileDescriptor_generated_bc7e074832f25bd9)
}
var fileDescriptor_generated_090fe54925d89cd3 = []byte{
// 3744 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0xcd, 0x8f, 0x1c, 0xc7,
0x57, 0xee, 0xf9, 0x9e, 0xb7, 0x1f, 0xf6, 0xd6, 0x2f, 0xf6, 0x6f, 0x7e, 0xab, 0x64, 0x77, 0xd5,
0x16, 0x89, 0x03, 0x64, 0x16, 0x5b, 0x09, 0x38, 0x89, 0x04, 0xda, 0xd9, 0xf5, 0xc7, 0x7a, 0xd7,
0xeb, 0x4d, 0xcd, 0xda, 0x96, 0x42, 0x08, 0x69, 0xf7, 0xd4, 0xcc, 0xb4, 0x77, 0xa6, 0xbb, 0xd3,
0xdd, 0xb3, 0xf6, 0x18, 0xf2, 0x05, 0x8a, 0x04, 0x21, 0x89, 0x90, 0x10, 0x27, 0x94, 0x4b, 0x8e,
0x11, 0x17, 0x40, 0xe2, 0x0f, 0x40, 0x02, 0x72, 0x8c, 0xa2, 0x44, 0x8a, 0x00, 0xad, 0xc8, 0xe6,
0x00, 0x12, 0x07, 0x0e, 0x88, 0x8b, 0x2f, 0xa0, 0xfa, 0xea, 0xaa, 0x9e, 0x9d, 0xf1, 0x8e, 0x3d,
0x6d, 0x47, 0x84, 0xdb, 0xf4, 0x7b, 0x55, 0xef, 0xbd, 0x7a, 0xf5, 0xea, 0x7d, 0x55, 0x0d, 0xac,
0xb7, 0x9c, 0xa8, 0xdd, 0xbb, 0x55, 0xb5, 0xbd, 0xee, 0xb2, 0x15, 0xb4, 0x3c, 0x3f, 0xf0, 0x6e,
0xb3, 0x1f, 0x2f, 0xd8, 0x8d, 0x65, 0x7f, 0xb7, 0xb5, 0x6c, 0xf9, 0x4e, 0xb8, 0x6c, 0xf9, 0x7e,
0xc7, 0xb1, 0xad, 0xc8, 0xf1, 0xdc, 0xe5, 0xbd, 0xb3, 0x56, 0xc7, 0x6f, 0x5b, 0x67, 0x97, 0x5b,
0xc4, 0x25, 0x81, 0x15, 0x91, 0x46, 0xd5, 0x0f, 0xbc, 0xc8, 0x43, 0x2f, 0x2b, 0x52, 0x55, 0x49,
0x8a, 0xfd, 0xf8, 0x5d, 0xbb, 0x51, 0xf5, 0x77, 0x5b, 0x55, 0x4a, 0xaa, 0xaa, 0x91, 0xaa, 0x4a,
0x52, 0xf3, 0x2f, 0x68, 0x52, 0xb4, 0xbc, 0x96, 0xb7, 0xcc, 0x28, 0xde, 0xea, 0x35, 0xd9, 0x17,
0xfb, 0x60, 0xbf, 0x38, 0xa7, 0x79, 0x73, 0xf7, 0x7c, 0x58, 0x75, 0x3c, 0x2a, 0xdb, 0xb2, 0xed,
0x05, 0x64, 0x79, 0xef, 0x90, 0x34, 0xf3, 0x2f, 0xaa, 0x31, 0x5d, 0xcb, 0x6e, 0x3b, 0x2e, 0x09,
0xfa, 0x6a, 0x41, 0x5d, 0x12, 0x59, 0xc3, 0x66, 0x2d, 0x8f, 0x9a, 0x15, 0xf4, 0xdc, 0xc8, 0xe9,
0x92, 0x43, 0x13, 0x7e, 0xfd, 0xa8, 0x09, 0xa1, 0xdd, 0x26, 0x5d, 0x6b, 0x70, 0x9e, 0xf9, 0x36,
0xcc, 0xac, 0xdc, 0xac, 0xaf, 0xf4, 0xa2, 0xf6, 0xaa, 0xe7, 0x36, 0x9d, 0x16, 0x7a, 0x09, 0xa6,
0xec, 0x4e, 0x2f, 0x8c, 0x48, 0xb0, 0x65, 0x75, 0x49, 0xc5, 0x58, 0x32, 0xce, 0x94, 0x6b, 0x3f,
0xfb, 0x72, 0x7f, 0xf1, 0xd8, 0xc1, 0xfe, 0xe2, 0xd4, 0xaa, 0x42, 0x61, 0x7d, 0x1c, 0x7a, 0x1e,
0x8a, 0x81, 0xd7, 0x21, 0x2b, 0x78, 0xab, 0x92, 0x61, 0x53, 0x8e, 0x8b, 0x29, 0x45, 0xcc, 0xc1,
0x58, 0xe2, 0xcd, 0x7f, 0x36, 0x00, 0x56, 0x7c, 0x7f, 0x3b, 0xf0, 0x6e, 0x13, 0x3b, 0x42, 0x6f,
0x41, 0x89, 0x6a, 0xa1, 0x61, 0x45, 0x16, 0xe3, 0x36, 0x75, 0xee, 0xd7, 0xaa, 0x7c, 0x31, 0x55,
0x7d, 0x31, 0x6a, 0xe7, 0xe8, 0xe8, 0xea, 0xde, 0xd9, 0xea, 0xb5, 0x5b, 0x74, 0xfe, 0x55, 0x12,
0x59, 0x35, 0x24, 0x98, 0x81, 0x82, 0xe1, 0x98, 0x2a, 0xda, 0x85, 0x5c, 0xe8, 0x13, 0x9b, 0x09,
0x36, 0x75, 0x6e, 0xbd, 0xfa, 0xc8, 0xf6, 0x51, 0x55, 0x62, 0xd7, 0x7d, 0x62, 0xd7, 0xa6, 0x05,
0xdb, 0x1c, 0xfd, 0xc2, 0x8c, 0x89, 0xf9, 0x4f, 0x06, 0xcc, 0xaa, 0x61, 0x9b, 0x4e, 0x18, 0xa1,
0x37, 0x0e, 0xad, 0xb0, 0x3a, 0xde, 0x0a, 0xe9, 0x6c, 0xb6, 0xbe, 0x13, 0x82, 0x51, 0x49, 0x42,
0xb4, 0xd5, 0xdd, 0x86, 0xbc, 0x13, 0x91, 0x6e, 0x58, 0xc9, 0x2c, 0x65, 0xcf, 0x4c, 0x9d, 0xbb,
0x90, 0xca, 0xf2, 0x6a, 0x33, 0x82, 0x63, 0x7e, 0x9d, 0xd2, 0xc6, 0x9c, 0x85, 0xf9, 0x17, 0x79,
0x7d, 0x71, 0x74, 0xd5, 0xe8, 0x2c, 0x4c, 0x85, 0x5e, 0x2f, 0xb0, 0x09, 0x26, 0xbe, 0x17, 0x56,
0x8c, 0xa5, 0x2c, 0xdd, 0x7c, 0x6a, 0x2b, 0x75, 0x05, 0xc6, 0xfa, 0x18, 0xf4, 0x27, 0x06, 0x4c,
0x37, 0x48, 0x18, 0x39, 0x2e, 0xe3, 0x2f, 0x25, 0x7f, 0x6d, 0x32, 0xc9, 0x25, 0x70, 0x4d, 0x51,
0xae, 0x3d, 0x25, 0x56, 0x31, 0xad, 0x01, 0x43, 0x9c, 0x60, 0x4e, 0x0d, 0xbe, 0x41, 0x42, 0x3b,
0x70, 0x7c, 0xfa, 0x5d, 0xc9, 0x26, 0x0d, 0x7e, 0x4d, 0xa1, 0xb0, 0x3e, 0x0e, 0xed, 0x42, 0x9e,
0x1a, 0x74, 0x58, 0xc9, 0x31, 0xe1, 0x2f, 0x4e, 0x20, 0xbc, 0x50, 0x27, 0x3d, 0x28, 0x4a, 0xef,
0xf4, 0x2b, 0xc4, 0x9c, 0x07, 0xfa, 0xc4, 0x80, 0x8a, 0x38, 0x6d, 0x98, 0x70, 0x55, 0xde, 0x6c,
0x3b, 0x11, 0xe9, 0x38, 0x61, 0x54, 0xc9, 0x33, 0x01, 0x96, 0xc7, 0x33, 0xa9, 0x4b, 0x81, 0xd7,
0xf3, 0x37, 0x1c, 0xb7, 0x51, 0x5b, 0x12, 0x9c, 0x2a, 0xab, 0x23, 0x08, 0xe3, 0x91, 0x2c, 0xd1,
0x9f, 0x19, 0x30, 0xef, 0x5a, 0x5d, 0x12, 0xfa, 0x16, 0xdd, 0x54, 0x8e, 0xae, 0x75, 0x2c, 0x7b,
0x97, 0x49, 0x54, 0x78, 0x34, 0x89, 0x4c, 0x21, 0xd1, 0xfc, 0xd6, 0x48, 0xd2, 0xf8, 0x01, 0x6c,
0xcd, 0x7f, 0xc8, 0xc2, 0x94, 0x66, 0x08, 0x4f, 0xc0, 0xb3, 0x74, 0x12, 0x9e, 0xe5, 0x4a, 0x3a,
0x06, 0x3c, 0xca, 0xb5, 0xa0, 0x08, 0x0a, 0x61, 0x64, 0x45, 0xbd, 0x90, 0x19, 0xe9, 0xd4, 0xb9,
0xcd, 0x94, 0xf8, 0x31, 0x9a, 0xb5, 0x59, 0xc1, 0xb1, 0xc0, 0xbf, 0xb1, 0xe0, 0x85, 0xde, 0x86,
0xb2, 0xe7, 0xd3, 0x98, 0x41, 0x4f, 0x47, 0x8e, 0x31, 0x5e, 0x9b, 0x80, 0xf1, 0x35, 0x49, 0xab,
0x36, 0x73, 0xb0, 0xbf, 0x58, 0x8e, 0x3f, 0xb1, 0xe2, 0x62, 0xda, 0xf0, 0x94, 0x26, 0xdf, 0xaa,
0xe7, 0x36, 0x1c, 0xb6, 0xa1, 0x4b, 0x90, 0x8b, 0xfa, 0xbe, 0x0c, 0x4a, 0xb1, 0x8a, 0x76, 0xfa,
0x3e, 0xc1, 0x0c, 0x43, 0xc3, 0x50, 0x97, 0x84, 0xa1, 0xd5, 0x22, 0x83, 0x61, 0xe8, 0x2a, 0x07,
0x63, 0x89, 0x37, 0xdf, 0x86, 0x53, 0xc3, 0xbd, 0x06, 0x7a, 0x16, 0x0a, 0x21, 0x09, 0xf6, 0x48,
0x20, 0x18, 0x29, 0xcd, 0x30, 0x28, 0x16, 0x58, 0xb4, 0x0c, 0xe5, 0xd8, 0x1a, 0x05, 0xbb, 0x39,
0x31, 0xb4, 0xac, 0x4c, 0x58, 0x8d, 0x31, 0xff, 0xc5, 0x80, 0xe3, 0x1a, 0xcf, 0x27, 0x10, 0x1c,
0x76, 0x93, 0xc1, 0xe1, 0x62, 0x3a, 0x16, 0x33, 0x22, 0x3a, 0x7c, 0x5a, 0x80, 0x39, 0xdd, 0xae,
0xd8, 0xf1, 0x64, 0x99, 0x01, 0xf1, 0xbd, 0xeb, 0x78, 0x53, 0xa8, 0x53, 0x65, 0x06, 0x1c, 0x8c,
0x25, 0x9e, 0xee, 0xaf, 0x6f, 0x45, 0x6d, 0xa1, 0xcb, 0x78, 0x7f, 0xb7, 0xad, 0xa8, 0x8d, 0x19,
0x06, 0xfd, 0x26, 0xcc, 0x46, 0x56, 0xd0, 0x22, 0x11, 0x26, 0x7b, 0x4e, 0x28, 0x2d, 0xb2, 0x5c,
0x3b, 0x25, 0xc6, 0xce, 0xee, 0x24, 0xb0, 0x78, 0x60, 0x34, 0x72, 0x21, 0xd7, 0x26, 0x9d, 0x6e,
0xa5, 0xc8, 0x34, 0xbd, 0x9d, 0xd2, 0x01, 0x62, 0x0b, 0xbd, 0x4c, 0x3a, 0xdd, 0x5a, 0x89, 0xca,
0x4b, 0x7f, 0x61, 0xc6, 0x07, 0xfd, 0x81, 0x01, 0xe5, 0xdd, 0x5e, 0x18, 0x79, 0x5d, 0xe7, 0x1e,
0xa9, 0x94, 0x18, 0xd7, 0xeb, 0x69, 0x72, 0xdd, 0x90, 0xc4, 0xf9, 0x71, 0x8a, 0x3f, 0xb1, 0x62,
0x8b, 0xee, 0x41, 0x71, 0x37, 0xf4, 0x5c, 0x97, 0x44, 0x95, 0x32, 0x93, 0xa0, 0x9e, 0xaa, 0x04,
0x9c, 0x74, 0x6d, 0x8a, 0x6e, 0xa9, 0xf8, 0xc0, 0x92, 0x21, 0x53, 0x40, 0xc3, 0x09, 0x88, 0x1d,
0x79, 0x41, 0xbf, 0x02, 0xe9, 0x2b, 0x60, 0x4d, 0x12, 0xe7, 0x0a, 0x88, 0x3f, 0xb1, 0x62, 0x8b,
0xf6, 0xa0, 0xe0, 0x77, 0x7a, 0x2d, 0xc7, 0xad, 0x4c, 0x31, 0x01, 0x70, 0x9a, 0x02, 0x6c, 0x33,
0xca, 0x35, 0xa0, 0x0e, 0x82, 0xff, 0xc6, 0x82, 0x9b, 0xf9, 0x8f, 0x06, 0xcc, 0x8f, 0x16, 0x98,
0x9f, 0x0c, 0xbb, 0x17, 0x84, 0xdc, 0xa3, 0x95, 0xf4, 0x93, 0xc1, 0xc0, 0x58, 0xe2, 0xd1, 0xbb,
0x50, 0xbc, 0x2d, 0xb6, 0x30, 0x93, 0xfe, 0x16, 0x5e, 0x11, 0x5b, 0x18, 0xf3, 0xbf, 0x22, 0xb7,
0x51, 0x30, 0x35, 0xff, 0xde, 0x80, 0x93, 0x43, 0x2d, 0x1e, 0x55, 0x01, 0xf6, 0xac, 0x4e, 0x8f,
0x5c, 0x74, 0x68, 0x32, 0xc4, 0xd3, 0xbf, 0x59, 0x1a, 0x30, 0x6f, 0xc4, 0x50, 0xac, 0x8d, 0x40,
0xbf, 0x0f, 0xe0, 0x5b, 0x81, 0xd5, 0x25, 0x11, 0x09, 0xa4, 0x5b, 0xba, 0x3c, 0xc1, 0x62, 0xa8,
0x10, 0xdb, 0x92, 0xa0, 0x0a, 0xd7, 0x31, 0x28, 0xc4, 0x1a, 0x3f, 0xf3, 0xbf, 0x0d, 0xa8, 0x8c,
0x5a, 0x3e, 0xf2, 0xa1, 0x48, 0xee, 0x46, 0x37, 0xac, 0x80, 0xaf, 0x63, 0xb2, 0x5c, 0x5a, 0x10,
0xbd, 0x61, 0x05, 0x4a, 0xad, 0x17, 0x38, 0x75, 0x2c, 0xd9, 0xa0, 0x16, 0xe4, 0xa2, 0x8e, 0x95,
0x46, 0xea, 0xae, 0xb1, 0x53, 0x71, 0x71, 0x73, 0x25, 0xc4, 0x8c, 0x81, 0xf9, 0xf5, 0xb0, 0x75,
0x8b, 0xc3, 0x4a, 0x33, 0x60, 0xe2, 0xee, 0x39, 0x81, 0xe7, 0x76, 0x89, 0x1b, 0x0d, 0x96, 0x7c,
0x17, 0x14, 0x0a, 0xeb, 0xe3, 0xd0, 0x7b, 0x43, 0x76, 0x72, 0x63, 0x82, 0x25, 0x08, 0x71, 0xc6,
0xdf, 0xcc, 0xff, 0x1a, 0x76, 0xbc, 0x62, 0x0f, 0x88, 0xce, 0x01, 0xd0, 0xd0, 0xbb, 0x1d, 0x90,
0xa6, 0x73, 0x57, 0xac, 0x2a, 0x26, 0xb9, 0x15, 0x63, 0xb0, 0x36, 0x0a, 0xbd, 0x03, 0x65, 0xa7,
0x6b, 0xb5, 0xc8, 0x8e, 0xd5, 0x92, 0x4b, 0x9a, 0x24, 0xcb, 0x8a, 0x85, 0x59, 0x17, 0x44, 0x55,
0x82, 0x20, 0x21, 0x21, 0x56, 0x1c, 0x91, 0x09, 0x05, 0xf6, 0x41, 0x33, 0x3c, 0x7a, 0x90, 0x98,
0x53, 0x61, 0x23, 0x43, 0x2c, 0x30, 0xe6, 0xab, 0xf0, 0xf3, 0x11, 0x3e, 0x88, 0xc6, 0x4f, 0x57,
0x15, 0xed, 0xb1, 0x1d, 0xb0, 0x6a, 0x9d, 0x61, 0xcc, 0x6f, 0x72, 0x89, 0x0c, 0xa4, 0x2e, 0xd3,
0x4a, 0x46, 0x45, 0xe4, 0x1f, 0x9b, 0x69, 0xba, 0x16, 0x2d, 0x79, 0xe2, 0x15, 0xa0, 0xe0, 0x85,
0xfe, 0xc8, 0x60, 0x75, 0x97, 0x4c, 0xba, 0x84, 0x5b, 0x7b, 0x0c, 0x35, 0xa0, 0x5e, 0xca, 0x49,
0x20, 0xd6, 0x59, 0x53, 0x3f, 0xec, 0xf3, 0x12, 0x4c, 0x54, 0x7f, 0xf1, 0x81, 0x95, 0x95, 0x99,
0xc4, 0xa3, 0x1e, 0x40, 0xd8, 0x77, 0xed, 0x6d, 0xaf, 0xe3, 0xd8, 0x7d, 0x91, 0x0d, 0x4f, 0x72,
0x6c, 0xeb, 0x31, 0x31, 0xee, 0x34, 0xd5, 0x37, 0xd6, 0x18, 0xa1, 0xcf, 0x0c, 0x98, 0x73, 0x5a,
0xae, 0x17, 0x90, 0x35, 0xa7, 0xd9, 0x24, 0x01, 0x71, 0x6d, 0x12, 0x8a, 0xc2, 0x6f, 0x67, 0x02,
0xf6, 0xb2, 0x86, 0x5a, 0x1f, 0xa4, 0x5d, 0xfb, 0x85, 0x50, 0xc1, 0xdc, 0x21, 0x14, 0x3e, 0x2c,
0x89, 0xf9, 0x6d, 0x29, 0x99, 0xf9, 0xf1, 0xca, 0xe1, 0x1e, 0x94, 0x03, 0xc1, 0x40, 0x7a, 0xd4,
0xf5, 0x14, 0x84, 0x15, 0xf5, 0x4a, 0x7c, 0x92, 0x24, 0x3c, 0xc4, 0x8a, 0x1d, 0xf5, 0xac, 0x54,
0x7f, 0xc2, 0xac, 0x26, 0xdd, 0x22, 0xc1, 0x52, 0x15, 0x65, 0x7d, 0x97, 0x16, 0x65, 0x7d, 0xd7,
0x46, 0x1e, 0x14, 0xda, 0xc4, 0xea, 0x44, 0x6d, 0x51, 0x94, 0x5d, 0x9a, 0x28, 0x96, 0x51, 0x42,
0x83, 0xf5, 0x18, 0x87, 0x62, 0xc1, 0x06, 0xf5, 0xa0, 0xd8, 0x76, 0x42, 0x96, 0x4e, 0xf1, 0xd6,
0xc3, 0x95, 0x89, 0x74, 0xca, 0x13, 0xe3, 0xcb, 0x9c, 0xa2, 0xb2, 0x7c, 0x01, 0xc0, 0x92, 0x17,
0xfa, 0x43, 0x03, 0xc0, 0x96, 0x95, 0x98, 0xb4, 0xbd, 0x6b, 0xe9, 0x1c, 0xd7, 0xb8, 0xc2, 0x53,
0xfe, 0x39, 0x06, 0x85, 0x58, 0x63, 0x8b, 0x1a, 0x30, 0x1d, 0x10, 0xdb, 0x73, 0x6d, 0xa7, 0x43,
0x1a, 0x2b, 0x51, 0xa5, 0xc0, 0x74, 0xfe, 0xcb, 0xe3, 0x55, 0x4c, 0x3b, 0x4e, 0x97, 0xa8, 0x96,
0x10, 0xd6, 0xe8, 0xe0, 0x04, 0x55, 0xf4, 0xa1, 0x01, 0xb3, 0x71, 0x35, 0x4a, 0xb7, 0x83, 0x88,
0x82, 0x61, 0x3d, 0x8d, 0xc2, 0x97, 0x11, 0xac, 0x21, 0x5a, 0xad, 0x24, 0x61, 0x78, 0x80, 0x29,
0x7a, 0x13, 0xc0, 0xbb, 0xc5, 0x8a, 0x4d, 0xba, 0xd6, 0xd2, 0x43, 0xaf, 0x55, 0x6b, 0x5e, 0x48,
0x2a, 0x58, 0xa3, 0x88, 0x36, 0x00, 0xf8, 0x79, 0xa1, 0x15, 0x34, 0xab, 0x0d, 0xca, 0xb5, 0x5f,
0x91, 0x73, 0xea, 0x31, 0xe6, 0xfe, 0xfe, 0xe2, 0xe1, 0xe4, 0x8f, 0x15, 0xdd, 0xda, 0x74, 0x84,
0xa1, 0xe8, 0xb8, 0xad, 0x80, 0x84, 0x61, 0x05, 0x98, 0x71, 0x3c, 0xa7, 0x49, 0x5a, 0xb5, 0xbd,
0x80, 0xb0, 0xaa, 0xd5, 0xb3, 0x1a, 0x35, 0xab, 0x63, 0xb9, 0x36, 0x09, 0xd6, 0xf9, 0x70, 0x65,
0x74, 0x02, 0x80, 0x25, 0x21, 0xf3, 0xbd, 0x44, 0xb4, 0xda, 0x09, 0x08, 0x41, 0x1d, 0xc8, 0xbb,
0x5e, 0x23, 0x76, 0x28, 0x97, 0x52, 0x70, 0x28, 0x5b, 0x5e, 0x43, 0x6b, 0xbc, 0xd1, 0xaf, 0x10,
0x73, 0x26, 0xe6, 0x0f, 0xc9, 0xbc, 0xf7, 0xa6, 0x15, 0xd9, 0xed, 0x0b, 0x7b, 0x34, 0xfb, 0xd9,
0x48, 0xf4, 0x22, 0x7e, 0x43, 0xef, 0x45, 0xdc, 0xdf, 0x5f, 0x7c, 0x6e, 0x54, 0x3b, 0xfe, 0x0e,
0xa5, 0x50, 0x65, 0x24, 0xb4, 0xb6, 0xc5, 0x3b, 0x30, 0xa5, 0x49, 0x28, 0x9c, 0x56, 0x5a, 0xc5,
0x7a, 0x1c, 0x00, 0x35, 0x20, 0xd6, 0xf9, 0x99, 0xdf, 0x66, 0xa0, 0x28, 0xba, 0x80, 0x63, 0x37,
0x3f, 0x64, 0xae, 0x91, 0x19, 0x95, 0x6b, 0x20, 0x1f, 0x0a, 0x36, 0xbb, 0x53, 0x10, 0x9e, 0x71,
0x92, 0x2c, 0x5f, 0x48, 0xc7, 0xef, 0x28, 0x94, 0x4c, 0xfc, 0x1b, 0x0b, 0x3e, 0xe8, 0x13, 0x03,
0x8e, 0xdb, 0x34, 0x89, 0xb4, 0xd5, 0xc1, 0xcd, 0x4d, 0xdc, 0x9a, 0x5b, 0x4d, 0x52, 0xac, 0xfd,
0x5c, 0x70, 0x3f, 0x3e, 0x80, 0xc0, 0x83, 0xbc, 0xcd, 0xbf, 0xcd, 0xc2, 0x4c, 0x42, 0x72, 0xf4,
0xab, 0x50, 0xea, 0x85, 0x24, 0xd0, 0xb2, 0xb4, 0xb8, 0x7b, 0x73, 0x5d, 0xc0, 0x71, 0x3c, 0x82,
0x8e, 0xf6, 0xad, 0x30, 0xbc, 0xe3, 0x05, 0x0d, 0xa1, 0xe7, 0x78, 0xf4, 0xb6, 0x80, 0xe3, 0x78,
0x04, 0x4d, 0xe3, 0x6f, 0x11, 0x2b, 0x20, 0xc1, 0x8e, 0xb7, 0x4b, 0x0e, 0x35, 0xb2, 0x6b, 0x0a,
0x85, 0xf5, 0x71, 0x4c, 0x69, 0x51, 0x27, 0x5c, 0xed, 0x38, 0xc4, 0x8d, 0xb8, 0x98, 0x29, 0x28,
0x6d, 0x67, 0xb3, 0xae, 0x53, 0x54, 0x4a, 0x1b, 0x40, 0xe0, 0x41, 0xde, 0xe8, 0x03, 0x03, 0x66,
0xac, 0x3b, 0xa1, 0xba, 0x92, 0xaa, 0xe4, 0x27, 0x36, 0x9f, 0xc4, 0x15, 0x57, 0x6d, 0xee, 0x60,
0x7f, 0x31, 0x79, 0xeb, 0x85, 0x93, 0x1c, 0xcd, 0x6f, 0x0c, 0x90, 0x57, 0x5d, 0x4f, 0xa0, 0x49,
0xd7, 0x4a, 0x36, 0xe9, 0x6a, 0x93, 0x9f, 0x93, 0x11, 0x0d, 0xba, 0x2d, 0x28, 0xae, 0x7a, 0xdd,
0xae, 0xe5, 0x36, 0xd0, 0x2f, 0x41, 0xd1, 0xe6, 0x3f, 0x45, 0xcd, 0xce, 0xda, 0x37, 0x02, 0x8b,
0x25, 0x0e, 0x3d, 0x0d, 0x39, 0x2b, 0x10, 0xa5, 0x50, 0x99, 0x77, 0xb7, 0x56, 0x82, 0x56, 0x88,
0x19, 0xd4, 0xfc, 0x24, 0x03, 0xb0, 0xea, 0x75, 0x7d, 0x2b, 0x20, 0x8d, 0x1d, 0xef, 0xff, 0x7d,
0x21, 0x61, 0x7e, 0x6c, 0x00, 0xa2, 0xfa, 0xf0, 0x5c, 0xe2, 0xaa, 0x3a, 0x16, 0x2d, 0x43, 0xd9,
0x96, 0x50, 0x71, 0xea, 0xe3, 0xe4, 0x35, 0x1e, 0x8e, 0xd5, 0x98, 0x31, 0x7c, 0xeb, 0x69, 0xc8,
0xb3, 0x9e, 0x8a, 0x38, 0xe5, 0xf1, 0x76, 0xb3, 0xa6, 0x0b, 0xe6, 0x38, 0xf3, 0xd3, 0x0c, 0x9c,
0xe2, 0x06, 0x7d, 0xd5, 0x72, 0xad, 0x16, 0xa1, 0x55, 0xfb, 0xb8, 0x95, 0x22, 0x7a, 0x0b, 0x72,
0x8e, 0xeb, 0xc8, 0x76, 0xd3, 0x44, 0x36, 0xc9, 0x6d, 0x89, 0x5b, 0xcf, 0xba, 0xeb, 0x44, 0x98,
0x51, 0x46, 0x3e, 0x94, 0xe4, 0x6d, 0xb4, 0x88, 0x10, 0x69, 0x70, 0x89, 0x0f, 0xda, 0x25, 0x41,
0x1b, 0xc7, 0x5c, 0xcc, 0xbf, 0x33, 0x60, 0xd0, 0x69, 0xb3, 0x78, 0xc7, 0x2f, 0x55, 0x06, 0xe3,
0x5d, 0xf2, 0x1a, 0x64, 0xfc, 0x9b, 0x05, 0xf4, 0x06, 0x4c, 0x59, 0x51, 0x44, 0xba, 0x7e, 0xc4,
0xf2, 0xb6, 0xec, 0x43, 0xe7, 0x6d, 0xac, 0x14, 0xbc, 0xea, 0x35, 0x9c, 0xa6, 0xc3, 0x72, 0x36,
0x9d, 0x9c, 0x69, 0xc1, 0xb4, 0x5e, 0x27, 0x3c, 0x86, 0x05, 0x98, 0x37, 0x60, 0x26, 0xd1, 0x56,
0x1b, 0xc3, 0x5c, 0x62, 0x83, 0xcc, 0x3c, 0xc0, 0x20, 0x3f, 0xcf, 0xc0, 0x2c, 0x6b, 0x8e, 0x13,
0xdf, 0x0b, 0x1d, 0x56, 0x56, 0x3c, 0x03, 0xd9, 0x5e, 0xd0, 0x11, 0x84, 0xa7, 0xc4, 0xac, 0xec,
0x75, 0xbc, 0x89, 0x29, 0x7c, 0x8c, 0x93, 0x60, 0x42, 0xc1, 0xb6, 0xd6, 0xa8, 0x63, 0xa6, 0x7a,
0x9e, 0xe6, 0x2d, 0x93, 0xd5, 0x15, 0x0a, 0xc1, 0x02, 0x83, 0xce, 0x40, 0xc9, 0x26, 0x41, 0xc4,
0x46, 0xe5, 0xd8, 0xa8, 0x69, 0x6a, 0x21, 0xab, 0x02, 0x86, 0x63, 0x2c, 0x75, 0x8b, 0xbb, 0xa4,
0xcf, 0x06, 0xe6, 0xd9, 0x40, 0xde, 0xd5, 0xe6, 0x20, 0x2c, 0x71, 0x89, 0x30, 0x5e, 0x78, 0xa8,
0x30, 0x5e, 0x3c, 0x2a, 0x8c, 0x9b, 0xaf, 0x41, 0x69, 0xdd, 0x6d, 0x7a, 0xd4, 0x71, 0xa7, 0xa5,
0xf7, 0x3a, 0x94, 0xae, 0xdc, 0xdc, 0xe1, 0xe1, 0xde, 0x84, 0xac, 0x63, 0x71, 0x37, 0x94, 0x55,
0x72, 0xac, 0x87, 0x61, 0x8f, 0x99, 0x1a, 0x45, 0xa2, 0xd3, 0x90, 0x25, 0x77, 0x7d, 0x46, 0x32,
0xab, 0x5c, 0xd5, 0x85, 0xbb, 0xbe, 0x13, 0x90, 0x90, 0x0e, 0x22, 0x77, 0x7d, 0xb3, 0x07, 0xa0,
0x9a, 0x8e, 0x29, 0x49, 0x4a, 0xc9, 0xd8, 0x5e, 0x83, 0xfb, 0x83, 0x92, 0x22, 0xb3, 0xea, 0x35,
0x08, 0x66, 0x18, 0xf3, 0x23, 0x03, 0x4e, 0x0c, 0x76, 0x0a, 0x7f, 0x34, 0x0f, 0xfb, 0x3a, 0xcc,
0x1d, 0x6a, 0xf1, 0xa5, 0xb5, 0x69, 0x21, 0xa8, 0xcb, 0x51, 0xd4, 0x14, 0xed, 0x0c, 0x63, 0xe2,
0x54, 0xa8, 0xde, 0x77, 0x6d, 0x75, 0x07, 0x5b, 0x4a, 0x76, 0x33, 0xcc, 0xcf, 0x73, 0x30, 0x50,
0x94, 0xa2, 0x9e, 0x7e, 0xff, 0x6b, 0xa4, 0x78, 0xff, 0x1b, 0xef, 0xd0, 0xb0, 0x3b, 0x60, 0xf4,
0x12, 0xe4, 0xfd, 0xb6, 0x15, 0x4a, 0x1d, 0x2d, 0x4a, 0x1d, 0x6d, 0x53, 0xe0, 0x7d, 0xbd, 0x76,
0x66, 0x10, 0xcc, 0x47, 0xeb, 0x5e, 0x2e, 0x7b, 0x84, 0x9b, 0x7e, 0x97, 0xf7, 0xf2, 0x30, 0x09,
0x7b, 0x9d, 0x48, 0xa4, 0xbc, 0x5b, 0x69, 0x69, 0x96, 0x53, 0x55, 0x4d, 0x3d, 0xfe, 0x8d, 0x35,
0x8e, 0xe8, 0xb7, 0xa1, 0x1c, 0x46, 0x56, 0x10, 0x3d, 0x62, 0x23, 0x23, 0x56, 0x5f, 0x5d, 0x12,
0xc1, 0x8a, 0x1e, 0x7a, 0x1d, 0xa0, 0xe9, 0xb8, 0x4e, 0xd8, 0x66, 0xd4, 0x8b, 0x8f, 0x16, 0x82,
0x2e, 0xc6, 0x14, 0xb0, 0x46, 0xcd, 0xfc, 0x22, 0x03, 0x53, 0xda, 0x9b, 0x95, 0x31, 0x0c, 0x7e,
0xe0, 0x8d, 0x4d, 0x66, 0xcc, 0x37, 0x36, 0x67, 0xa0, 0xe4, 0x7b, 0x1d, 0xc7, 0x76, 0xe2, 0x86,
0x38, 0xf3, 0xdb, 0xdb, 0x02, 0x86, 0x63, 0x2c, 0x8a, 0xa0, 0x7c, 0xfb, 0x4e, 0xc4, 0x3c, 0x9c,
0x7c, 0x91, 0xb3, 0x3a, 0xc9, 0x6d, 0x8a, 0xf0, 0x96, 0x4a, 0xc9, 0x12, 0x12, 0x62, 0xc5, 0x88,
0xc6, 0x9e, 0x56, 0xe0, 0xf5, 0x7c, 0xde, 0x0e, 0x13, 0xed, 0x7a, 0xf6, 0x9e, 0x25, 0xc4, 0x02,
0x63, 0xfe, 0x65, 0x16, 0x40, 0x8b, 0x77, 0x4b, 0x90, 0x0b, 0x88, 0xef, 0x0d, 0xea, 0x8a, 0x8e,
0xc0, 0x0c, 0x93, 0x88, 0x2d, 0x99, 0x87, 0x8a, 0x2d, 0xd9, 0x23, 0x4b, 0xc4, 0x57, 0x61, 0x26,
0x0c, 0xdb, 0xdb, 0x81, 0xb3, 0x67, 0x45, 0x64, 0x83, 0xf4, 0xc5, 0xed, 0xf9, 0x49, 0x31, 0x65,
0xa6, 0x5e, 0xbf, 0xac, 0x90, 0x38, 0x39, 0x76, 0x68, 0x75, 0x9d, 0xff, 0xf1, 0xaa, 0x6b, 0x54,
0x87, 0x93, 0x8e, 0x1b, 0x12, 0xbb, 0x17, 0x88, 0xfe, 0xf5, 0x65, 0x2f, 0x8c, 0xe8, 0xa2, 0x0a,
0x2c, 0x78, 0x3c, 0x23, 0x08, 0x9d, 0x5c, 0x1f, 0x36, 0x08, 0x0f, 0x9f, 0xcb, 0x9e, 0xef, 0xa9,
0xed, 0xfa, 0xbf, 0xf5, 0x7c, 0x4f, 0xc9, 0x3d, 0xa2, 0xfe, 0xfb, 0xeb, 0x0c, 0x4c, 0xcb, 0xa6,
0xd7, 0x9a, 0xd3, 0x6c, 0xd2, 0x40, 0xc4, 0xcc, 0x54, 0x98, 0x63, 0x3c, 0x8b, 0xd9, 0x30, 0xe6,
0x38, 0x6a, 0xb2, 0xbb, 0x8e, 0xdb, 0x18, 0x8c, 0x95, 0x1b, 0x8e, 0xdb, 0xc0, 0x0c, 0x93, 0x7c,
0x08, 0x93, 0x3d, 0xfa, 0x21, 0x4c, 0xec, 0x31, 0x72, 0x0f, 0xf2, 0x18, 0xfc, 0xe9, 0x86, 0xb2,
0x33, 0xcd, 0x63, 0xec, 0x28, 0x14, 0xd6, 0xc7, 0x51, 0x49, 0x3a, 0xce, 0x1e, 0xe1, 0x93, 0x0a,
0x49, 0x49, 0x36, 0x25, 0x02, 0xab, 0x31, 0x54, 0x92, 0x86, 0xd3, 0x6c, 0x8a, 0xbc, 0x2c, 0x96,
0x84, 0x6a, 0x07, 0x33, 0x8c, 0xf9, 0x1f, 0x06, 0xfc, 0x62, 0xe4, 0x3d, 0x49, 0x5a, 0x1a, 0x94,
0x0a, 0xc9, 0x8e, 0x54, 0x48, 0x42, 0xc7, 0xb9, 0x31, 0x74, 0xfc, 0x22, 0x4c, 0xdf, 0x0e, 0x3d,
0x77, 0xdb, 0x73, 0x5c, 0x76, 0x41, 0xcb, 0x5d, 0xd4, 0x89, 0x83, 0xfd, 0xc5, 0xe9, 0x2b, 0xf5,
0x6b, 0x5b, 0x12, 0x8e, 0x13, 0xa3, 0xcc, 0x8f, 0xf2, 0x70, 0x2a, 0xee, 0x8b, 0x92, 0xe8, 0x8e,
0x17, 0xec, 0x3a, 0x6e, 0x8b, 0x26, 0xa4, 0xe8, 0x33, 0x03, 0xa6, 0xb9, 0xae, 0x37, 0xad, 0x5b,
0xa4, 0x23, 0x3b, 0xb0, 0x76, 0x1a, 0x1d, 0xd8, 0x04, 0xa7, 0xea, 0x8e, 0xc6, 0xe5, 0x82, 0x1b,
0x05, 0x7d, 0xd5, 0xb5, 0xd7, 0x51, 0x38, 0x21, 0x0e, 0xba, 0x0b, 0x65, 0xf9, 0xda, 0xa7, 0x99,
0xc2, 0x7b, 0x27, 0x29, 0x1b, 0x26, 0x4d, 0xd5, 0x48, 0x97, 0xcf, 0x8b, 0x9a, 0x21, 0x56, 0xcc,
0xd0, 0x87, 0x06, 0x14, 0x3a, 0x5c, 0x27, 0x59, 0xc6, 0xf7, 0x77, 0xd2, 0xd7, 0x89, 0xae, 0x8d,
0xb8, 0xc4, 0x13, 0x7a, 0x10, 0xcc, 0xf5, 0x16, 0x7c, 0x2e, 0xa5, 0x16, 0xfc, 0xfc, 0x6f, 0xc1,
0xdc, 0xa1, 0xed, 0x40, 0x27, 0x20, 0xbb, 0x4b, 0xfa, 0xdc, 0xe6, 0x31, 0xfd, 0x89, 0x9e, 0x4a,
0xa4, 0xb4, 0x22, 0x87, 0x7d, 0x25, 0x73, 0xde, 0x98, 0x7f, 0x19, 0xa6, 0x1e, 0x71, 0xaa, 0xf9,
0x6f, 0x39, 0xe5, 0xaf, 0xb6, 0xbc, 0x06, 0xeb, 0x93, 0x07, 0x6a, 0x5b, 0x84, 0x37, 0x4e, 0x6b,
0x93, 0x63, 0xef, 0xa2, 0x01, 0xb1, 0xce, 0x0f, 0xdd, 0x63, 0x2f, 0x1e, 0x68, 0x29, 0x41, 0x9a,
0xe1, 0xe3, 0x32, 0xb1, 0xed, 0x98, 0x03, 0xd6, 0xb8, 0x21, 0x02, 0x39, 0xc7, 0x6d, 0x7a, 0xc2,
0xc0, 0x26, 0x49, 0x6e, 0x64, 0x75, 0xa9, 0xdc, 0x0c, 0x85, 0x60, 0x46, 0x9e, 0x06, 0xf9, 0x59,
0x37, 0x61, 0x79, 0x22, 0x33, 0x7e, 0x2d, 0x75, 0x93, 0xe6, 0x57, 0x60, 0x49, 0x18, 0x1e, 0x60,
0x8e, 0x56, 0xe0, 0xb8, 0xdc, 0x81, 0x1b, 0x24, 0x60, 0x2f, 0xfe, 0x78, 0x2c, 0x88, 0xf3, 0x04,
0x9c, 0x44, 0xe3, 0xc1, 0xf1, 0xda, 0xa3, 0x8a, 0xc2, 0xc8, 0x47, 0x15, 0x1f, 0x1b, 0x70, 0x42,
0x12, 0xba, 0xb6, 0x47, 0x82, 0xc0, 0x69, 0x30, 0x97, 0xcb, 0xef, 0x5c, 0x37, 0x7b, 0xd6, 0x60,
0x55, 0x79, 0x59, 0x22, 0xb0, 0x1a, 0x83, 0x2e, 0x0d, 0xbb, 0xa5, 0xe7, 0x4e, 0xff, 0xe1, 0xee,
0xd3, 0xbf, 0x36, 0x40, 0xb7, 0xc2, 0xf1, 0xa2, 0xcc, 0xf3, 0x50, 0xdc, 0x13, 0x2a, 0x1a, 0x68,
0xf0, 0x48, 0xd5, 0x48, 0x7c, 0x1c, 0x90, 0xb2, 0xe3, 0x85, 0xf4, 0xdc, 0x43, 0x84, 0xf4, 0xfc,
0xc8, 0xb7, 0x27, 0x7f, 0x93, 0xa5, 0xa9, 0x95, 0x5c, 0x14, 0x2b, 0x81, 0x7e, 0x0a, 0xeb, 0x42,
0x2f, 0xc6, 0x0d, 0x38, 0x9e, 0x70, 0x3c, 0x9d, 0x6c, 0xc0, 0xdd, 0xdf, 0x5f, 0x04, 0xbe, 0x5c,
0xd6, 0xc5, 0x18, 0xd2, 0x8e, 0x2b, 0x1e, 0x51, 0xa8, 0x9e, 0x87, 0x52, 0xdb, 0xf3, 0x76, 0xd9,
0x25, 0x6d, 0x29, 0xc1, 0xa2, 0x74, 0x59, 0xc0, 0xef, 0x6b, 0xbf, 0x71, 0x3c, 0x1a, 0xad, 0x40,
0x99, 0xfe, 0x66, 0x15, 0xb2, 0xb8, 0xdf, 0x3d, 0x1d, 0x5b, 0xb0, 0x44, 0x0c, 0x29, 0xa6, 0xd5,
0x2c, 0xf3, 0x73, 0x6d, 0xd7, 0x44, 0xc7, 0xf1, 0x27, 0xb1, 0x6b, 0xe7, 0x07, 0x76, 0x6d, 0xe9,
0xd0, 0xae, 0xcd, 0xaa, 0x97, 0x1f, 0x89, 0x9d, 0x53, 0x2f, 0x3e, 0x8a, 0x4f, 0xe6, 0xc5, 0xc7,
0x12, 0xe4, 0xe8, 0x7e, 0xb0, 0xbd, 0xd7, 0x9a, 0x62, 0x74, 0x03, 0x31, 0xc3, 0x98, 0x7f, 0x95,
0x81, 0xe3, 0x03, 0x4f, 0x39, 0x68, 0x65, 0x18, 0xc8, 0x47, 0xd2, 0x03, 0x75, 0x64, 0xfc, 0x3c,
0x3a, 0x1e, 0x81, 0xde, 0x04, 0x68, 0x10, 0xbf, 0xe3, 0xf5, 0x59, 0xbf, 0x20, 0xf7, 0xe8, 0x4f,
0x0d, 0xd6, 0x62, 0x2a, 0x58, 0xa3, 0x88, 0xe6, 0x21, 0xe3, 0x34, 0xd8, 0x76, 0x64, 0x6b, 0x20,
0xc6, 0x66, 0xd6, 0xd7, 0x70, 0xc6, 0x69, 0x68, 0xf7, 0x46, 0x85, 0x27, 0x77, 0x6f, 0x64, 0xfe,
0x4f, 0x16, 0x66, 0x12, 0x2d, 0x9b, 0x84, 0xc6, 0x8c, 0x23, 0x35, 0x76, 0x1a, 0xf2, 0x7e, 0xd0,
0x73, 0x79, 0xda, 0x52, 0x52, 0xa7, 0x60, 0x9b, 0x02, 0x31, 0xc7, 0xa1, 0x67, 0xa1, 0xd0, 0x08,
0xfa, 0xb8, 0xe7, 0x8a, 0x8e, 0x66, 0x2c, 0xcc, 0x1a, 0x83, 0x62, 0x81, 0x45, 0xef, 0xc0, 0x74,
0xc8, 0xac, 0x2d, 0xb0, 0x22, 0xd2, 0x92, 0x2f, 0xcb, 0x2e, 0x4d, 0xfc, 0x6c, 0x89, 0x93, 0xe3,
0x59, 0xbf, 0x0e, 0xc1, 0x09, 0x76, 0xe8, 0x03, 0x43, 0x7f, 0xaa, 0xc5, 0xff, 0xbe, 0xb3, 0x9d,
0x62, 0x2b, 0x8c, 0xef, 0xc4, 0x83, 0x5f, 0x6c, 0xf9, 0xb1, 0x15, 0x14, 0x1f, 0x83, 0x15, 0xc0,
0x10, 0x0b, 0x78, 0xdf, 0x80, 0x93, 0x43, 0x25, 0x7d, 0x62, 0x55, 0x1d, 0x3d, 0xb8, 0x3f, 0x1b,
0xd2, 0x37, 0x44, 0x7b, 0x8f, 0xe7, 0xe9, 0x9c, 0xe8, 0x4a, 0xce, 0x8c, 0xdc, 0x84, 0x87, 0x73,
0x1a, 0xea, 0xe0, 0x66, 0x9f, 0xe0, 0xc1, 0xfd, 0x63, 0x03, 0xb4, 0x77, 0x92, 0xe8, 0xf7, 0xa0,
0x6c, 0xf5, 0x22, 0xaf, 0x6b, 0x45, 0xa4, 0x21, 0x2a, 0x82, 0xad, 0x54, 0x5e, 0x64, 0xae, 0x48,
0xaa, 0x5c, 0x5f, 0xf1, 0x27, 0x56, 0xfc, 0xcc, 0x57, 0xf8, 0xf6, 0x0d, 0x4c, 0x50, 0xbe, 0xc1,
0x18, 0xed, 0x1b, 0xcc, 0xff, 0x14, 0xeb, 0x10, 0x51, 0xf5, 0xfc, 0xc0, 0x3d, 0xde, 0xf8, 0x01,
0xa9, 0x0f, 0x60, 0xc7, 0xb7, 0xf0, 0x29, 0xbc, 0x78, 0x54, 0x57, 0xfa, 0xfa, 0x7b, 0x3c, 0x09,
0xc3, 0x1a, 0xb3, 0x84, 0xbd, 0x64, 0x8f, 0xb2, 0x17, 0xf3, 0xdf, 0x0d, 0x48, 0x78, 0x21, 0xd4,
0x85, 0x3c, 0x95, 0xa0, 0x9f, 0xc2, 0x83, 0x01, 0x9d, 0x2e, 0xb5, 0xa5, 0x7e, 0xad, 0x4c, 0x35,
0xce, 0x7e, 0x62, 0xce, 0x05, 0x39, 0x22, 0x90, 0x72, 0x15, 0x6d, 0xa4, 0xc4, 0x8d, 0xc6, 0x61,
0xf1, 0xc7, 0x1f, 0x15, 0x91, 0xcf, 0xc3, 0xdc, 0x21, 0x89, 0xa8, 0x59, 0x34, 0x3d, 0xf9, 0x3e,
0x42, 0x33, 0x8b, 0x8b, 0x14, 0x88, 0x39, 0xce, 0xfc, 0xc2, 0x80, 0x13, 0x83, 0xe4, 0xd1, 0x9f,
0x1b, 0x30, 0x17, 0x0e, 0xd2, 0x7b, 0x2c, 0x5a, 0x8b, 0x0b, 0x95, 0x43, 0x28, 0x7c, 0x58, 0x02,
0xba, 0xa3, 0x83, 0x2f, 0x7a, 0xa8, 0x4d, 0xc8, 0xde, 0xaa, 0x58, 0xa8, 0xba, 0x66, 0x14, 0x70,
0x1c, 0x8f, 0x40, 0xe7, 0x00, 0xf8, 0x8b, 0xb2, 0x2d, 0xd5, 0xf0, 0x8e, 0xad, 0xae, 0x1e, 0x63,
0xb0, 0x36, 0x2a, 0x71, 0x9f, 0x9b, 0x1d, 0xf7, 0x3e, 0x37, 0xf7, 0x80, 0xfb, 0x5c, 0x75, 0x89,
0x9c, 0x1f, 0x75, 0x89, 0x5c, 0xab, 0x7e, 0xf9, 0xfd, 0xc2, 0xb1, 0xaf, 0xbe, 0x5f, 0x38, 0xf6,
0xdd, 0xf7, 0x0b, 0xc7, 0xde, 0x3f, 0x58, 0x30, 0xbe, 0x3c, 0x58, 0x30, 0xbe, 0x3a, 0x58, 0x30,
0xbe, 0x3b, 0x58, 0x30, 0xfe, 0xf5, 0x60, 0xc1, 0xf8, 0xd3, 0x1f, 0x16, 0x8e, 0xbd, 0x5e, 0x92,
0xaa, 0xfd, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x67, 0xd4, 0xee, 0xd2, 0x40, 0x00, 0x00,
var fileDescriptor_generated_bc7e074832f25bd9 = []byte{
// 3742 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x4d, 0x6f, 0x1c, 0xc9,
0x75, 0xea, 0xf9, 0x9e, 0xc7, 0x0f, 0x89, 0xe5, 0xd5, 0x7a, 0x4c, 0xd8, 0x24, 0xd1, 0x42, 0x6c,
0x39, 0x89, 0x87, 0x91, 0xb0, 0x4e, 0x64, 0x1b, 0x48, 0xc0, 0x21, 0xf5, 0x41, 0x91, 0xa2, 0xb8,
0x35, 0x94, 0x04, 0x6c, 0x1c, 0xc7, 0xad, 0x9e, 0x9a, 0x99, 0x16, 0x67, 0xba, 0x7b, 0xbb, 0x7b,
0x28, 0x8d, 0x92, 0xf5, 0x47, 0x02, 0x03, 0xf9, 0xd8, 0x35, 0x02, 0x04, 0x39, 0x05, 0xbe, 0xec,
0xd1, 0xc8, 0x25, 0x09, 0x90, 0x1f, 0x10, 0x20, 0xc9, 0x1e, 0x0d, 0xc3, 0x06, 0x8c, 0x24, 0x20,
0xb2, 0xf4, 0x21, 0x01, 0x72, 0xc8, 0x21, 0xc8, 0x45, 0x97, 0x04, 0xf5, 0x5d, 0x3d, 0x9c, 0x11,
0x47, 0x9a, 0x96, 0x8c, 0xd8, 0xb7, 0xe9, 0xf7, 0xaa, 0xde, 0x7b, 0xf5, 0xea, 0xd5, 0xfb, 0xaa,
0x1a, 0xd8, 0xee, 0x78, 0x49, 0x77, 0xf0, 0xb0, 0xee, 0x06, 0xfd, 0x75, 0x27, 0xea, 0x04, 0x61,
0x14, 0x3c, 0x62, 0x3f, 0xbe, 0xe0, 0xb6, 0xd6, 0xc3, 0xc3, 0xce, 0xba, 0x13, 0x7a, 0xf1, 0xba,
0x13, 0x86, 0x3d, 0xcf, 0x75, 0x12, 0x2f, 0xf0, 0xd7, 0x8f, 0xae, 0x38, 0xbd, 0xb0, 0xeb, 0x5c,
0x59, 0xef, 0x10, 0x9f, 0x44, 0x4e, 0x42, 0x5a, 0xf5, 0x30, 0x0a, 0x92, 0x00, 0x7d, 0x49, 0x93,
0xaa, 0x4b, 0x52, 0xec, 0xc7, 0xef, 0xba, 0xad, 0x7a, 0x78, 0xd8, 0xa9, 0x53, 0x52, 0x75, 0x83,
0x54, 0x5d, 0x92, 0x5a, 0xfe, 0x82, 0x21, 0x45, 0x27, 0xe8, 0x04, 0xeb, 0x8c, 0xe2, 0xc3, 0x41,
0x9b, 0x7d, 0xb1, 0x0f, 0xf6, 0x8b, 0x73, 0x5a, 0xb6, 0x0f, 0xaf, 0xc5, 0x75, 0x2f, 0xa0, 0xb2,
0xad, 0xbb, 0x41, 0x44, 0xd6, 0x8f, 0x4e, 0x49, 0xb3, 0xfc, 0x96, 0x1e, 0xd3, 0x77, 0xdc, 0xae,
0xe7, 0x93, 0x68, 0xa8, 0x17, 0xd4, 0x27, 0x89, 0x33, 0x6e, 0xd6, 0xfa, 0xa4, 0x59, 0xd1, 0xc0,
0x4f, 0xbc, 0x3e, 0x39, 0x35, 0xe1, 0xd7, 0xcf, 0x9a, 0x10, 0xbb, 0x5d, 0xd2, 0x77, 0x46, 0xe7,
0xd9, 0xef, 0xc2, 0xc2, 0xc6, 0x83, 0xe6, 0xc6, 0x20, 0xe9, 0x6e, 0x06, 0x7e, 0xdb, 0xeb, 0xa0,
0x2f, 0xc2, 0x9c, 0xdb, 0x1b, 0xc4, 0x09, 0x89, 0xf6, 0x9c, 0x3e, 0xa9, 0x59, 0x6b, 0xd6, 0xe5,
0x6a, 0xe3, 0x13, 0x1f, 0x1d, 0xaf, 0x9e, 0x3b, 0x39, 0x5e, 0x9d, 0xdb, 0xd4, 0x28, 0x6c, 0x8e,
0x43, 0x9f, 0x87, 0x72, 0x14, 0xf4, 0xc8, 0x06, 0xde, 0xab, 0xe5, 0xd8, 0x94, 0xf3, 0x62, 0x4a,
0x19, 0x73, 0x30, 0x96, 0x78, 0xfb, 0x5f, 0x2c, 0x80, 0x8d, 0x30, 0xdc, 0x8f, 0x82, 0x47, 0xc4,
0x4d, 0xd0, 0xd7, 0xa1, 0x42, 0xb5, 0xd0, 0x72, 0x12, 0x87, 0x71, 0x9b, 0xbb, 0xfa, 0x6b, 0x75,
0xbe, 0x98, 0xba, 0xb9, 0x18, 0xbd, 0x73, 0x74, 0x74, 0xfd, 0xe8, 0x4a, 0xfd, 0xee, 0x43, 0x3a,
0xff, 0x0e, 0x49, 0x9c, 0x06, 0x12, 0xcc, 0x40, 0xc3, 0xb0, 0xa2, 0x8a, 0x0e, 0xa1, 0x10, 0x87,
0xc4, 0x65, 0x82, 0xcd, 0x5d, 0xdd, 0xae, 0xbf, 0xb4, 0x7d, 0xd4, 0xb5, 0xd8, 0xcd, 0x90, 0xb8,
0x8d, 0x79, 0xc1, 0xb6, 0x40, 0xbf, 0x30, 0x63, 0x62, 0xff, 0xb3, 0x05, 0x8b, 0x7a, 0xd8, 0xae,
0x17, 0x27, 0xe8, 0xab, 0xa7, 0x56, 0x58, 0x9f, 0x6e, 0x85, 0x74, 0x36, 0x5b, 0xdf, 0x05, 0xc1,
0xa8, 0x22, 0x21, 0xc6, 0xea, 0x1e, 0x41, 0xd1, 0x4b, 0x48, 0x3f, 0xae, 0xe5, 0xd6, 0xf2, 0x97,
0xe7, 0xae, 0x5e, 0xcf, 0x64, 0x79, 0x8d, 0x05, 0xc1, 0xb1, 0xb8, 0x4d, 0x69, 0x63, 0xce, 0xc2,
0xfe, 0xcb, 0xa2, 0xb9, 0x38, 0xba, 0x6a, 0x74, 0x05, 0xe6, 0xe2, 0x60, 0x10, 0xb9, 0x04, 0x93,
0x30, 0x88, 0x6b, 0xd6, 0x5a, 0x9e, 0x6e, 0x3e, 0xb5, 0x95, 0xa6, 0x06, 0x63, 0x73, 0x0c, 0xfa,
0x53, 0x0b, 0xe6, 0x5b, 0x24, 0x4e, 0x3c, 0x9f, 0xf1, 0x97, 0x92, 0xbf, 0x3d, 0x9b, 0xe4, 0x12,
0xb8, 0xa5, 0x29, 0x37, 0xde, 0x10, 0xab, 0x98, 0x37, 0x80, 0x31, 0x4e, 0x31, 0xa7, 0x06, 0xdf,
0x22, 0xb1, 0x1b, 0x79, 0x21, 0xfd, 0xae, 0xe5, 0xd3, 0x06, 0xbf, 0xa5, 0x51, 0xd8, 0x1c, 0x87,
0x0e, 0xa1, 0x48, 0x0d, 0x3a, 0xae, 0x15, 0x98, 0xf0, 0x37, 0x66, 0x10, 0x5e, 0xa8, 0x93, 0x1e,
0x14, 0xad, 0x77, 0xfa, 0x15, 0x63, 0xce, 0x03, 0x7d, 0x60, 0x41, 0x4d, 0x9c, 0x36, 0x4c, 0xb8,
0x2a, 0x1f, 0x74, 0xbd, 0x84, 0xf4, 0xbc, 0x38, 0xa9, 0x15, 0x99, 0x00, 0xeb, 0xd3, 0x99, 0xd4,
0xcd, 0x28, 0x18, 0x84, 0x3b, 0x9e, 0xdf, 0x6a, 0xac, 0x09, 0x4e, 0xb5, 0xcd, 0x09, 0x84, 0xf1,
0x44, 0x96, 0xe8, 0xcf, 0x2d, 0x58, 0xf6, 0x9d, 0x3e, 0x89, 0x43, 0x87, 0x6e, 0x2a, 0x47, 0x37,
0x7a, 0x8e, 0x7b, 0xc8, 0x24, 0x2a, 0xbd, 0x9c, 0x44, 0xb6, 0x90, 0x68, 0x79, 0x6f, 0x22, 0x69,
0xfc, 0x1c, 0xb6, 0xf6, 0x3f, 0xe6, 0x61, 0xce, 0x30, 0x84, 0xd7, 0xe0, 0x59, 0x7a, 0x29, 0xcf,
0x72, 0x3b, 0x1b, 0x03, 0x9e, 0xe4, 0x5a, 0x50, 0x02, 0xa5, 0x38, 0x71, 0x92, 0x41, 0xcc, 0x8c,
0x74, 0xee, 0xea, 0x6e, 0x46, 0xfc, 0x18, 0xcd, 0xc6, 0xa2, 0xe0, 0x58, 0xe2, 0xdf, 0x58, 0xf0,
0x42, 0xef, 0x42, 0x35, 0x08, 0x69, 0xcc, 0xa0, 0xa7, 0xa3, 0xc0, 0x18, 0x6f, 0xcd, 0xc0, 0xf8,
0xae, 0xa4, 0xd5, 0x58, 0x38, 0x39, 0x5e, 0xad, 0xaa, 0x4f, 0xac, 0xb9, 0xd8, 0x2e, 0xbc, 0x61,
0xc8, 0xb7, 0x19, 0xf8, 0x2d, 0x8f, 0x6d, 0xe8, 0x1a, 0x14, 0x92, 0x61, 0x28, 0x83, 0x92, 0x52,
0xd1, 0xc1, 0x30, 0x24, 0x98, 0x61, 0x68, 0x18, 0xea, 0x93, 0x38, 0x76, 0x3a, 0x64, 0x34, 0x0c,
0xdd, 0xe1, 0x60, 0x2c, 0xf1, 0xf6, 0xbb, 0xf0, 0xe6, 0x78, 0xaf, 0x81, 0x3e, 0x0b, 0xa5, 0x98,
0x44, 0x47, 0x24, 0x12, 0x8c, 0xb4, 0x66, 0x18, 0x14, 0x0b, 0x2c, 0x5a, 0x87, 0xaa, 0xb2, 0x46,
0xc1, 0x6e, 0x49, 0x0c, 0xad, 0x6a, 0x13, 0xd6, 0x63, 0xec, 0x7f, 0xb5, 0xe0, 0xbc, 0xc1, 0xf3,
0x35, 0x04, 0x87, 0xc3, 0x74, 0x70, 0xb8, 0x91, 0x8d, 0xc5, 0x4c, 0x88, 0x0e, 0xdf, 0x2d, 0xc1,
0x92, 0x69, 0x57, 0xec, 0x78, 0xb2, 0xcc, 0x80, 0x84, 0xc1, 0x3d, 0xbc, 0x2b, 0xd4, 0xa9, 0x33,
0x03, 0x0e, 0xc6, 0x12, 0x4f, 0xf7, 0x37, 0x74, 0x92, 0xae, 0xd0, 0xa5, 0xda, 0xdf, 0x7d, 0x27,
0xe9, 0x62, 0x86, 0x41, 0xbf, 0x09, 0x8b, 0x89, 0x13, 0x75, 0x48, 0x82, 0xc9, 0x91, 0x17, 0x4b,
0x8b, 0xac, 0x36, 0xde, 0x14, 0x63, 0x17, 0x0f, 0x52, 0x58, 0x3c, 0x32, 0x1a, 0xf9, 0x50, 0xe8,
0x92, 0x5e, 0xbf, 0x56, 0x66, 0x9a, 0xde, 0xcf, 0xe8, 0x00, 0xb1, 0x85, 0xde, 0x22, 0xbd, 0x7e,
0xa3, 0x42, 0xe5, 0xa5, 0xbf, 0x30, 0xe3, 0x83, 0xfe, 0xc0, 0x82, 0xea, 0xe1, 0x20, 0x4e, 0x82,
0xbe, 0xf7, 0x94, 0xd4, 0x2a, 0x8c, 0xeb, 0xbd, 0x2c, 0xb9, 0xee, 0x48, 0xe2, 0xfc, 0x38, 0xa9,
0x4f, 0xac, 0xd9, 0xa2, 0xa7, 0x50, 0x3e, 0x8c, 0x03, 0xdf, 0x27, 0x49, 0xad, 0xca, 0x24, 0x68,
0x66, 0x2a, 0x01, 0x27, 0xdd, 0x98, 0xa3, 0x5b, 0x2a, 0x3e, 0xb0, 0x64, 0xc8, 0x14, 0xd0, 0xf2,
0x22, 0xe2, 0x26, 0x41, 0x34, 0xac, 0x41, 0xf6, 0x0a, 0xd8, 0x92, 0xc4, 0xb9, 0x02, 0xd4, 0x27,
0xd6, 0x6c, 0xd1, 0x11, 0x94, 0xc2, 0xde, 0xa0, 0xe3, 0xf9, 0xb5, 0x39, 0x26, 0x00, 0xce, 0x52,
0x80, 0x7d, 0x46, 0xb9, 0x01, 0xd4, 0x41, 0xf0, 0xdf, 0x58, 0x70, 0xb3, 0xff, 0xc9, 0x82, 0xe5,
0xc9, 0x02, 0xf3, 0x93, 0xe1, 0x0e, 0xa2, 0x98, 0x7b, 0xb4, 0x8a, 0x79, 0x32, 0x18, 0x18, 0x4b,
0x3c, 0xfa, 0x06, 0x94, 0x1f, 0x89, 0x2d, 0xcc, 0x65, 0xbf, 0x85, 0xb7, 0xc5, 0x16, 0x2a, 0xfe,
0xb7, 0xe5, 0x36, 0x0a, 0xa6, 0xf6, 0x3f, 0x58, 0x70, 0x71, 0xac, 0xc5, 0xa3, 0x3a, 0xc0, 0x91,
0xd3, 0x1b, 0x90, 0x1b, 0x1e, 0x4d, 0x86, 0x78, 0xfa, 0xb7, 0x48, 0x03, 0xe6, 0x7d, 0x05, 0xc5,
0xc6, 0x08, 0xf4, 0xfb, 0x00, 0xa1, 0x13, 0x39, 0x7d, 0x92, 0x90, 0x48, 0xba, 0xa5, 0x5b, 0x33,
0x2c, 0x86, 0x0a, 0xb1, 0x2f, 0x09, 0xea, 0x70, 0xad, 0x40, 0x31, 0x36, 0xf8, 0xd9, 0xff, 0x63,
0x41, 0x6d, 0xd2, 0xf2, 0x51, 0x08, 0x65, 0xf2, 0x24, 0xb9, 0xef, 0x44, 0x7c, 0x1d, 0xb3, 0xe5,
0xd2, 0x82, 0xe8, 0x7d, 0x27, 0xd2, 0x6a, 0xbd, 0xce, 0xa9, 0x63, 0xc9, 0x06, 0x75, 0xa0, 0x90,
0xf4, 0x9c, 0x2c, 0x52, 0x77, 0x83, 0x9d, 0x8e, 0x8b, 0xbb, 0x1b, 0x31, 0x66, 0x0c, 0xec, 0x1f,
0x8e, 0x5b, 0xb7, 0x38, 0xac, 0x34, 0x03, 0x26, 0xfe, 0x91, 0x17, 0x05, 0x7e, 0x9f, 0xf8, 0xc9,
0x68, 0xc9, 0x77, 0x5d, 0xa3, 0xb0, 0x39, 0x0e, 0x7d, 0x73, 0xcc, 0x4e, 0xee, 0xcc, 0xb0, 0x04,
0x21, 0xce, 0xf4, 0x9b, 0xf9, 0xdf, 0xe3, 0x8e, 0x97, 0xf2, 0x80, 0xe8, 0x2a, 0x00, 0x0d, 0xbd,
0xfb, 0x11, 0x69, 0x7b, 0x4f, 0xc4, 0xaa, 0x14, 0xc9, 0x3d, 0x85, 0xc1, 0xc6, 0x28, 0xf4, 0x1e,
0x54, 0xbd, 0xbe, 0xd3, 0x21, 0x07, 0x4e, 0x47, 0x2e, 0x69, 0x96, 0x2c, 0x4b, 0x09, 0xb3, 0x2d,
0x88, 0xea, 0x04, 0x41, 0x42, 0x62, 0xac, 0x39, 0x22, 0x1b, 0x4a, 0xec, 0x83, 0x66, 0x78, 0xf4,
0x20, 0x31, 0xa7, 0xc2, 0x46, 0xc6, 0x58, 0x60, 0xec, 0xaf, 0xc0, 0x27, 0x27, 0xf8, 0x20, 0x1a,
0x3f, 0x7d, 0x5d, 0xb4, 0x2b, 0x3b, 0x60, 0xd5, 0x3a, 0xc3, 0xd8, 0x3f, 0x2a, 0xa4, 0x32, 0x90,
0xa6, 0x4c, 0x2b, 0x19, 0x15, 0x91, 0x7f, 0xec, 0x66, 0xe9, 0x5a, 0x8c, 0xe4, 0x89, 0x57, 0x80,
0x82, 0x17, 0xfa, 0x23, 0x8b, 0xd5, 0x5d, 0x32, 0xe9, 0x12, 0x6e, 0xed, 0x15, 0xd4, 0x80, 0x66,
0x29, 0x27, 0x81, 0xd8, 0x64, 0x4d, 0xfd, 0x70, 0xc8, 0x4b, 0x30, 0x51, 0xfd, 0xa9, 0x03, 0x2b,
0x2b, 0x33, 0x89, 0x47, 0x03, 0x80, 0x78, 0xe8, 0xbb, 0xfb, 0x41, 0xcf, 0x73, 0x87, 0x22, 0x1b,
0x9e, 0xe5, 0xd8, 0x36, 0x15, 0x31, 0xee, 0x34, 0xf5, 0x37, 0x36, 0x18, 0xa1, 0xef, 0x59, 0xb0,
0xe4, 0x75, 0xfc, 0x20, 0x22, 0x5b, 0x5e, 0xbb, 0x4d, 0x22, 0xe2, 0xbb, 0x24, 0x16, 0x85, 0xdf,
0xc1, 0x0c, 0xec, 0x65, 0x0d, 0xb5, 0x3d, 0x4a, 0xbb, 0xf1, 0x29, 0xa1, 0x82, 0xa5, 0x53, 0x28,
0x7c, 0x5a, 0x12, 0xfb, 0xc7, 0x95, 0x74, 0xe6, 0xc7, 0x2b, 0x87, 0xa7, 0x50, 0x8d, 0x04, 0x03,
0xe9, 0x51, 0xb7, 0x33, 0x10, 0x56, 0xd4, 0x2b, 0xea, 0x24, 0x49, 0x78, 0x8c, 0x35, 0x3b, 0xea,
0x59, 0xa9, 0xfe, 0x84, 0x59, 0xcd, 0xba, 0x45, 0x82, 0xa5, 0x2e, 0xca, 0x86, 0x3e, 0x2d, 0xca,
0x86, 0xbe, 0x8b, 0x02, 0x28, 0x75, 0x89, 0xd3, 0x4b, 0xba, 0xa2, 0x28, 0xbb, 0x39, 0x53, 0x2c,
0xa3, 0x84, 0x46, 0xeb, 0x31, 0x0e, 0xc5, 0x82, 0x0d, 0x1a, 0x40, 0xb9, 0xeb, 0xc5, 0x2c, 0x9d,
0xe2, 0xad, 0x87, 0xdb, 0x33, 0xe9, 0x94, 0x27, 0xc6, 0xb7, 0x38, 0x45, 0x6d, 0xf9, 0x02, 0x80,
0x25, 0x2f, 0xf4, 0x87, 0x16, 0x80, 0x2b, 0x2b, 0x31, 0x69, 0x7b, 0x77, 0xb3, 0x39, 0xae, 0xaa,
0xc2, 0xd3, 0xfe, 0x59, 0x81, 0x62, 0x6c, 0xb0, 0x45, 0x2d, 0x98, 0x8f, 0x88, 0x1b, 0xf8, 0xae,
0xd7, 0x23, 0xad, 0x8d, 0xa4, 0x56, 0x62, 0x3a, 0xff, 0xe5, 0xe9, 0x2a, 0xa6, 0x03, 0xaf, 0x4f,
0x74, 0x4b, 0x08, 0x1b, 0x74, 0x70, 0x8a, 0x2a, 0xfa, 0x8e, 0x05, 0x8b, 0xaa, 0x1a, 0xa5, 0xdb,
0x41, 0x44, 0xc1, 0xb0, 0x9d, 0x45, 0xe1, 0xcb, 0x08, 0x36, 0x10, 0xad, 0x56, 0xd2, 0x30, 0x3c,
0xc2, 0x14, 0x7d, 0x0d, 0x20, 0x78, 0xc8, 0x8a, 0x4d, 0xba, 0xd6, 0xca, 0x0b, 0xaf, 0xd5, 0x68,
0x5e, 0x48, 0x2a, 0xd8, 0xa0, 0x88, 0x76, 0x00, 0xf8, 0x79, 0xa1, 0x15, 0x34, 0xab, 0x0d, 0xaa,
0x8d, 0x5f, 0x91, 0x73, 0x9a, 0x0a, 0xf3, 0xec, 0x78, 0xf5, 0x74, 0xf2, 0xc7, 0x8a, 0x6e, 0x63,
0x3a, 0xc2, 0x50, 0xf6, 0xfc, 0x4e, 0x44, 0xe2, 0xb8, 0x06, 0xcc, 0x38, 0x3e, 0x67, 0x48, 0x5a,
0x77, 0x83, 0x88, 0xb0, 0xaa, 0x35, 0x70, 0x5a, 0x0d, 0xa7, 0xe7, 0xf8, 0x2e, 0x89, 0xb6, 0xf9,
0x70, 0x6d, 0x74, 0x02, 0x80, 0x25, 0x21, 0xfb, 0x9b, 0xa9, 0x68, 0x75, 0x10, 0x11, 0x82, 0x7a,
0x50, 0xf4, 0x83, 0x96, 0x72, 0x28, 0x37, 0x33, 0x70, 0x28, 0x7b, 0x41, 0xcb, 0x68, 0xbc, 0xd1,
0xaf, 0x18, 0x73, 0x26, 0xf6, 0x4f, 0xd3, 0x79, 0xef, 0x03, 0x27, 0x71, 0xbb, 0xd7, 0x8f, 0x68,
0xf6, 0xb3, 0x93, 0xea, 0x45, 0xfc, 0x86, 0xd9, 0x8b, 0x78, 0x76, 0xbc, 0xfa, 0xb9, 0x49, 0xed,
0xf8, 0xc7, 0x94, 0x42, 0x9d, 0x91, 0x30, 0xda, 0x16, 0xef, 0xc1, 0x9c, 0x21, 0xa1, 0x70, 0x5a,
0x59, 0x15, 0xeb, 0x2a, 0x00, 0x1a, 0x40, 0x6c, 0xf2, 0xb3, 0x7f, 0x9c, 0x83, 0xb2, 0xe8, 0x02,
0x4e, 0xdd, 0xfc, 0x90, 0xb9, 0x46, 0x6e, 0x52, 0xae, 0x81, 0x42, 0x28, 0xb9, 0xec, 0x4e, 0x41,
0x78, 0xc6, 0x59, 0xb2, 0x7c, 0x21, 0x1d, 0xbf, 0xa3, 0xd0, 0x32, 0xf1, 0x6f, 0x2c, 0xf8, 0xa0,
0x0f, 0x2c, 0x38, 0xef, 0xd2, 0x24, 0xd2, 0xd5, 0x07, 0xb7, 0x30, 0x73, 0x6b, 0x6e, 0x33, 0x4d,
0xb1, 0xf1, 0x49, 0xc1, 0xfd, 0xfc, 0x08, 0x02, 0x8f, 0xf2, 0xb6, 0xff, 0x2e, 0x0f, 0x0b, 0x29,
0xc9, 0xd1, 0xaf, 0x42, 0x65, 0x10, 0x93, 0xc8, 0xc8, 0xd2, 0x54, 0xf7, 0xe6, 0x9e, 0x80, 0x63,
0x35, 0x82, 0x8e, 0x0e, 0x9d, 0x38, 0x7e, 0x1c, 0x44, 0x2d, 0xa1, 0x67, 0x35, 0x7a, 0x5f, 0xc0,
0xb1, 0x1a, 0x41, 0xd3, 0xf8, 0x87, 0xc4, 0x89, 0x48, 0x74, 0x10, 0x1c, 0x92, 0x53, 0x8d, 0xec,
0x86, 0x46, 0x61, 0x73, 0x1c, 0x53, 0x5a, 0xd2, 0x8b, 0x37, 0x7b, 0x1e, 0xf1, 0x13, 0x2e, 0x66,
0x06, 0x4a, 0x3b, 0xd8, 0x6d, 0x9a, 0x14, 0xb5, 0xd2, 0x46, 0x10, 0x78, 0x94, 0x37, 0xfa, 0xb6,
0x05, 0x0b, 0xce, 0xe3, 0x58, 0x5f, 0x49, 0xd5, 0x8a, 0x33, 0x9b, 0x4f, 0xea, 0x8a, 0xab, 0xb1,
0x74, 0x72, 0xbc, 0x9a, 0xbe, 0xf5, 0xc2, 0x69, 0x8e, 0xf6, 0x8f, 0x2c, 0x90, 0x57, 0x5d, 0xaf,
0xa1, 0x49, 0xd7, 0x49, 0x37, 0xe9, 0x1a, 0xb3, 0x9f, 0x93, 0x09, 0x0d, 0xba, 0x3d, 0x28, 0x6f,
0x06, 0xfd, 0xbe, 0xe3, 0xb7, 0xd0, 0x2f, 0x41, 0xd9, 0xe5, 0x3f, 0x45, 0xcd, 0xce, 0xda, 0x37,
0x02, 0x8b, 0x25, 0x0e, 0x7d, 0x1a, 0x0a, 0x4e, 0x24, 0x4a, 0xa1, 0x2a, 0xef, 0x6e, 0x6d, 0x44,
0x9d, 0x18, 0x33, 0xa8, 0xfd, 0x41, 0x0e, 0x60, 0x33, 0xe8, 0x87, 0x4e, 0x44, 0x5a, 0x07, 0xc1,
0x2f, 0x7c, 0x21, 0x61, 0xbf, 0x6f, 0x01, 0xa2, 0xfa, 0x08, 0x7c, 0xe2, 0xeb, 0x3a, 0x16, 0xad,
0x43, 0xd5, 0x95, 0x50, 0x71, 0xea, 0x55, 0xf2, 0xaa, 0x86, 0x63, 0x3d, 0x66, 0x0a, 0xdf, 0x7a,
0x09, 0x8a, 0xac, 0xa7, 0x22, 0x4e, 0xb9, 0xda, 0x6e, 0xd6, 0x74, 0xc1, 0x1c, 0x67, 0x7f, 0x37,
0x07, 0x6f, 0x72, 0x83, 0xbe, 0xe3, 0xf8, 0x4e, 0x87, 0xd0, 0xaa, 0x7d, 0xda, 0x4a, 0x11, 0x7d,
0x1d, 0x0a, 0x9e, 0xef, 0xc9, 0x76, 0xd3, 0x4c, 0x36, 0xc9, 0x6d, 0x89, 0x5b, 0xcf, 0xb6, 0xef,
0x25, 0x98, 0x51, 0x46, 0x21, 0x54, 0xe4, 0x6d, 0xb4, 0x88, 0x10, 0x59, 0x70, 0x51, 0x07, 0xed,
0xa6, 0xa0, 0x8d, 0x15, 0x17, 0xfb, 0xef, 0x2d, 0x18, 0x75, 0xda, 0x2c, 0xde, 0xf1, 0x4b, 0x95,
0xd1, 0x78, 0x97, 0xbe, 0x06, 0x99, 0xfe, 0x66, 0x01, 0x7d, 0x15, 0xe6, 0x9c, 0x24, 0x21, 0xfd,
0x30, 0x61, 0x79, 0x5b, 0xfe, 0x85, 0xf3, 0x36, 0x56, 0x0a, 0xde, 0x09, 0x5a, 0x5e, 0xdb, 0x63,
0x39, 0x9b, 0x49, 0xce, 0x76, 0x60, 0xde, 0xac, 0x13, 0x5e, 0xc1, 0x02, 0xec, 0xfb, 0xb0, 0x90,
0x6a, 0xab, 0x4d, 0x61, 0x2e, 0xca, 0x20, 0x73, 0xcf, 0x31, 0xc8, 0x0f, 0x73, 0xb0, 0xc8, 0x9a,
0xe3, 0x24, 0x0c, 0x62, 0x8f, 0x95, 0x15, 0x9f, 0x81, 0xfc, 0x20, 0xea, 0x09, 0xc2, 0x73, 0x62,
0x56, 0xfe, 0x1e, 0xde, 0xc5, 0x14, 0x3e, 0xc5, 0x49, 0xb0, 0xa1, 0xe4, 0x3a, 0x5b, 0xd4, 0x31,
0x53, 0x3d, 0xcf, 0xf3, 0x96, 0xc9, 0xe6, 0x06, 0x85, 0x60, 0x81, 0x41, 0x97, 0xa1, 0xe2, 0x92,
0x28, 0x61, 0xa3, 0x0a, 0x6c, 0xd4, 0x3c, 0xb5, 0x90, 0x4d, 0x01, 0xc3, 0x0a, 0x4b, 0xdd, 0xe2,
0x21, 0x19, 0xb2, 0x81, 0x45, 0x36, 0x90, 0x77, 0xb5, 0x39, 0x08, 0x4b, 0x5c, 0x2a, 0x8c, 0x97,
0x5e, 0x28, 0x8c, 0x97, 0xcf, 0x0a, 0xe3, 0xf6, 0xdb, 0x50, 0xd9, 0xf6, 0xdb, 0x01, 0x75, 0xdc,
0x59, 0xe9, 0xbd, 0x09, 0x95, 0xdb, 0x0f, 0x0e, 0x78, 0xb8, 0xb7, 0x21, 0xef, 0x39, 0xdc, 0x0d,
0xe5, 0xb5, 0x1c, 0xdb, 0x71, 0x3c, 0x60, 0xa6, 0x46, 0x91, 0xe8, 0x12, 0xe4, 0xc9, 0x93, 0x90,
0x91, 0xcc, 0x6b, 0x57, 0x75, 0xfd, 0x49, 0xe8, 0x45, 0x24, 0xa6, 0x83, 0xc8, 0x93, 0xd0, 0x1e,
0x00, 0xe8, 0xa6, 0x63, 0x46, 0x92, 0x52, 0x32, 0x6e, 0xd0, 0xe2, 0xfe, 0xa0, 0xa2, 0xc9, 0x6c,
0x06, 0x2d, 0x82, 0x19, 0xc6, 0xfe, 0x13, 0x0b, 0x2e, 0x8c, 0x76, 0x0a, 0x7f, 0x66, 0x1e, 0xf6,
0x1d, 0x58, 0x3a, 0xd5, 0xe2, 0xcb, 0x6a, 0xd3, 0x62, 0xd0, 0x97, 0xa3, 0xa8, 0x2d, 0xda, 0x19,
0xd6, 0xcc, 0xa9, 0x50, 0x73, 0xe8, 0xbb, 0xfa, 0x0e, 0xb6, 0x92, 0xee, 0x66, 0xd8, 0x1f, 0x16,
0x60, 0xa4, 0x28, 0x45, 0x03, 0xf3, 0xfe, 0xd7, 0xca, 0xf0, 0xfe, 0x57, 0xed, 0xd0, 0xb8, 0x3b,
0x60, 0xf4, 0x45, 0x28, 0x86, 0x5d, 0x27, 0x96, 0x3a, 0x5a, 0x95, 0x3a, 0xda, 0xa7, 0xc0, 0x67,
0x66, 0xed, 0xcc, 0x20, 0x98, 0x8f, 0x36, 0xbd, 0x5c, 0xfe, 0x0c, 0x37, 0xfd, 0x0d, 0xde, 0xcb,
0xc3, 0x24, 0x1e, 0xf4, 0x12, 0x91, 0xf2, 0xee, 0x65, 0xa5, 0x59, 0x4e, 0x55, 0x37, 0xf5, 0xf8,
0x37, 0x36, 0x38, 0xa2, 0xdf, 0x86, 0x6a, 0x9c, 0x38, 0x51, 0xf2, 0x92, 0x8d, 0x0c, 0xa5, 0xbe,
0xa6, 0x24, 0x82, 0x35, 0x3d, 0xf4, 0x0e, 0x40, 0xdb, 0xf3, 0xbd, 0xb8, 0xcb, 0xa8, 0x97, 0x5f,
0x2e, 0x04, 0xdd, 0x50, 0x14, 0xb0, 0x41, 0xcd, 0xfe, 0x7e, 0x0e, 0xe6, 0x8c, 0x37, 0x2b, 0x53,
0x18, 0xfc, 0xc8, 0x1b, 0x9b, 0xdc, 0x94, 0x6f, 0x6c, 0x2e, 0x43, 0x25, 0x0c, 0x7a, 0x9e, 0xeb,
0xa9, 0x86, 0x38, 0xf3, 0xdb, 0xfb, 0x02, 0x86, 0x15, 0x16, 0x25, 0x50, 0x7d, 0xf4, 0x38, 0x61,
0x1e, 0x4e, 0xbe, 0xc8, 0xd9, 0x9c, 0xe5, 0x36, 0x45, 0x78, 0x4b, 0xad, 0x64, 0x09, 0x89, 0xb1,
0x66, 0x44, 0x63, 0x4f, 0x27, 0x0a, 0x06, 0x21, 0x6f, 0x87, 0x89, 0x76, 0x3d, 0x7b, 0xcf, 0x12,
0x63, 0x81, 0xb1, 0xff, 0x2a, 0x0f, 0x60, 0xc4, 0xbb, 0x35, 0x28, 0x44, 0x24, 0x0c, 0x46, 0x75,
0x45, 0x47, 0x60, 0x86, 0x49, 0xc5, 0x96, 0xdc, 0x0b, 0xc5, 0x96, 0xfc, 0x99, 0x25, 0xe2, 0x57,
0x60, 0x21, 0x8e, 0xbb, 0xfb, 0x91, 0x77, 0xe4, 0x24, 0x64, 0x87, 0x0c, 0xc5, 0xed, 0xf9, 0x45,
0x31, 0x65, 0xa1, 0xd9, 0xbc, 0xa5, 0x91, 0x38, 0x3d, 0x76, 0x6c, 0x75, 0x5d, 0xfc, 0xd9, 0x55,
0xd7, 0xa8, 0x09, 0x17, 0x3d, 0x3f, 0x26, 0xee, 0x20, 0x12, 0xfd, 0xeb, 0x5b, 0x41, 0x9c, 0xd0,
0x45, 0x95, 0x58, 0xf0, 0xf8, 0x8c, 0x20, 0x74, 0x71, 0x7b, 0xdc, 0x20, 0x3c, 0x7e, 0x2e, 0x7b,
0xbe, 0xa7, 0xb7, 0xeb, 0xff, 0xd7, 0xf3, 0x3d, 0x2d, 0xf7, 0x84, 0xfa, 0xef, 0x6f, 0x72, 0x30,
0x2f, 0x9b, 0x5e, 0x5b, 0x5e, 0xbb, 0x4d, 0x03, 0x11, 0x33, 0x53, 0x61, 0x8e, 0x6a, 0x16, 0xb3,
0x61, 0xcc, 0x71, 0xd4, 0x64, 0x0f, 0x3d, 0xbf, 0x35, 0x1a, 0x2b, 0x77, 0x3c, 0xbf, 0x85, 0x19,
0x26, 0xfd, 0x10, 0x26, 0x7f, 0xf6, 0x43, 0x18, 0xe5, 0x31, 0x0a, 0xcf, 0xf3, 0x18, 0xfc, 0xe9,
0x86, 0xb6, 0x33, 0xc3, 0x63, 0x1c, 0x68, 0x14, 0x36, 0xc7, 0x51, 0x49, 0x7a, 0xde, 0x11, 0xe1,
0x93, 0x4a, 0x69, 0x49, 0x76, 0x25, 0x02, 0xeb, 0x31, 0x54, 0x92, 0x96, 0xd7, 0x6e, 0x8b, 0xbc,
0x4c, 0x49, 0x42, 0xb5, 0x83, 0x19, 0xc6, 0xfe, 0x4f, 0x0b, 0x3e, 0x35, 0xf1, 0x9e, 0x24, 0x2b,
0x0d, 0x4a, 0x85, 0xe4, 0x27, 0x2a, 0x24, 0xa5, 0xe3, 0xc2, 0x14, 0x3a, 0x7e, 0x0b, 0xe6, 0x1f,
0xc5, 0x81, 0xbf, 0x1f, 0x78, 0x3e, 0xbb, 0xa0, 0xe5, 0x2e, 0xea, 0xc2, 0xc9, 0xf1, 0xea, 0xfc,
0xed, 0xe6, 0xdd, 0x3d, 0x09, 0xc7, 0xa9, 0x51, 0xf6, 0xfb, 0x45, 0x78, 0x53, 0xf5, 0x45, 0x49,
0xf2, 0x38, 0x88, 0x0e, 0x3d, 0xbf, 0x43, 0x13, 0x52, 0xf4, 0x3d, 0x0b, 0xe6, 0xb9, 0xae, 0x77,
0x9d, 0x87, 0xa4, 0x27, 0x3b, 0xb0, 0x6e, 0x16, 0x1d, 0xd8, 0x14, 0xa7, 0xfa, 0x81, 0xc1, 0xe5,
0xba, 0x9f, 0x44, 0x43, 0xdd, 0xb5, 0x37, 0x51, 0x38, 0x25, 0x0e, 0x7a, 0x0a, 0x20, 0x5f, 0xfb,
0xb4, 0xb3, 0x78, 0xf0, 0x24, 0x85, 0xc3, 0xa4, 0xad, 0x3b, 0xe9, 0x07, 0x8a, 0x03, 0x36, 0xb8,
0xa1, 0xef, 0x58, 0x50, 0xea, 0x71, 0xad, 0xe4, 0x19, 0xe3, 0xdf, 0xc9, 0x5e, 0x2b, 0xa6, 0x3e,
0x54, 0x91, 0x27, 0x34, 0x21, 0x98, 0x9b, 0x4d, 0xf8, 0x42, 0x46, 0x4d, 0xf8, 0xe5, 0xdf, 0x82,
0xa5, 0x53, 0x1b, 0x82, 0x2e, 0x40, 0xfe, 0x90, 0x0c, 0xb9, 0xd5, 0x63, 0xfa, 0x13, 0xbd, 0x91,
0x4a, 0x6a, 0x45, 0x16, 0xfb, 0xe5, 0xdc, 0x35, 0x6b, 0xf9, 0x4b, 0x30, 0xf7, 0x92, 0x53, 0xed,
0x7f, 0x2f, 0x68, 0x8f, 0xb5, 0x17, 0xb4, 0x58, 0xa7, 0x3c, 0xd2, 0xfb, 0x22, 0xfc, 0x71, 0x56,
0xbb, 0xac, 0xfc, 0x8b, 0x01, 0xc4, 0x26, 0x3f, 0x6a, 0x63, 0xa1, 0x13, 0xd1, 0x62, 0xe2, 0x15,
0xda, 0xd8, 0xbe, 0xe2, 0x80, 0x0d, 0x6e, 0x88, 0x40, 0xc1, 0xf3, 0xdb, 0x81, 0x30, 0xb0, 0x59,
0xd2, 0x1b, 0x59, 0x5f, 0x6a, 0x47, 0x43, 0x21, 0x98, 0x91, 0xa7, 0x61, 0x7e, 0xd1, 0x4f, 0x59,
0x9e, 0xc8, 0x8d, 0xdf, 0xce, 0xdc, 0xa4, 0xf9, 0x25, 0x58, 0x1a, 0x86, 0x47, 0x98, 0xa3, 0x0d,
0x38, 0x2f, 0x77, 0xe0, 0x3e, 0x89, 0xd8, 0x9b, 0x3f, 0x1e, 0x0d, 0x54, 0xa6, 0x80, 0xd3, 0x68,
0x3c, 0x3a, 0xde, 0x78, 0x56, 0x51, 0x9a, 0xf8, 0xac, 0xe2, 0x7d, 0x0b, 0x2e, 0x48, 0x42, 0x77,
0x8f, 0x48, 0x14, 0x79, 0x2d, 0xe6, 0x74, 0xf9, 0xad, 0xeb, 0xee, 0xc0, 0x19, 0xad, 0x2b, 0x6f,
0x49, 0x04, 0xd6, 0x63, 0xd0, 0xcd, 0x71, 0xf7, 0xf4, 0xdc, 0xed, 0xbf, 0xd8, 0x8d, 0xfa, 0x0f,
0x2d, 0x30, 0xad, 0x70, 0xba, 0x38, 0xf3, 0x79, 0x28, 0x1f, 0x09, 0x15, 0x8d, 0xb4, 0x78, 0xa4,
0x6a, 0x24, 0x5e, 0x85, 0xa4, 0xfc, 0x74, 0x41, 0xbd, 0xf0, 0x02, 0x41, 0xbd, 0x38, 0xf1, 0xf5,
0xc9, 0xdf, 0xe6, 0x69, 0x72, 0x25, 0x17, 0xc5, 0x8a, 0xa0, 0x9f, 0x87, 0x75, 0xa1, 0xb7, 0x54,
0x0b, 0x8e, 0xa7, 0x1c, 0x9f, 0x4e, 0xb7, 0xe0, 0x9e, 0x1d, 0xaf, 0x02, 0x5f, 0x2e, 0xeb, 0x63,
0x8c, 0x69, 0xc8, 0x95, 0xcf, 0x28, 0x55, 0xaf, 0x41, 0xa5, 0x1b, 0x04, 0x87, 0xec, 0x9a, 0xb6,
0x92, 0x62, 0x51, 0xb9, 0x25, 0xe0, 0xcf, 0x8c, 0xdf, 0x58, 0x8d, 0x46, 0x1b, 0x50, 0xa5, 0xbf,
0x59, 0x8d, 0x2c, 0x6e, 0x78, 0x2f, 0x29, 0x0b, 0x96, 0x88, 0x31, 0xe5, 0xb4, 0x9e, 0x65, 0x7f,
0x68, 0xec, 0x9a, 0xe8, 0x39, 0xfe, 0x5c, 0xec, 0xda, 0xb5, 0x91, 0x5d, 0x5b, 0x3b, 0xb5, 0x6b,
0x8b, 0xfa, 0xed, 0x47, 0x6a, 0xe7, 0xf4, 0x9b, 0x8f, 0xf2, 0xeb, 0x79, 0xf3, 0xb1, 0x06, 0x05,
0xba, 0x1f, 0x6c, 0xef, 0x8d, 0xb6, 0x18, 0xdd, 0x40, 0xcc, 0x30, 0xf6, 0x5f, 0xe7, 0xe0, 0xfc,
0xc8, 0x63, 0x0e, 0x5a, 0x1b, 0x46, 0xf2, 0x99, 0xf4, 0x48, 0x25, 0xa9, 0x1e, 0x48, 0xab, 0x11,
0xe8, 0x6b, 0x00, 0x2d, 0x12, 0xf6, 0x82, 0x21, 0xeb, 0x18, 0x14, 0x5e, 0xfe, 0xb1, 0xc1, 0x96,
0xa2, 0x82, 0x0d, 0x8a, 0x68, 0x19, 0x72, 0x5e, 0x8b, 0x6d, 0x47, 0xbe, 0x01, 0x62, 0x6c, 0x6e,
0x7b, 0x0b, 0xe7, 0xbc, 0x96, 0x71, 0x73, 0x54, 0x7a, 0x7d, 0x37, 0x47, 0xf6, 0xff, 0xe6, 0x61,
0x21, 0xd5, 0xb4, 0x49, 0x69, 0xcc, 0x3a, 0x53, 0x63, 0x97, 0xa0, 0x18, 0x46, 0x03, 0x9f, 0xa7,
0x2d, 0x15, 0x7d, 0x0a, 0xf6, 0x29, 0x10, 0x73, 0x1c, 0xfa, 0x2c, 0x94, 0x5a, 0xd1, 0x10, 0x0f,
0x7c, 0xd1, 0xd3, 0x54, 0xc2, 0x6c, 0x31, 0x28, 0x16, 0x58, 0xf4, 0x1e, 0xcc, 0xc7, 0xcc, 0xda,
0x22, 0x27, 0x21, 0x1d, 0xf9, 0xb6, 0xec, 0xe6, 0xcc, 0x0f, 0x97, 0x38, 0x39, 0x9e, 0xf7, 0x9b,
0x10, 0x9c, 0x62, 0x87, 0xbe, 0x6d, 0x99, 0x8f, 0xb5, 0xf8, 0x1f, 0x78, 0xf6, 0x33, 0x6c, 0x86,
0xf1, 0x9d, 0x78, 0xfe, 0x9b, 0xad, 0x50, 0x59, 0x41, 0xf9, 0x15, 0x58, 0x01, 0x8c, 0xb1, 0x80,
0x6f, 0x59, 0x70, 0x71, 0xac, 0xa4, 0xaf, 0xad, 0xae, 0xa3, 0x07, 0xf7, 0x13, 0x63, 0x3a, 0x87,
0xe8, 0xe8, 0xd5, 0x3c, 0x9e, 0x13, 0x7d, 0xc9, 0x85, 0x89, 0x9b, 0xf0, 0x62, 0x4e, 0x43, 0x1f,
0xdc, 0xfc, 0x6b, 0x3c, 0xb8, 0x7f, 0x6c, 0x81, 0xf1, 0x52, 0x12, 0xfd, 0x1e, 0x54, 0x9d, 0x41,
0x12, 0xf4, 0x9d, 0x84, 0xb4, 0x44, 0x45, 0xb0, 0x97, 0xc9, 0x9b, 0xcc, 0x0d, 0x49, 0x95, 0xeb,
0x4b, 0x7d, 0x62, 0xcd, 0xcf, 0xfe, 0x32, 0xdf, 0xbe, 0x91, 0x09, 0xda, 0x37, 0x58, 0x93, 0x7d,
0x83, 0xfd, 0x5f, 0x62, 0x1d, 0x22, 0xaa, 0x5e, 0x1b, 0xb9, 0xc9, 0x9b, 0x3e, 0x20, 0x0d, 0x01,
0x5c, 0x75, 0x0f, 0x9f, 0xc1, 0x9b, 0x47, 0x7d, 0xa9, 0x6f, 0xbe, 0xc8, 0x93, 0x30, 0x6c, 0x30,
0x4b, 0xd9, 0x4b, 0xfe, 0x2c, 0x7b, 0xb1, 0xff, 0xc3, 0x82, 0x94, 0x17, 0x42, 0x7d, 0x28, 0x52,
0x09, 0x86, 0x19, 0x3c, 0x19, 0x30, 0xe9, 0x52, 0x5b, 0x1a, 0x36, 0xaa, 0x54, 0xe3, 0xec, 0x27,
0xe6, 0x5c, 0x90, 0x27, 0x02, 0x29, 0x57, 0xd1, 0x4e, 0x46, 0xdc, 0x68, 0x1c, 0x16, 0x7f, 0xfd,
0xd1, 0x11, 0xf9, 0x1a, 0x2c, 0x9d, 0x92, 0x88, 0x9a, 0x45, 0x3b, 0x90, 0x2f, 0x24, 0x0c, 0xb3,
0xb8, 0x41, 0x81, 0x98, 0xe3, 0xec, 0xef, 0x5b, 0x70, 0x61, 0x94, 0x3c, 0xfa, 0x0b, 0x0b, 0x96,
0xe2, 0x51, 0x7a, 0xaf, 0x44, 0x6b, 0xaa, 0x50, 0x39, 0x85, 0xc2, 0xa7, 0x25, 0xa0, 0x3b, 0x3a,
0xfa, 0xa6, 0x87, 0xda, 0x84, 0xec, 0xae, 0x8a, 0x85, 0xea, 0x8b, 0x46, 0x01, 0xc7, 0x6a, 0x04,
0xba, 0x0a, 0xc0, 0xdf, 0x94, 0xed, 0xe9, 0x96, 0xb7, 0xb2, 0xba, 0xa6, 0xc2, 0x60, 0x63, 0x54,
0xea, 0x46, 0x37, 0x3f, 0xed, 0x8d, 0x6e, 0xe1, 0x39, 0x37, 0xba, 0xfa, 0x1a, 0xb9, 0x38, 0xe9,
0x1a, 0xb9, 0x51, 0xff, 0xe8, 0xe3, 0x95, 0x73, 0x3f, 0xf8, 0x78, 0xe5, 0xdc, 0x4f, 0x3e, 0x5e,
0x39, 0xf7, 0xad, 0x93, 0x15, 0xeb, 0xa3, 0x93, 0x15, 0xeb, 0x07, 0x27, 0x2b, 0xd6, 0x4f, 0x4e,
0x56, 0xac, 0x7f, 0x3b, 0x59, 0xb1, 0xfe, 0xec, 0xa7, 0x2b, 0xe7, 0xde, 0xa9, 0x48, 0xd5, 0xfe,
0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x96, 0xeb, 0x09, 0xd4, 0x40, 0x00, 0x00,
}

View file

@ -500,7 +500,7 @@ message ResourceIgnoreDifferences {
message ResourceNetworkingInfo {
map<string, string> targetLabels = 1;
repeated ResourceRef targetRef = 2;
repeated ResourceRef targetRefs = 2;
map<string, string> labels = 3;
@ -679,6 +679,7 @@ message SyncStrategyApply {
// If no hook annotation is specified falls back to `kubectl apply`.
message SyncStrategyHook {
// Embed SyncStrategyApply type to inherit any `apply` options
// +optional
optional SyncStrategyApply syncStrategyApply = 1;
}

File diff suppressed because it is too large Load diff

View file

@ -299,7 +299,7 @@ type OperationState struct {
// StartedAt contains time of operation start
StartedAt metav1.Time `json:"startedAt" protobuf:"bytes,6,opt,name=startedAt"`
// FinishedAt contains time of operation completion
FinishedAt *metav1.Time `json:"finishedAt" protobuf:"bytes,7,opt,name=finishedAt"`
FinishedAt *metav1.Time `json:"finishedAt,omitempty" protobuf:"bytes,7,opt,name=finishedAt"`
}
// SyncPolicy controls when a sync will be performed in response to updates in git
@ -334,6 +334,7 @@ type SyncStrategyApply struct {
// If no hook annotation is specified falls back to `kubectl apply`.
type SyncStrategyHook struct {
// Embed SyncStrategyApply type to inherit any `apply` options
// +optional
SyncStrategyApply `protobuf:"bytes,1,opt,name=syncStrategyApply"`
}
@ -522,7 +523,7 @@ type InfoItem struct {
// ResourceNetworkingInfo holds networking resource related information
type ResourceNetworkingInfo struct {
TargetLabels map[string]string `json:"targetLabels,omitempty" protobuf:"bytes,1,opt,name=targetLabels"`
TargetRefs []ResourceRef `json:"targetRef,omitempty" protobuf:"bytes,2,opt,name=targetRef"`
TargetRefs []ResourceRef `json:"targetRefs,omitempty" protobuf:"bytes,2,opt,name=targetRefs"`
Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,3,opt,name=labels"`
Ingress []v1.LoadBalancerIngress `json:"ingress,omitempty" protobuf:"bytes,4,opt,name=ingress"`
}
@ -745,9 +746,9 @@ type AppProject struct {
// AppProjectSpec is the specification of an AppProject
type AppProjectSpec struct {
// SourceRepos contains list of git repository URLs which can be used for deployment
SourceRepos []string `json:"sourceRepos" protobuf:"bytes,1,name=sourceRepos"`
SourceRepos []string `json:"sourceRepos,omitempty" protobuf:"bytes,1,name=sourceRepos"`
// Destinations contains list of destinations available for deployment
Destinations []ApplicationDestination `json:"destinations" protobuf:"bytes,2,name=destination"`
Destinations []ApplicationDestination `json:"destinations,omitempty" protobuf:"bytes,2,name=destination"`
// Description contains optional project description
Description string `json:"description,omitempty" protobuf:"bytes,3,opt,name=description"`
// Roles are user defined RBAC roles associated with this project
@ -763,9 +764,9 @@ type ProjectRole struct {
// Name is a name for this role
Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
// Description is a description of the role
Description string `json:"description" protobuf:"bytes,2,opt,name=description"`
Description string `json:"description,omitempty" protobuf:"bytes,2,opt,name=description"`
// Policies Stores a list of casbin formated strings that define access policies for the role in the project
Policies []string `json:"policies" protobuf:"bytes,3,rep,name=policies"`
Policies []string `json:"policies,omitempty" protobuf:"bytes,3,rep,name=policies"`
// JWTTokens are a list of generated JWT tokens bound to this role
JWTTokens []JWTToken `json:"jwtTokens,omitempty" protobuf:"bytes,4,rep,name=jwtTokens"`
// Groups are a list of OIDC group claims bound to this role
@ -774,21 +775,21 @@ type ProjectRole struct {
// JWTToken holds the issuedAt and expiresAt values of a token
type JWTToken struct {
IssuedAt int64 `json:"iat,omitempty" protobuf:"int64,1,opt,name=iat"`
IssuedAt int64 `json:"iat" protobuf:"int64,1,opt,name=iat"`
ExpiresAt int64 `json:"exp,omitempty" protobuf:"int64,2,opt,name=exp"`
}
// Command holds binary path and arguments list
type Command struct {
Command []string `json:"command,omitempty" yaml:"command,omitempty" protobuf:"bytes,1,name=command"`
Args []string `json:"args,omitempty" yaml:"args,omitempty" protobuf:"bytes,2,rep,name=args"`
Command []string `json:"command,omitempty" protobuf:"bytes,1,name=command"`
Args []string `json:"args,omitempty" protobuf:"bytes,2,rep,name=args"`
}
// ConfigManagementPlugin contains config management plugin configuration
type ConfigManagementPlugin struct {
Name string `json:"name,omitempty" yaml:"name,omitempty" protobuf:"bytes,1,name=name"`
Init *Command `json:"init,omitempty" yaml:"init,omitempty" protobuf:"bytes,2,name=init"`
Generate Command `json:"generate,omitempty" yaml:"generate,omitempty" protobuf:"bytes,3,name=generate"`
Name string `json:"name" protobuf:"bytes,1,name=name"`
Init *Command `json:"init,omitempty" protobuf:"bytes,2,name=init"`
Generate Command `json:"generate" protobuf:"bytes,3,name=generate"`
}
// ProjectPoliciesString returns Casbin formated string of a project's policies for each role

View file

@ -1,11 +1,11 @@
// +build !ignore_autogenerated
// This file was autogenerated by deepcopy-gen. Do not edit it manually!
// Code generated by deepcopy-gen. DO NOT EDIT.
package v1alpha1
import (
core_v1 "k8s.io/api/core/v1"
corev1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime"
)
@ -138,12 +138,8 @@ func (in *Application) DeepCopyInto(out *Application) {
in.Status.DeepCopyInto(&out.Status)
if in.Operation != nil {
in, out := &in.Operation, &out.Operation
if *in == nil {
*out = nil
} else {
*out = new(Operation)
(*in).DeepCopyInto(*out)
}
*out = new(Operation)
(*in).DeepCopyInto(*out)
}
return
}
@ -236,48 +232,28 @@ func (in *ApplicationSource) DeepCopyInto(out *ApplicationSource) {
*out = *in
if in.Helm != nil {
in, out := &in.Helm, &out.Helm
if *in == nil {
*out = nil
} else {
*out = new(ApplicationSourceHelm)
(*in).DeepCopyInto(*out)
}
*out = new(ApplicationSourceHelm)
(*in).DeepCopyInto(*out)
}
if in.Kustomize != nil {
in, out := &in.Kustomize, &out.Kustomize
if *in == nil {
*out = nil
} else {
*out = new(ApplicationSourceKustomize)
(*in).DeepCopyInto(*out)
}
*out = new(ApplicationSourceKustomize)
(*in).DeepCopyInto(*out)
}
if in.Ksonnet != nil {
in, out := &in.Ksonnet, &out.Ksonnet
if *in == nil {
*out = nil
} else {
*out = new(ApplicationSourceKsonnet)
(*in).DeepCopyInto(*out)
}
*out = new(ApplicationSourceKsonnet)
(*in).DeepCopyInto(*out)
}
if in.Directory != nil {
in, out := &in.Directory, &out.Directory
if *in == nil {
*out = nil
} else {
*out = new(ApplicationSourceDirectory)
(*in).DeepCopyInto(*out)
}
*out = new(ApplicationSourceDirectory)
(*in).DeepCopyInto(*out)
}
if in.Plugin != nil {
in, out := &in.Plugin, &out.Plugin
if *in == nil {
*out = nil
} else {
*out = new(ApplicationSourcePlugin)
**out = **in
}
*out = new(ApplicationSourcePlugin)
**out = **in
}
return
}
@ -431,12 +407,8 @@ func (in *ApplicationSpec) DeepCopyInto(out *ApplicationSpec) {
out.Destination = in.Destination
if in.SyncPolicy != nil {
in, out := &in.SyncPolicy, &out.SyncPolicy
if *in == nil {
*out = nil
} else {
*out = new(SyncPolicy)
(*in).DeepCopyInto(*out)
}
*out = new(SyncPolicy)
(*in).DeepCopyInto(*out)
}
if in.IgnoreDifferences != nil {
in, out := &in.IgnoreDifferences, &out.IgnoreDifferences
@ -483,17 +455,13 @@ func (in *ApplicationStatus) DeepCopyInto(out *ApplicationStatus) {
in.ReconciledAt.DeepCopyInto(&out.ReconciledAt)
if in.OperationState != nil {
in, out := &in.OperationState, &out.OperationState
if *in == nil {
*out = nil
} else {
*out = new(OperationState)
(*in).DeepCopyInto(*out)
}
*out = new(OperationState)
(*in).DeepCopyInto(*out)
}
in.ObservedAt.DeepCopyInto(&out.ObservedAt)
if in.Ingress != nil {
in, out := &in.Ingress, &out.Ingress
*out = make([]core_v1.LoadBalancerIngress, len(*in))
*out = make([]corev1.LoadBalancerIngress, len(*in))
copy(*out, *in)
}
return
@ -573,12 +541,8 @@ func (in *ClusterConfig) DeepCopyInto(out *ClusterConfig) {
in.TLSClientConfig.DeepCopyInto(&out.TLSClientConfig)
if in.AWSAuthConfig != nil {
in, out := &in.AWSAuthConfig, &out.AWSAuthConfig
if *in == nil {
*out = nil
} else {
*out = new(AWSAuthConfig)
**out = **in
}
*out = new(AWSAuthConfig)
**out = **in
}
return
}
@ -682,12 +646,8 @@ func (in *ConfigManagementPlugin) DeepCopyInto(out *ConfigManagementPlugin) {
*out = *in
if in.Init != nil {
in, out := &in.Init, &out.Init
if *in == nil {
*out = nil
} else {
*out = new(Command)
(*in).DeepCopyInto(*out)
}
*out = new(Command)
(*in).DeepCopyInto(*out)
}
in.Generate.DeepCopyInto(&out.Generate)
return
@ -708,12 +668,7 @@ func (in *ConnectionState) DeepCopyInto(out *ConnectionState) {
*out = *in
if in.ModifiedAt != nil {
in, out := &in.ModifiedAt, &out.ModifiedAt
if *in == nil {
*out = nil
} else {
*out = new(v1.Time)
(*in).DeepCopyInto(*out)
}
*out = (*in).DeepCopy()
}
return
}
@ -876,12 +831,8 @@ func (in *Operation) DeepCopyInto(out *Operation) {
*out = *in
if in.Sync != nil {
in, out := &in.Sync, &out.Sync
if *in == nil {
*out = nil
} else {
*out = new(SyncOperation)
(*in).DeepCopyInto(*out)
}
*out = new(SyncOperation)
(*in).DeepCopyInto(*out)
}
return
}
@ -902,22 +853,13 @@ func (in *OperationState) DeepCopyInto(out *OperationState) {
in.Operation.DeepCopyInto(&out.Operation)
if in.SyncResult != nil {
in, out := &in.SyncResult, &out.SyncResult
if *in == nil {
*out = nil
} else {
*out = new(SyncOperationResult)
(*in).DeepCopyInto(*out)
}
*out = new(SyncOperationResult)
(*in).DeepCopyInto(*out)
}
in.StartedAt.DeepCopyInto(&out.StartedAt)
if in.FinishedAt != nil {
in, out := &in.FinishedAt, &out.FinishedAt
if *in == nil {
*out = nil
} else {
*out = new(v1.Time)
(*in).DeepCopyInto(*out)
}
*out = (*in).DeepCopy()
}
return
}
@ -1065,7 +1007,7 @@ func (in *ResourceNetworkingInfo) DeepCopyInto(out *ResourceNetworkingInfo) {
}
if in.Ingress != nil {
in, out := &in.Ingress, &out.Ingress
*out = make([]core_v1.LoadBalancerIngress, len(*in))
*out = make([]corev1.LoadBalancerIngress, len(*in))
copy(*out, *in)
}
return
@ -1097,12 +1039,8 @@ func (in *ResourceNode) DeepCopyInto(out *ResourceNode) {
}
if in.NetworkingInfo != nil {
in, out := &in.NetworkingInfo, &out.NetworkingInfo
if *in == nil {
*out = nil
} else {
*out = new(ResourceNetworkingInfo)
(*in).DeepCopyInto(*out)
}
*out = new(ResourceNetworkingInfo)
(*in).DeepCopyInto(*out)
}
if in.Images != nil {
in, out := &in.Images, &out.Images
@ -1210,12 +1148,8 @@ func (in *SyncOperation) DeepCopyInto(out *SyncOperation) {
*out = *in
if in.SyncStrategy != nil {
in, out := &in.SyncStrategy, &out.SyncStrategy
if *in == nil {
*out = nil
} else {
*out = new(SyncStrategy)
(*in).DeepCopyInto(*out)
}
*out = new(SyncStrategy)
(*in).DeepCopyInto(*out)
}
if in.Resources != nil {
in, out := &in.Resources, &out.Resources
@ -1224,12 +1158,8 @@ func (in *SyncOperation) DeepCopyInto(out *SyncOperation) {
}
if in.Source != nil {
in, out := &in.Source, &out.Source
if *in == nil {
*out = nil
} else {
*out = new(ApplicationSource)
(*in).DeepCopyInto(*out)
}
*out = new(ApplicationSource)
(*in).DeepCopyInto(*out)
}
return
}
@ -1267,11 +1197,10 @@ func (in *SyncOperationResult) DeepCopyInto(out *SyncOperationResult) {
in, out := &in.Resources, &out.Resources
*out = make([]*ResourceResult, len(*in))
for i := range *in {
if (*in)[i] == nil {
(*out)[i] = nil
} else {
(*out)[i] = new(ResourceResult)
(*in)[i].DeepCopyInto((*out)[i])
if (*in)[i] != nil {
in, out := &(*in)[i], &(*out)[i]
*out = new(ResourceResult)
**out = **in
}
}
}
@ -1294,12 +1223,8 @@ func (in *SyncPolicy) DeepCopyInto(out *SyncPolicy) {
*out = *in
if in.Automated != nil {
in, out := &in.Automated, &out.Automated
if *in == nil {
*out = nil
} else {
*out = new(SyncPolicyAutomated)
**out = **in
}
*out = new(SyncPolicyAutomated)
**out = **in
}
return
}
@ -1352,21 +1277,13 @@ func (in *SyncStrategy) DeepCopyInto(out *SyncStrategy) {
*out = *in
if in.Apply != nil {
in, out := &in.Apply, &out.Apply
if *in == nil {
*out = nil
} else {
*out = new(SyncStrategyApply)
**out = **in
}
*out = new(SyncStrategyApply)
**out = **in
}
if in.Hook != nil {
in, out := &in.Hook, &out.Hook
if *in == nil {
*out = nil
} else {
*out = new(SyncStrategyHook)
**out = **in
}
*out = new(SyncStrategyHook)
**out = **in
}
return
}

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package versioned
import (

View file

@ -1,2 +1,4 @@
// Code generated by client-gen. DO NOT EDIT.
// This package has the automatically generated clientset.
package versioned

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package fake
import (

View file

@ -1,2 +1,4 @@
// Code generated by client-gen. DO NOT EDIT.
// This package has the automatically generated fake clientset.
package fake

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package fake
import (
@ -6,7 +8,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
util_runtime "k8s.io/apimachinery/pkg/util/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
)
var scheme = runtime.NewScheme()
@ -34,5 +36,5 @@ var AddToScheme = localSchemeBuilder.AddToScheme
func init() {
v1.AddToGroupVersion(scheme, schema.GroupVersion{Version: "v1"})
util_runtime.Must(AddToScheme(scheme))
utilruntime.Must(AddToScheme(scheme))
}

View file

@ -1,2 +1,4 @@
// Code generated by client-gen. DO NOT EDIT.
// This package contains the scheme of the automatically generated clientset.
package scheme

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package scheme
import (
@ -6,7 +8,7 @@ import (
runtime "k8s.io/apimachinery/pkg/runtime"
schema "k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
util_runtime "k8s.io/apimachinery/pkg/util/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
)
var Scheme = runtime.NewScheme()
@ -34,5 +36,5 @@ var AddToScheme = localSchemeBuilder.AddToScheme
func init() {
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
util_runtime.Must(AddToScheme(Scheme))
utilruntime.Must(AddToScheme(Scheme))
}

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package v1alpha1
import (

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package v1alpha1
import (

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package v1alpha1
import (

View file

@ -1,2 +1,4 @@
// Code generated by client-gen. DO NOT EDIT.
// This package has the automatically generated typed clients.
package v1alpha1

View file

@ -1,2 +1,4 @@
// Code generated by client-gen. DO NOT EDIT.
// Package fake has the automatically generated clients.
package fake

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package fake
import (

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package fake
import (

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package fake
import (

View file

@ -1,3 +1,5 @@
// Code generated by client-gen. DO NOT EDIT.
package v1alpha1
type AppProjectExpansion interface{}

View file

@ -1,3 +1,5 @@
// Code generated by informer-gen. DO NOT EDIT.
package argoproj
import (

View file

@ -1,9 +1,11 @@
// Code generated by informer-gen. DO NOT EDIT.
package v1alpha1
import (
time "time"
application_v1alpha1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
applicationv1alpha1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
versioned "github.com/argoproj/argo-cd/pkg/client/clientset/versioned"
internalinterfaces "github.com/argoproj/argo-cd/pkg/client/informers/externalversions/internalinterfaces"
v1alpha1 "github.com/argoproj/argo-cd/pkg/client/listers/application/v1alpha1"
@ -52,7 +54,7 @@ func NewFilteredApplicationInformer(client versioned.Interface, namespace string
return client.ArgoprojV1alpha1().Applications(namespace).Watch(options)
},
},
&application_v1alpha1.Application{},
&applicationv1alpha1.Application{},
resyncPeriod,
indexers,
)
@ -63,7 +65,7 @@ func (f *applicationInformer) defaultInformer(client versioned.Interface, resync
}
func (f *applicationInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&application_v1alpha1.Application{}, f.defaultInformer)
return f.factory.InformerFor(&applicationv1alpha1.Application{}, f.defaultInformer)
}
func (f *applicationInformer) Lister() v1alpha1.ApplicationLister {

View file

@ -1,9 +1,11 @@
// Code generated by informer-gen. DO NOT EDIT.
package v1alpha1
import (
time "time"
application_v1alpha1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
applicationv1alpha1 "github.com/argoproj/argo-cd/pkg/apis/application/v1alpha1"
versioned "github.com/argoproj/argo-cd/pkg/client/clientset/versioned"
internalinterfaces "github.com/argoproj/argo-cd/pkg/client/informers/externalversions/internalinterfaces"
v1alpha1 "github.com/argoproj/argo-cd/pkg/client/listers/application/v1alpha1"
@ -52,7 +54,7 @@ func NewFilteredAppProjectInformer(client versioned.Interface, namespace string,
return client.ArgoprojV1alpha1().AppProjects(namespace).Watch(options)
},
},
&application_v1alpha1.AppProject{},
&applicationv1alpha1.AppProject{},
resyncPeriod,
indexers,
)
@ -63,7 +65,7 @@ func (f *appProjectInformer) defaultInformer(client versioned.Interface, resyncP
}
func (f *appProjectInformer) Informer() cache.SharedIndexInformer {
return f.factory.InformerFor(&application_v1alpha1.AppProject{}, f.defaultInformer)
return f.factory.InformerFor(&applicationv1alpha1.AppProject{}, f.defaultInformer)
}
func (f *appProjectInformer) Lister() v1alpha1.AppProjectLister {

View file

@ -1,3 +1,5 @@
// Code generated by informer-gen. DO NOT EDIT.
package v1alpha1
import (

View file

@ -1,3 +1,5 @@
// Code generated by informer-gen. DO NOT EDIT.
package externalversions
import (

View file

@ -1,3 +1,5 @@
// Code generated by informer-gen. DO NOT EDIT.
package externalversions
import (

View file

@ -1,3 +1,5 @@
// Code generated by informer-gen. DO NOT EDIT.
package internalinterfaces
import (

View file

@ -1,3 +1,5 @@
// Code generated by lister-gen. DO NOT EDIT.
package v1alpha1
import (

View file

@ -1,3 +1,5 @@
// Code generated by lister-gen. DO NOT EDIT.
package v1alpha1
import (

View file

@ -1,3 +1,5 @@
// Code generated by lister-gen. DO NOT EDIT.
package v1alpha1
// AppProjectListerExpansion allows custom methods to be added to

View file

@ -154,13 +154,15 @@ func TestAppRollbackSuccessful(t *testing.T) {
appWithHistory := app.DeepCopy()
appWithHistory.Status.History = []v1alpha1.RevisionHistory{{
ID: 1,
Revision: app.Status.Sync.Revision,
Source: app.Spec.Source,
ID: 1,
Revision: app.Status.Sync.Revision,
DeployedAt: metav1.Time{Time: metav1.Now().UTC().Add(-1 * time.Minute)},
Source: app.Spec.Source,
}, {
ID: 2,
Revision: "cdb",
Source: app.Spec.Source,
ID: 2,
Revision: "cdb",
DeployedAt: metav1.Time{Time: metav1.Now().UTC().Add(-2 * time.Minute)},
Source: app.Spec.Source,
}}
patch, _, err := diff.CreateTwoWayMergePatch(app, appWithHistory, &v1alpha1.Application{})
assert.NoError(t, err)