From 32ce3abdf316563990edee10ffe9b50ea306a342 Mon Sep 17 00:00:00 2001 From: Waldemar Kornewald Date: Sun, 17 Oct 2021 13:23:47 +0000 Subject: [PATCH] Initial import --- .devcontainer/Dockerfile | 8 + .devcontainer/build-common.sh | 13 + .devcontainer/build-dev.sh | 43 + .devcontainer/devcontainer.json | 16 + .devcontainer/utils.sh | 34 + .gitignore | 31 + .goreleaser.yml | 54 + Configuration.pb.go | 1315 ++++++++ Configuration.proto | 206 ++ Dockerfile | 4 + Resources.pb.go | 5290 +++++++++++++++++++++++++++++++ Resources.proto | 639 ++++ build-proto.sh | 4 + build.sh | 4 + go.mod | 5 + go.sum | 8 + main.go | 218 ++ 17 files changed, 7892 insertions(+) create mode 100755 .devcontainer/Dockerfile create mode 100755 .devcontainer/build-common.sh create mode 100755 .devcontainer/build-dev.sh create mode 100755 .devcontainer/devcontainer.json create mode 100755 .devcontainer/utils.sh create mode 100755 .gitignore create mode 100755 .goreleaser.yml create mode 100644 Configuration.pb.go create mode 100755 Configuration.proto create mode 100644 Dockerfile create mode 100644 Resources.pb.go create mode 100755 Resources.proto create mode 100755 build-proto.sh create mode 100755 build.sh create mode 100755 go.mod create mode 100755 go.sum create mode 100755 main.go diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100755 index 0000000..4cdabb9 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,8 @@ +FROM golang:1.17 + +ENV DEBIAN_FRONTEND=noninteractive + +ENV PATH=$PATH:~/bin + +COPY . /dockerbuild/app +RUN /dockerbuild/app/build-dev.sh diff --git a/.devcontainer/build-common.sh b/.devcontainer/build-common.sh new file mode 100755 index 0000000..ec1c317 --- /dev/null +++ b/.devcontainer/build-common.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euxo pipefail + +DIR="$(cd "$(dirname "$0")" && pwd)" + +source "$DIR/utils.sh" + +mkdir -p ~/bin + +# Install goreleaser +download_tgz https://github.com/goreleaser/goreleaser/releases/download/v0.174.2/goreleaser_Linux_x86_64.tar.gz \ + 38155642fb10a75205f20e390474f3bad9fbf61f2614500b02b179d05907348e ~/bin \ + goreleaser diff --git a/.devcontainer/build-dev.sh b/.devcontainer/build-dev.sh new file mode 100755 index 0000000..13eac49 --- /dev/null +++ b/.devcontainer/build-dev.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +set -euxo pipefail + +DIR="$(cd "$(dirname "$0")" && pwd)" + +"$DIR/build-common.sh" + +source "$DIR/utils.sh" + +cat >> ~/.bashrc < /dev/null; then + echo -e "\e[1m\e[31mThis container is outdated. Please rebuild.\e[0m" > /dev/stderr +fi +export BUILD_VERSION_CHECK_DONE=true +EOF + +# Make sure a few common tools are installed +apt-get update +apt-get upgrade -y +apt-get install -y --no-install-recommends curl gettext git gnupg less procps apt-utils locales bash-completion zip unzip + +# Enable bash auto completion +cat >> ~/.bashrc <> /etc/locale.gen +locale-gen en_US.UTF-8 + +# Install diff-so-fancy +DIFF_SO_FANCY_VERSION="1.2.6" +download https://raw.githubusercontent.com/so-fancy/diff-so-fancy/v${DIFF_SO_FANCY_VERSION}/third_party/build_fatpack/diff-so-fancy \ + ed9de2669c789d1aba8456d0a7cf95adb326e220c99af4336405f21add8f0852 /usr/bin/diff-so-fancy +chmod a+x /usr/bin/diff-so-fancy + +# Install protoc +PROTOC_VERSION="3.18.1" +download_zip https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-x86_64.zip \ + 220bd1704c73dbf4d0a91399a2ecf9d19938b5cd80c8a38839a023d8b87bb772 /usr/bin/ bin/protoc +chmod a+x /usr/bin/protoc + +go install google.golang.org/protobuf/cmd/protoc-gen-go@latest diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100755 index 0000000..b91e78b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,16 @@ +{ + "name": "Dev", + "dockerFile": "Dockerfile", + "runArgs": [ + "--cap-add=SYS_PTRACE", + "--security-opt", + "seccomp=unconfined", + // Additionally we copy the .ssh folder into the container (see postCreateCommand below) to + // reuse the host's ssh config and known_hosts. + "-v", "${env:HOME}${env:USERPROFILE}/.ssh:/root/.ssh-localhost:ro", + ], + "postCreateCommand": "mkdir -p ~/.ssh && cp -r ~/.ssh-localhost/* ~/.ssh && chmod 700 ~/.ssh && chmod 600 ~/.ssh/*", + "extensions": [ + "golang.go", + ], +} \ No newline at end of file diff --git a/.devcontainer/utils.sh b/.devcontainer/utils.sh new file mode 100755 index 0000000..1ec0ca8 --- /dev/null +++ b/.devcontainer/utils.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euxo pipefail + +download() { + local url="$1" + local checksum="$2" + local dst="$3" + curl -qsSL -o "$dst" "$url" + echo "$checksum $dst" > "$dst.sum" + sha256sum -c "$dst.sum" + rm -rf "$dst.sum" +} + +download_tgz() { + local url="$1" + local checksum="$2" + local dst="$3" + local tmp="$(mktemp)" + download "$url" "$checksum" "$tmp" + shift 3 + tar -C "$dst" -xzf "$tmp" "$@" + rm -rf "$tmp" +} + +download_zip() { + local url="$1" + local checksum="$2" + local dst="$3" + local tmp="$(mktemp)" + download "$url" "$checksum" "$tmp" + shift 3 + unzip -j "$tmp" "$@" -d "$dst" + rm -rf "$tmp" +} diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..019b3f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +.DS_Store +._* +.Spotlight-V100 +.Trashes +desktop.ini +ehthumbs.db +Thumbs.db +AlbumArt* + +.idea/* +!/.idea/codeStyleSettings.xml +!/.idea/inspectionProfiles +!/.idea/runConfigurations +.idea_* +.vscode +.sublime-* +.settings +atlassian-ide-plugin.xml + +~* +*~ +*.bak +*.orig +*.swp +*.tmp +*.exe + +build/ +dist/ + +/.tmp diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100755 index 0000000..7205a05 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,54 @@ +project_name: androidmanifest-changer +before: + hooks: + - go mod download + - go generate ./... +env: + - CGO_ENABLED=0 +builds: + - id: windows + goos: + - windows + goarch: + - amd64 + ldflags: + - -s -w -X main.version={{.Version}} -X main.commit={{.ShortCommit}} -X main.date={{.Date}} + - id: unix + goos: + - linux + - darwin + goarch: + - amd64 + - arm + - arm64 + goarm: + - 7 + ldflags: + - -s -w -X main.version={{.Version}} -X main.commit={{.ShortCommit}} -X main.date={{.Date}} +archives: + - id: windows + builds: + - windows + format: zip + replacements: + windows: Windows + amd64: x86_64 + - id: unix + builds: + - unix + replacements: + darwin: macOS + linux: Linux + amd64: x86_64 +snapshot: + name_template: "{{ .Tag }}-next" +release: + draft: true +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' + - Merge pull request + - Merge branch diff --git a/Configuration.pb.go b/Configuration.pb.go new file mode 100644 index 0000000..d138fd0 --- /dev/null +++ b/Configuration.pb.go @@ -0,0 +1,1315 @@ +// +// Copyright (C) 2017 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.18.1 +// source: Configuration.proto + +package main + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type Configuration_LayoutDirection int32 + +const ( + Configuration_LAYOUT_DIRECTION_UNSET Configuration_LayoutDirection = 0 + Configuration_LAYOUT_DIRECTION_LTR Configuration_LayoutDirection = 1 + Configuration_LAYOUT_DIRECTION_RTL Configuration_LayoutDirection = 2 +) + +// Enum value maps for Configuration_LayoutDirection. +var ( + Configuration_LayoutDirection_name = map[int32]string{ + 0: "LAYOUT_DIRECTION_UNSET", + 1: "LAYOUT_DIRECTION_LTR", + 2: "LAYOUT_DIRECTION_RTL", + } + Configuration_LayoutDirection_value = map[string]int32{ + "LAYOUT_DIRECTION_UNSET": 0, + "LAYOUT_DIRECTION_LTR": 1, + "LAYOUT_DIRECTION_RTL": 2, + } +) + +func (x Configuration_LayoutDirection) Enum() *Configuration_LayoutDirection { + p := new(Configuration_LayoutDirection) + *p = x + return p +} + +func (x Configuration_LayoutDirection) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_LayoutDirection) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[0].Descriptor() +} + +func (Configuration_LayoutDirection) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[0] +} + +func (x Configuration_LayoutDirection) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_LayoutDirection.Descriptor instead. +func (Configuration_LayoutDirection) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 0} +} + +type Configuration_ScreenLayoutSize int32 + +const ( + Configuration_SCREEN_LAYOUT_SIZE_UNSET Configuration_ScreenLayoutSize = 0 + Configuration_SCREEN_LAYOUT_SIZE_SMALL Configuration_ScreenLayoutSize = 1 + Configuration_SCREEN_LAYOUT_SIZE_NORMAL Configuration_ScreenLayoutSize = 2 + Configuration_SCREEN_LAYOUT_SIZE_LARGE Configuration_ScreenLayoutSize = 3 + Configuration_SCREEN_LAYOUT_SIZE_XLARGE Configuration_ScreenLayoutSize = 4 +) + +// Enum value maps for Configuration_ScreenLayoutSize. +var ( + Configuration_ScreenLayoutSize_name = map[int32]string{ + 0: "SCREEN_LAYOUT_SIZE_UNSET", + 1: "SCREEN_LAYOUT_SIZE_SMALL", + 2: "SCREEN_LAYOUT_SIZE_NORMAL", + 3: "SCREEN_LAYOUT_SIZE_LARGE", + 4: "SCREEN_LAYOUT_SIZE_XLARGE", + } + Configuration_ScreenLayoutSize_value = map[string]int32{ + "SCREEN_LAYOUT_SIZE_UNSET": 0, + "SCREEN_LAYOUT_SIZE_SMALL": 1, + "SCREEN_LAYOUT_SIZE_NORMAL": 2, + "SCREEN_LAYOUT_SIZE_LARGE": 3, + "SCREEN_LAYOUT_SIZE_XLARGE": 4, + } +) + +func (x Configuration_ScreenLayoutSize) Enum() *Configuration_ScreenLayoutSize { + p := new(Configuration_ScreenLayoutSize) + *p = x + return p +} + +func (x Configuration_ScreenLayoutSize) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_ScreenLayoutSize) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[1].Descriptor() +} + +func (Configuration_ScreenLayoutSize) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[1] +} + +func (x Configuration_ScreenLayoutSize) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_ScreenLayoutSize.Descriptor instead. +func (Configuration_ScreenLayoutSize) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 1} +} + +type Configuration_ScreenLayoutLong int32 + +const ( + Configuration_SCREEN_LAYOUT_LONG_UNSET Configuration_ScreenLayoutLong = 0 + Configuration_SCREEN_LAYOUT_LONG_LONG Configuration_ScreenLayoutLong = 1 + Configuration_SCREEN_LAYOUT_LONG_NOTLONG Configuration_ScreenLayoutLong = 2 +) + +// Enum value maps for Configuration_ScreenLayoutLong. +var ( + Configuration_ScreenLayoutLong_name = map[int32]string{ + 0: "SCREEN_LAYOUT_LONG_UNSET", + 1: "SCREEN_LAYOUT_LONG_LONG", + 2: "SCREEN_LAYOUT_LONG_NOTLONG", + } + Configuration_ScreenLayoutLong_value = map[string]int32{ + "SCREEN_LAYOUT_LONG_UNSET": 0, + "SCREEN_LAYOUT_LONG_LONG": 1, + "SCREEN_LAYOUT_LONG_NOTLONG": 2, + } +) + +func (x Configuration_ScreenLayoutLong) Enum() *Configuration_ScreenLayoutLong { + p := new(Configuration_ScreenLayoutLong) + *p = x + return p +} + +func (x Configuration_ScreenLayoutLong) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_ScreenLayoutLong) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[2].Descriptor() +} + +func (Configuration_ScreenLayoutLong) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[2] +} + +func (x Configuration_ScreenLayoutLong) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_ScreenLayoutLong.Descriptor instead. +func (Configuration_ScreenLayoutLong) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 2} +} + +type Configuration_ScreenRound int32 + +const ( + Configuration_SCREEN_ROUND_UNSET Configuration_ScreenRound = 0 + Configuration_SCREEN_ROUND_ROUND Configuration_ScreenRound = 1 + Configuration_SCREEN_ROUND_NOTROUND Configuration_ScreenRound = 2 +) + +// Enum value maps for Configuration_ScreenRound. +var ( + Configuration_ScreenRound_name = map[int32]string{ + 0: "SCREEN_ROUND_UNSET", + 1: "SCREEN_ROUND_ROUND", + 2: "SCREEN_ROUND_NOTROUND", + } + Configuration_ScreenRound_value = map[string]int32{ + "SCREEN_ROUND_UNSET": 0, + "SCREEN_ROUND_ROUND": 1, + "SCREEN_ROUND_NOTROUND": 2, + } +) + +func (x Configuration_ScreenRound) Enum() *Configuration_ScreenRound { + p := new(Configuration_ScreenRound) + *p = x + return p +} + +func (x Configuration_ScreenRound) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_ScreenRound) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[3].Descriptor() +} + +func (Configuration_ScreenRound) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[3] +} + +func (x Configuration_ScreenRound) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_ScreenRound.Descriptor instead. +func (Configuration_ScreenRound) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 3} +} + +type Configuration_WideColorGamut int32 + +const ( + Configuration_WIDE_COLOR_GAMUT_UNSET Configuration_WideColorGamut = 0 + Configuration_WIDE_COLOR_GAMUT_WIDECG Configuration_WideColorGamut = 1 + Configuration_WIDE_COLOR_GAMUT_NOWIDECG Configuration_WideColorGamut = 2 +) + +// Enum value maps for Configuration_WideColorGamut. +var ( + Configuration_WideColorGamut_name = map[int32]string{ + 0: "WIDE_COLOR_GAMUT_UNSET", + 1: "WIDE_COLOR_GAMUT_WIDECG", + 2: "WIDE_COLOR_GAMUT_NOWIDECG", + } + Configuration_WideColorGamut_value = map[string]int32{ + "WIDE_COLOR_GAMUT_UNSET": 0, + "WIDE_COLOR_GAMUT_WIDECG": 1, + "WIDE_COLOR_GAMUT_NOWIDECG": 2, + } +) + +func (x Configuration_WideColorGamut) Enum() *Configuration_WideColorGamut { + p := new(Configuration_WideColorGamut) + *p = x + return p +} + +func (x Configuration_WideColorGamut) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_WideColorGamut) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[4].Descriptor() +} + +func (Configuration_WideColorGamut) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[4] +} + +func (x Configuration_WideColorGamut) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_WideColorGamut.Descriptor instead. +func (Configuration_WideColorGamut) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 4} +} + +type Configuration_Hdr int32 + +const ( + Configuration_HDR_UNSET Configuration_Hdr = 0 + Configuration_HDR_HIGHDR Configuration_Hdr = 1 + Configuration_HDR_LOWDR Configuration_Hdr = 2 +) + +// Enum value maps for Configuration_Hdr. +var ( + Configuration_Hdr_name = map[int32]string{ + 0: "HDR_UNSET", + 1: "HDR_HIGHDR", + 2: "HDR_LOWDR", + } + Configuration_Hdr_value = map[string]int32{ + "HDR_UNSET": 0, + "HDR_HIGHDR": 1, + "HDR_LOWDR": 2, + } +) + +func (x Configuration_Hdr) Enum() *Configuration_Hdr { + p := new(Configuration_Hdr) + *p = x + return p +} + +func (x Configuration_Hdr) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Hdr) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[5].Descriptor() +} + +func (Configuration_Hdr) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[5] +} + +func (x Configuration_Hdr) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Hdr.Descriptor instead. +func (Configuration_Hdr) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 5} +} + +type Configuration_Orientation int32 + +const ( + Configuration_ORIENTATION_UNSET Configuration_Orientation = 0 + Configuration_ORIENTATION_PORT Configuration_Orientation = 1 + Configuration_ORIENTATION_LAND Configuration_Orientation = 2 + Configuration_ORIENTATION_SQUARE Configuration_Orientation = 3 +) + +// Enum value maps for Configuration_Orientation. +var ( + Configuration_Orientation_name = map[int32]string{ + 0: "ORIENTATION_UNSET", + 1: "ORIENTATION_PORT", + 2: "ORIENTATION_LAND", + 3: "ORIENTATION_SQUARE", + } + Configuration_Orientation_value = map[string]int32{ + "ORIENTATION_UNSET": 0, + "ORIENTATION_PORT": 1, + "ORIENTATION_LAND": 2, + "ORIENTATION_SQUARE": 3, + } +) + +func (x Configuration_Orientation) Enum() *Configuration_Orientation { + p := new(Configuration_Orientation) + *p = x + return p +} + +func (x Configuration_Orientation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Orientation) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[6].Descriptor() +} + +func (Configuration_Orientation) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[6] +} + +func (x Configuration_Orientation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Orientation.Descriptor instead. +func (Configuration_Orientation) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 6} +} + +type Configuration_UiModeType int32 + +const ( + Configuration_UI_MODE_TYPE_UNSET Configuration_UiModeType = 0 + Configuration_UI_MODE_TYPE_NORMAL Configuration_UiModeType = 1 + Configuration_UI_MODE_TYPE_DESK Configuration_UiModeType = 2 + Configuration_UI_MODE_TYPE_CAR Configuration_UiModeType = 3 + Configuration_UI_MODE_TYPE_TELEVISION Configuration_UiModeType = 4 + Configuration_UI_MODE_TYPE_APPLIANCE Configuration_UiModeType = 5 + Configuration_UI_MODE_TYPE_WATCH Configuration_UiModeType = 6 + Configuration_UI_MODE_TYPE_VRHEADSET Configuration_UiModeType = 7 +) + +// Enum value maps for Configuration_UiModeType. +var ( + Configuration_UiModeType_name = map[int32]string{ + 0: "UI_MODE_TYPE_UNSET", + 1: "UI_MODE_TYPE_NORMAL", + 2: "UI_MODE_TYPE_DESK", + 3: "UI_MODE_TYPE_CAR", + 4: "UI_MODE_TYPE_TELEVISION", + 5: "UI_MODE_TYPE_APPLIANCE", + 6: "UI_MODE_TYPE_WATCH", + 7: "UI_MODE_TYPE_VRHEADSET", + } + Configuration_UiModeType_value = map[string]int32{ + "UI_MODE_TYPE_UNSET": 0, + "UI_MODE_TYPE_NORMAL": 1, + "UI_MODE_TYPE_DESK": 2, + "UI_MODE_TYPE_CAR": 3, + "UI_MODE_TYPE_TELEVISION": 4, + "UI_MODE_TYPE_APPLIANCE": 5, + "UI_MODE_TYPE_WATCH": 6, + "UI_MODE_TYPE_VRHEADSET": 7, + } +) + +func (x Configuration_UiModeType) Enum() *Configuration_UiModeType { + p := new(Configuration_UiModeType) + *p = x + return p +} + +func (x Configuration_UiModeType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_UiModeType) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[7].Descriptor() +} + +func (Configuration_UiModeType) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[7] +} + +func (x Configuration_UiModeType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_UiModeType.Descriptor instead. +func (Configuration_UiModeType) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 7} +} + +type Configuration_UiModeNight int32 + +const ( + Configuration_UI_MODE_NIGHT_UNSET Configuration_UiModeNight = 0 + Configuration_UI_MODE_NIGHT_NIGHT Configuration_UiModeNight = 1 + Configuration_UI_MODE_NIGHT_NOTNIGHT Configuration_UiModeNight = 2 +) + +// Enum value maps for Configuration_UiModeNight. +var ( + Configuration_UiModeNight_name = map[int32]string{ + 0: "UI_MODE_NIGHT_UNSET", + 1: "UI_MODE_NIGHT_NIGHT", + 2: "UI_MODE_NIGHT_NOTNIGHT", + } + Configuration_UiModeNight_value = map[string]int32{ + "UI_MODE_NIGHT_UNSET": 0, + "UI_MODE_NIGHT_NIGHT": 1, + "UI_MODE_NIGHT_NOTNIGHT": 2, + } +) + +func (x Configuration_UiModeNight) Enum() *Configuration_UiModeNight { + p := new(Configuration_UiModeNight) + *p = x + return p +} + +func (x Configuration_UiModeNight) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_UiModeNight) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[8].Descriptor() +} + +func (Configuration_UiModeNight) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[8] +} + +func (x Configuration_UiModeNight) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_UiModeNight.Descriptor instead. +func (Configuration_UiModeNight) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 8} +} + +type Configuration_Touchscreen int32 + +const ( + Configuration_TOUCHSCREEN_UNSET Configuration_Touchscreen = 0 + Configuration_TOUCHSCREEN_NOTOUCH Configuration_Touchscreen = 1 + Configuration_TOUCHSCREEN_STYLUS Configuration_Touchscreen = 2 + Configuration_TOUCHSCREEN_FINGER Configuration_Touchscreen = 3 +) + +// Enum value maps for Configuration_Touchscreen. +var ( + Configuration_Touchscreen_name = map[int32]string{ + 0: "TOUCHSCREEN_UNSET", + 1: "TOUCHSCREEN_NOTOUCH", + 2: "TOUCHSCREEN_STYLUS", + 3: "TOUCHSCREEN_FINGER", + } + Configuration_Touchscreen_value = map[string]int32{ + "TOUCHSCREEN_UNSET": 0, + "TOUCHSCREEN_NOTOUCH": 1, + "TOUCHSCREEN_STYLUS": 2, + "TOUCHSCREEN_FINGER": 3, + } +) + +func (x Configuration_Touchscreen) Enum() *Configuration_Touchscreen { + p := new(Configuration_Touchscreen) + *p = x + return p +} + +func (x Configuration_Touchscreen) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Touchscreen) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[9].Descriptor() +} + +func (Configuration_Touchscreen) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[9] +} + +func (x Configuration_Touchscreen) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Touchscreen.Descriptor instead. +func (Configuration_Touchscreen) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 9} +} + +type Configuration_KeysHidden int32 + +const ( + Configuration_KEYS_HIDDEN_UNSET Configuration_KeysHidden = 0 + Configuration_KEYS_HIDDEN_KEYSEXPOSED Configuration_KeysHidden = 1 + Configuration_KEYS_HIDDEN_KEYSHIDDEN Configuration_KeysHidden = 2 + Configuration_KEYS_HIDDEN_KEYSSOFT Configuration_KeysHidden = 3 +) + +// Enum value maps for Configuration_KeysHidden. +var ( + Configuration_KeysHidden_name = map[int32]string{ + 0: "KEYS_HIDDEN_UNSET", + 1: "KEYS_HIDDEN_KEYSEXPOSED", + 2: "KEYS_HIDDEN_KEYSHIDDEN", + 3: "KEYS_HIDDEN_KEYSSOFT", + } + Configuration_KeysHidden_value = map[string]int32{ + "KEYS_HIDDEN_UNSET": 0, + "KEYS_HIDDEN_KEYSEXPOSED": 1, + "KEYS_HIDDEN_KEYSHIDDEN": 2, + "KEYS_HIDDEN_KEYSSOFT": 3, + } +) + +func (x Configuration_KeysHidden) Enum() *Configuration_KeysHidden { + p := new(Configuration_KeysHidden) + *p = x + return p +} + +func (x Configuration_KeysHidden) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_KeysHidden) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[10].Descriptor() +} + +func (Configuration_KeysHidden) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[10] +} + +func (x Configuration_KeysHidden) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_KeysHidden.Descriptor instead. +func (Configuration_KeysHidden) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 10} +} + +type Configuration_Keyboard int32 + +const ( + Configuration_KEYBOARD_UNSET Configuration_Keyboard = 0 + Configuration_KEYBOARD_NOKEYS Configuration_Keyboard = 1 + Configuration_KEYBOARD_QWERTY Configuration_Keyboard = 2 + Configuration_KEYBOARD_TWELVEKEY Configuration_Keyboard = 3 +) + +// Enum value maps for Configuration_Keyboard. +var ( + Configuration_Keyboard_name = map[int32]string{ + 0: "KEYBOARD_UNSET", + 1: "KEYBOARD_NOKEYS", + 2: "KEYBOARD_QWERTY", + 3: "KEYBOARD_TWELVEKEY", + } + Configuration_Keyboard_value = map[string]int32{ + "KEYBOARD_UNSET": 0, + "KEYBOARD_NOKEYS": 1, + "KEYBOARD_QWERTY": 2, + "KEYBOARD_TWELVEKEY": 3, + } +) + +func (x Configuration_Keyboard) Enum() *Configuration_Keyboard { + p := new(Configuration_Keyboard) + *p = x + return p +} + +func (x Configuration_Keyboard) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Keyboard) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[11].Descriptor() +} + +func (Configuration_Keyboard) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[11] +} + +func (x Configuration_Keyboard) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Keyboard.Descriptor instead. +func (Configuration_Keyboard) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 11} +} + +type Configuration_NavHidden int32 + +const ( + Configuration_NAV_HIDDEN_UNSET Configuration_NavHidden = 0 + Configuration_NAV_HIDDEN_NAVEXPOSED Configuration_NavHidden = 1 + Configuration_NAV_HIDDEN_NAVHIDDEN Configuration_NavHidden = 2 +) + +// Enum value maps for Configuration_NavHidden. +var ( + Configuration_NavHidden_name = map[int32]string{ + 0: "NAV_HIDDEN_UNSET", + 1: "NAV_HIDDEN_NAVEXPOSED", + 2: "NAV_HIDDEN_NAVHIDDEN", + } + Configuration_NavHidden_value = map[string]int32{ + "NAV_HIDDEN_UNSET": 0, + "NAV_HIDDEN_NAVEXPOSED": 1, + "NAV_HIDDEN_NAVHIDDEN": 2, + } +) + +func (x Configuration_NavHidden) Enum() *Configuration_NavHidden { + p := new(Configuration_NavHidden) + *p = x + return p +} + +func (x Configuration_NavHidden) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_NavHidden) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[12].Descriptor() +} + +func (Configuration_NavHidden) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[12] +} + +func (x Configuration_NavHidden) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_NavHidden.Descriptor instead. +func (Configuration_NavHidden) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 12} +} + +type Configuration_Navigation int32 + +const ( + Configuration_NAVIGATION_UNSET Configuration_Navigation = 0 + Configuration_NAVIGATION_NONAV Configuration_Navigation = 1 + Configuration_NAVIGATION_DPAD Configuration_Navigation = 2 + Configuration_NAVIGATION_TRACKBALL Configuration_Navigation = 3 + Configuration_NAVIGATION_WHEEL Configuration_Navigation = 4 +) + +// Enum value maps for Configuration_Navigation. +var ( + Configuration_Navigation_name = map[int32]string{ + 0: "NAVIGATION_UNSET", + 1: "NAVIGATION_NONAV", + 2: "NAVIGATION_DPAD", + 3: "NAVIGATION_TRACKBALL", + 4: "NAVIGATION_WHEEL", + } + Configuration_Navigation_value = map[string]int32{ + "NAVIGATION_UNSET": 0, + "NAVIGATION_NONAV": 1, + "NAVIGATION_DPAD": 2, + "NAVIGATION_TRACKBALL": 3, + "NAVIGATION_WHEEL": 4, + } +) + +func (x Configuration_Navigation) Enum() *Configuration_Navigation { + p := new(Configuration_Navigation) + *p = x + return p +} + +func (x Configuration_Navigation) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Configuration_Navigation) Descriptor() protoreflect.EnumDescriptor { + return file_Configuration_proto_enumTypes[13].Descriptor() +} + +func (Configuration_Navigation) Type() protoreflect.EnumType { + return &file_Configuration_proto_enumTypes[13] +} + +func (x Configuration_Navigation) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Configuration_Navigation.Descriptor instead. +func (Configuration_Navigation) EnumDescriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0, 13} +} + +// A description of the requirements a device must have in order for a +// resource to be matched and selected. +type Configuration struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Mobile country code. + Mcc uint32 `protobuf:"varint,1,opt,name=mcc,proto3" json:"mcc,omitempty"` + // Mobile network code. + Mnc uint32 `protobuf:"varint,2,opt,name=mnc,proto3" json:"mnc,omitempty"` + // BCP-47 locale tag. + Locale string `protobuf:"bytes,3,opt,name=locale,proto3" json:"locale,omitempty"` + // Left-to-right, right-to-left... + LayoutDirection Configuration_LayoutDirection `protobuf:"varint,4,opt,name=layout_direction,json=layoutDirection,proto3,enum=aapt.pb.Configuration_LayoutDirection" json:"layout_direction,omitempty"` + // Screen width in pixels. Prefer screen_width_dp. + ScreenWidth uint32 `protobuf:"varint,5,opt,name=screen_width,json=screenWidth,proto3" json:"screen_width,omitempty"` + // Screen height in pixels. Prefer screen_height_dp. + ScreenHeight uint32 `protobuf:"varint,6,opt,name=screen_height,json=screenHeight,proto3" json:"screen_height,omitempty"` + // Screen width in density independent pixels (dp). + ScreenWidthDp uint32 `protobuf:"varint,7,opt,name=screen_width_dp,json=screenWidthDp,proto3" json:"screen_width_dp,omitempty"` + // Screen height in density independent pixels (dp). + ScreenHeightDp uint32 `protobuf:"varint,8,opt,name=screen_height_dp,json=screenHeightDp,proto3" json:"screen_height_dp,omitempty"` + // The smallest screen dimension, regardless of orientation, in dp. + SmallestScreenWidthDp uint32 `protobuf:"varint,9,opt,name=smallest_screen_width_dp,json=smallestScreenWidthDp,proto3" json:"smallest_screen_width_dp,omitempty"` + // Whether the device screen is classified as small, normal, large, xlarge. + ScreenLayoutSize Configuration_ScreenLayoutSize `protobuf:"varint,10,opt,name=screen_layout_size,json=screenLayoutSize,proto3,enum=aapt.pb.Configuration_ScreenLayoutSize" json:"screen_layout_size,omitempty"` + // Whether the device screen is long. + ScreenLayoutLong Configuration_ScreenLayoutLong `protobuf:"varint,11,opt,name=screen_layout_long,json=screenLayoutLong,proto3,enum=aapt.pb.Configuration_ScreenLayoutLong" json:"screen_layout_long,omitempty"` + // Whether the screen is round (Android Wear). + ScreenRound Configuration_ScreenRound `protobuf:"varint,12,opt,name=screen_round,json=screenRound,proto3,enum=aapt.pb.Configuration_ScreenRound" json:"screen_round,omitempty"` + // Whether the screen supports wide color gamut. + WideColorGamut Configuration_WideColorGamut `protobuf:"varint,13,opt,name=wide_color_gamut,json=wideColorGamut,proto3,enum=aapt.pb.Configuration_WideColorGamut" json:"wide_color_gamut,omitempty"` + // Whether the screen has high dynamic range. + Hdr Configuration_Hdr `protobuf:"varint,14,opt,name=hdr,proto3,enum=aapt.pb.Configuration_Hdr" json:"hdr,omitempty"` + // Which orientation the device is in (portrait, landscape). + Orientation Configuration_Orientation `protobuf:"varint,15,opt,name=orientation,proto3,enum=aapt.pb.Configuration_Orientation" json:"orientation,omitempty"` + // Which type of UI mode the device is in (television, car, etc.). + UiModeType Configuration_UiModeType `protobuf:"varint,16,opt,name=ui_mode_type,json=uiModeType,proto3,enum=aapt.pb.Configuration_UiModeType" json:"ui_mode_type,omitempty"` + // Whether the device is in night mode. + UiModeNight Configuration_UiModeNight `protobuf:"varint,17,opt,name=ui_mode_night,json=uiModeNight,proto3,enum=aapt.pb.Configuration_UiModeNight" json:"ui_mode_night,omitempty"` + // The device's screen density in dots-per-inch (dpi). + Density uint32 `protobuf:"varint,18,opt,name=density,proto3" json:"density,omitempty"` + // Whether a touchscreen exists, supports a stylus, or finger. + Touchscreen Configuration_Touchscreen `protobuf:"varint,19,opt,name=touchscreen,proto3,enum=aapt.pb.Configuration_Touchscreen" json:"touchscreen,omitempty"` + // Whether the keyboard hardware keys are currently hidden, exposed, or + // if the keyboard is a software keyboard. + KeysHidden Configuration_KeysHidden `protobuf:"varint,20,opt,name=keys_hidden,json=keysHidden,proto3,enum=aapt.pb.Configuration_KeysHidden" json:"keys_hidden,omitempty"` + // The type of keyboard present (none, QWERTY, 12-key). + Keyboard Configuration_Keyboard `protobuf:"varint,21,opt,name=keyboard,proto3,enum=aapt.pb.Configuration_Keyboard" json:"keyboard,omitempty"` + // Whether the navigation is exposed or hidden. + NavHidden Configuration_NavHidden `protobuf:"varint,22,opt,name=nav_hidden,json=navHidden,proto3,enum=aapt.pb.Configuration_NavHidden" json:"nav_hidden,omitempty"` + // The type of navigation present on the device + // (trackball, wheel, dpad, etc.). + Navigation Configuration_Navigation `protobuf:"varint,23,opt,name=navigation,proto3,enum=aapt.pb.Configuration_Navigation" json:"navigation,omitempty"` + // The minimum SDK version of the device. + SdkVersion uint32 `protobuf:"varint,24,opt,name=sdk_version,json=sdkVersion,proto3" json:"sdk_version,omitempty"` + Product string `protobuf:"bytes,25,opt,name=product,proto3" json:"product,omitempty"` +} + +func (x *Configuration) Reset() { + *x = Configuration{} + if protoimpl.UnsafeEnabled { + mi := &file_Configuration_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Configuration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Configuration) ProtoMessage() {} + +func (x *Configuration) ProtoReflect() protoreflect.Message { + mi := &file_Configuration_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Configuration.ProtoReflect.Descriptor instead. +func (*Configuration) Descriptor() ([]byte, []int) { + return file_Configuration_proto_rawDescGZIP(), []int{0} +} + +func (x *Configuration) GetMcc() uint32 { + if x != nil { + return x.Mcc + } + return 0 +} + +func (x *Configuration) GetMnc() uint32 { + if x != nil { + return x.Mnc + } + return 0 +} + +func (x *Configuration) GetLocale() string { + if x != nil { + return x.Locale + } + return "" +} + +func (x *Configuration) GetLayoutDirection() Configuration_LayoutDirection { + if x != nil { + return x.LayoutDirection + } + return Configuration_LAYOUT_DIRECTION_UNSET +} + +func (x *Configuration) GetScreenWidth() uint32 { + if x != nil { + return x.ScreenWidth + } + return 0 +} + +func (x *Configuration) GetScreenHeight() uint32 { + if x != nil { + return x.ScreenHeight + } + return 0 +} + +func (x *Configuration) GetScreenWidthDp() uint32 { + if x != nil { + return x.ScreenWidthDp + } + return 0 +} + +func (x *Configuration) GetScreenHeightDp() uint32 { + if x != nil { + return x.ScreenHeightDp + } + return 0 +} + +func (x *Configuration) GetSmallestScreenWidthDp() uint32 { + if x != nil { + return x.SmallestScreenWidthDp + } + return 0 +} + +func (x *Configuration) GetScreenLayoutSize() Configuration_ScreenLayoutSize { + if x != nil { + return x.ScreenLayoutSize + } + return Configuration_SCREEN_LAYOUT_SIZE_UNSET +} + +func (x *Configuration) GetScreenLayoutLong() Configuration_ScreenLayoutLong { + if x != nil { + return x.ScreenLayoutLong + } + return Configuration_SCREEN_LAYOUT_LONG_UNSET +} + +func (x *Configuration) GetScreenRound() Configuration_ScreenRound { + if x != nil { + return x.ScreenRound + } + return Configuration_SCREEN_ROUND_UNSET +} + +func (x *Configuration) GetWideColorGamut() Configuration_WideColorGamut { + if x != nil { + return x.WideColorGamut + } + return Configuration_WIDE_COLOR_GAMUT_UNSET +} + +func (x *Configuration) GetHdr() Configuration_Hdr { + if x != nil { + return x.Hdr + } + return Configuration_HDR_UNSET +} + +func (x *Configuration) GetOrientation() Configuration_Orientation { + if x != nil { + return x.Orientation + } + return Configuration_ORIENTATION_UNSET +} + +func (x *Configuration) GetUiModeType() Configuration_UiModeType { + if x != nil { + return x.UiModeType + } + return Configuration_UI_MODE_TYPE_UNSET +} + +func (x *Configuration) GetUiModeNight() Configuration_UiModeNight { + if x != nil { + return x.UiModeNight + } + return Configuration_UI_MODE_NIGHT_UNSET +} + +func (x *Configuration) GetDensity() uint32 { + if x != nil { + return x.Density + } + return 0 +} + +func (x *Configuration) GetTouchscreen() Configuration_Touchscreen { + if x != nil { + return x.Touchscreen + } + return Configuration_TOUCHSCREEN_UNSET +} + +func (x *Configuration) GetKeysHidden() Configuration_KeysHidden { + if x != nil { + return x.KeysHidden + } + return Configuration_KEYS_HIDDEN_UNSET +} + +func (x *Configuration) GetKeyboard() Configuration_Keyboard { + if x != nil { + return x.Keyboard + } + return Configuration_KEYBOARD_UNSET +} + +func (x *Configuration) GetNavHidden() Configuration_NavHidden { + if x != nil { + return x.NavHidden + } + return Configuration_NAV_HIDDEN_UNSET +} + +func (x *Configuration) GetNavigation() Configuration_Navigation { + if x != nil { + return x.Navigation + } + return Configuration_NAVIGATION_UNSET +} + +func (x *Configuration) GetSdkVersion() uint32 { + if x != nil { + return x.SdkVersion + } + return 0 +} + +func (x *Configuration) GetProduct() string { + if x != nil { + return x.Product + } + return "" +} + +var File_Configuration_proto protoreflect.FileDescriptor + +var file_Configuration_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x22, 0x91, + 0x17, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x63, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, + 0x63, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x6e, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x03, 0x6d, 0x6e, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x51, 0x0a, 0x10, + 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, + 0x61, 0x79, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, + 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x57, 0x69, 0x64, + 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x64, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, 0x44, 0x70, 0x12, + 0x28, 0x0a, 0x10, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x64, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x44, 0x70, 0x12, 0x37, 0x0a, 0x18, 0x73, 0x6d, 0x61, + 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x5f, 0x64, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x73, 0x6d, 0x61, + 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x57, 0x69, 0x64, 0x74, 0x68, + 0x44, 0x70, 0x12, 0x55, 0x0a, 0x12, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x52, 0x10, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, + 0x61, 0x79, 0x6f, 0x75, 0x74, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x55, 0x0a, 0x12, 0x73, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x5f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x63, + 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x52, 0x10, + 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x6e, 0x67, + 0x12, 0x45, 0x0a, 0x0c, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x72, 0x6f, 0x75, 0x6e, 0x64, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, + 0x63, 0x72, 0x65, 0x65, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x0b, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x4f, 0x0a, 0x10, 0x77, 0x69, 0x64, 0x65, 0x5f, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x67, 0x61, 0x6d, 0x75, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x64, 0x65, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x47, 0x61, 0x6d, 0x75, 0x74, 0x52, 0x0e, 0x77, 0x69, 0x64, 0x65, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x47, 0x61, 0x6d, 0x75, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x68, 0x64, 0x72, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x48, 0x64, + 0x72, 0x52, 0x03, 0x68, 0x64, 0x72, 0x12, 0x44, 0x0a, 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0b, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0c, + 0x75, 0x69, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x55, 0x69, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x75, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x46, 0x0a, 0x0d, 0x75, 0x69, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x55, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0b, 0x75, 0x69, + 0x4d, 0x6f, 0x64, 0x65, 0x4e, 0x69, 0x67, 0x68, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x64, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x64, 0x65, 0x6e, 0x73, + 0x69, 0x74, 0x79, 0x12, 0x44, 0x0a, 0x0b, 0x74, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x52, 0x0b, 0x74, 0x6f, + 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x42, 0x0a, 0x0b, 0x6b, 0x65, 0x79, + 0x73, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, + 0x6e, 0x52, 0x0a, 0x6b, 0x65, 0x79, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x3b, 0x0a, + 0x08, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x52, 0x08, 0x6b, 0x65, 0x79, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x6e, 0x61, + 0x76, 0x5f, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x76, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, + 0x52, 0x09, 0x6e, 0x61, 0x76, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x41, 0x0a, 0x0a, 0x6e, + 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x21, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0a, 0x6e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, + 0x0a, 0x0b, 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x61, 0x0a, 0x0f, 0x4c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, + 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x59, 0x4f, + 0x55, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x54, 0x52, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x52, + 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x54, 0x4c, 0x10, 0x02, 0x22, 0xaa, 0x01, 0x0a, + 0x10, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, + 0x55, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x1d, 0x0a, + 0x19, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x53, + 0x49, 0x5a, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x5f, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x43, + 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x5f, 0x58, 0x4c, 0x41, 0x52, 0x47, 0x45, 0x10, 0x04, 0x22, 0x6d, 0x0a, 0x10, 0x53, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x4c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x4c, 0x6f, 0x6e, 0x67, 0x12, 0x1c, 0x0a, + 0x18, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x4c, + 0x4f, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x53, + 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x4c, 0x4f, 0x4e, + 0x47, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x43, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x4c, 0x41, 0x59, 0x4f, 0x55, 0x54, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x4e, + 0x4f, 0x54, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x58, 0x0a, 0x0b, 0x53, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x45, 0x45, + 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, + 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x43, 0x52, 0x45, 0x45, + 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x4e, 0x4f, 0x54, 0x52, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x02, 0x22, 0x68, 0x0a, 0x0e, 0x57, 0x69, 0x64, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x47, + 0x61, 0x6d, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4c, + 0x4f, 0x52, 0x5f, 0x47, 0x41, 0x4d, 0x55, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, + 0x12, 0x1b, 0x0a, 0x17, 0x57, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x47, + 0x41, 0x4d, 0x55, 0x54, 0x5f, 0x57, 0x49, 0x44, 0x45, 0x43, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, + 0x19, 0x57, 0x49, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x47, 0x41, 0x4d, 0x55, + 0x54, 0x5f, 0x4e, 0x4f, 0x57, 0x49, 0x44, 0x45, 0x43, 0x47, 0x10, 0x02, 0x22, 0x33, 0x0a, 0x03, + 0x48, 0x64, 0x72, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x44, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x44, 0x52, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x44, 0x52, + 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x48, 0x44, 0x52, 0x5f, 0x4c, 0x4f, 0x57, 0x44, 0x52, 0x10, + 0x02, 0x22, 0x68, 0x0a, 0x0b, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x52, 0x49, 0x45, 0x4e, + 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, + 0x10, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x41, 0x4e, + 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x52, 0x49, 0x45, 0x4e, 0x54, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x51, 0x55, 0x41, 0x52, 0x45, 0x10, 0x03, 0x22, 0xd7, 0x01, 0x0a, 0x0a, + 0x55, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x49, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, + 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x55, + 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x4b, + 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x41, 0x52, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x49, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x56, 0x49, 0x53, + 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x41, 0x4e, 0x43, 0x45, 0x10, + 0x05, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x49, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x52, 0x48, 0x45, 0x41, 0x44, + 0x53, 0x45, 0x54, 0x10, 0x07, 0x22, 0x5b, 0x0a, 0x0b, 0x55, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x4e, + 0x69, 0x67, 0x68, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x4e, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x17, 0x0a, + 0x13, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4e, + 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x49, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x4e, 0x49, 0x47, 0x48, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x4e, 0x49, 0x47, 0x48, 0x54, + 0x10, 0x02, 0x22, 0x6d, 0x0a, 0x0b, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x73, 0x63, 0x72, 0x65, 0x65, + 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x4f, 0x55, 0x43, + 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x10, + 0x01, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x4f, 0x55, 0x43, 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, + 0x5f, 0x53, 0x54, 0x59, 0x4c, 0x55, 0x53, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x4f, 0x55, + 0x43, 0x48, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x46, 0x49, 0x4e, 0x47, 0x45, 0x52, 0x10, + 0x03, 0x22, 0x76, 0x0a, 0x0a, 0x4b, 0x65, 0x79, 0x73, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, + 0x15, 0x0a, 0x11, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, + 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x45, 0x58, 0x50, 0x4f, 0x53, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, 0x49, 0x44, 0x44, + 0x45, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x10, 0x02, 0x12, + 0x18, 0x0a, 0x14, 0x4b, 0x45, 0x59, 0x53, 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4b, + 0x45, 0x59, 0x53, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x03, 0x22, 0x60, 0x0a, 0x08, 0x4b, 0x65, 0x79, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x0e, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, + 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x45, 0x59, + 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x4e, 0x4f, 0x4b, 0x45, 0x59, 0x53, 0x10, 0x01, 0x12, 0x13, + 0x0a, 0x0f, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, 0x51, 0x57, 0x45, 0x52, 0x54, + 0x59, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x4b, 0x45, 0x59, 0x42, 0x4f, 0x41, 0x52, 0x44, 0x5f, + 0x54, 0x57, 0x45, 0x4c, 0x56, 0x45, 0x4b, 0x45, 0x59, 0x10, 0x03, 0x22, 0x56, 0x0a, 0x09, 0x4e, + 0x61, 0x76, 0x48, 0x69, 0x64, 0x64, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x41, 0x56, 0x5f, + 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x19, + 0x0a, 0x15, 0x4e, 0x41, 0x56, 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4e, 0x41, 0x56, + 0x45, 0x58, 0x50, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x41, 0x56, + 0x5f, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x5f, 0x4e, 0x41, 0x56, 0x48, 0x49, 0x44, 0x44, 0x45, + 0x4e, 0x10, 0x02, 0x22, 0x7d, 0x0a, 0x0a, 0x4e, 0x61, 0x76, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x45, 0x54, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x41, 0x56, 0x49, 0x47, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x41, 0x56, 0x10, 0x01, 0x12, 0x13, 0x0a, + 0x0f, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x50, 0x41, 0x44, + 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x42, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, + 0x4e, 0x41, 0x56, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x48, 0x45, 0x45, 0x4c, + 0x10, 0x04, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x3b, 0x6d, 0x61, 0x69, 0x6e, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_Configuration_proto_rawDescOnce sync.Once + file_Configuration_proto_rawDescData = file_Configuration_proto_rawDesc +) + +func file_Configuration_proto_rawDescGZIP() []byte { + file_Configuration_proto_rawDescOnce.Do(func() { + file_Configuration_proto_rawDescData = protoimpl.X.CompressGZIP(file_Configuration_proto_rawDescData) + }) + return file_Configuration_proto_rawDescData +} + +var file_Configuration_proto_enumTypes = make([]protoimpl.EnumInfo, 14) +var file_Configuration_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_Configuration_proto_goTypes = []interface{}{ + (Configuration_LayoutDirection)(0), // 0: aapt.pb.Configuration.LayoutDirection + (Configuration_ScreenLayoutSize)(0), // 1: aapt.pb.Configuration.ScreenLayoutSize + (Configuration_ScreenLayoutLong)(0), // 2: aapt.pb.Configuration.ScreenLayoutLong + (Configuration_ScreenRound)(0), // 3: aapt.pb.Configuration.ScreenRound + (Configuration_WideColorGamut)(0), // 4: aapt.pb.Configuration.WideColorGamut + (Configuration_Hdr)(0), // 5: aapt.pb.Configuration.Hdr + (Configuration_Orientation)(0), // 6: aapt.pb.Configuration.Orientation + (Configuration_UiModeType)(0), // 7: aapt.pb.Configuration.UiModeType + (Configuration_UiModeNight)(0), // 8: aapt.pb.Configuration.UiModeNight + (Configuration_Touchscreen)(0), // 9: aapt.pb.Configuration.Touchscreen + (Configuration_KeysHidden)(0), // 10: aapt.pb.Configuration.KeysHidden + (Configuration_Keyboard)(0), // 11: aapt.pb.Configuration.Keyboard + (Configuration_NavHidden)(0), // 12: aapt.pb.Configuration.NavHidden + (Configuration_Navigation)(0), // 13: aapt.pb.Configuration.Navigation + (*Configuration)(nil), // 14: aapt.pb.Configuration +} +var file_Configuration_proto_depIdxs = []int32{ + 0, // 0: aapt.pb.Configuration.layout_direction:type_name -> aapt.pb.Configuration.LayoutDirection + 1, // 1: aapt.pb.Configuration.screen_layout_size:type_name -> aapt.pb.Configuration.ScreenLayoutSize + 2, // 2: aapt.pb.Configuration.screen_layout_long:type_name -> aapt.pb.Configuration.ScreenLayoutLong + 3, // 3: aapt.pb.Configuration.screen_round:type_name -> aapt.pb.Configuration.ScreenRound + 4, // 4: aapt.pb.Configuration.wide_color_gamut:type_name -> aapt.pb.Configuration.WideColorGamut + 5, // 5: aapt.pb.Configuration.hdr:type_name -> aapt.pb.Configuration.Hdr + 6, // 6: aapt.pb.Configuration.orientation:type_name -> aapt.pb.Configuration.Orientation + 7, // 7: aapt.pb.Configuration.ui_mode_type:type_name -> aapt.pb.Configuration.UiModeType + 8, // 8: aapt.pb.Configuration.ui_mode_night:type_name -> aapt.pb.Configuration.UiModeNight + 9, // 9: aapt.pb.Configuration.touchscreen:type_name -> aapt.pb.Configuration.Touchscreen + 10, // 10: aapt.pb.Configuration.keys_hidden:type_name -> aapt.pb.Configuration.KeysHidden + 11, // 11: aapt.pb.Configuration.keyboard:type_name -> aapt.pb.Configuration.Keyboard + 12, // 12: aapt.pb.Configuration.nav_hidden:type_name -> aapt.pb.Configuration.NavHidden + 13, // 13: aapt.pb.Configuration.navigation:type_name -> aapt.pb.Configuration.Navigation + 14, // [14:14] is the sub-list for method output_type + 14, // [14:14] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name +} + +func init() { file_Configuration_proto_init() } +func file_Configuration_proto_init() { + if File_Configuration_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_Configuration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Configuration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_Configuration_proto_rawDesc, + NumEnums: 14, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_Configuration_proto_goTypes, + DependencyIndexes: file_Configuration_proto_depIdxs, + EnumInfos: file_Configuration_proto_enumTypes, + MessageInfos: file_Configuration_proto_msgTypes, + }.Build() + File_Configuration_proto = out.File + file_Configuration_proto_rawDesc = nil + file_Configuration_proto_goTypes = nil + file_Configuration_proto_depIdxs = nil +} diff --git a/Configuration.proto b/Configuration.proto new file mode 100755 index 0000000..df7b3d0 --- /dev/null +++ b/Configuration.proto @@ -0,0 +1,206 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto3"; + +package aapt.pb; + +option go_package = "./;main"; + +// A description of the requirements a device must have in order for a +// resource to be matched and selected. +message Configuration { + enum LayoutDirection { + LAYOUT_DIRECTION_UNSET = 0; + LAYOUT_DIRECTION_LTR = 1; + LAYOUT_DIRECTION_RTL = 2; + } + + enum ScreenLayoutSize { + SCREEN_LAYOUT_SIZE_UNSET = 0; + SCREEN_LAYOUT_SIZE_SMALL = 1; + SCREEN_LAYOUT_SIZE_NORMAL = 2; + SCREEN_LAYOUT_SIZE_LARGE = 3; + SCREEN_LAYOUT_SIZE_XLARGE = 4; + } + + enum ScreenLayoutLong { + SCREEN_LAYOUT_LONG_UNSET = 0; + SCREEN_LAYOUT_LONG_LONG = 1; + SCREEN_LAYOUT_LONG_NOTLONG = 2; + } + + enum ScreenRound { + SCREEN_ROUND_UNSET = 0; + SCREEN_ROUND_ROUND = 1; + SCREEN_ROUND_NOTROUND = 2; + } + + enum WideColorGamut { + WIDE_COLOR_GAMUT_UNSET = 0; + WIDE_COLOR_GAMUT_WIDECG = 1; + WIDE_COLOR_GAMUT_NOWIDECG = 2; + } + + enum Hdr { + HDR_UNSET = 0; + HDR_HIGHDR = 1; + HDR_LOWDR = 2; + } + + enum Orientation { + ORIENTATION_UNSET = 0; + ORIENTATION_PORT = 1; + ORIENTATION_LAND = 2; + ORIENTATION_SQUARE = 3; + } + + enum UiModeType { + UI_MODE_TYPE_UNSET = 0; + UI_MODE_TYPE_NORMAL = 1; + UI_MODE_TYPE_DESK = 2; + UI_MODE_TYPE_CAR = 3; + UI_MODE_TYPE_TELEVISION = 4; + UI_MODE_TYPE_APPLIANCE = 5; + UI_MODE_TYPE_WATCH = 6; + UI_MODE_TYPE_VRHEADSET = 7; + } + + enum UiModeNight { + UI_MODE_NIGHT_UNSET = 0; + UI_MODE_NIGHT_NIGHT = 1; + UI_MODE_NIGHT_NOTNIGHT = 2; + } + + enum Touchscreen { + TOUCHSCREEN_UNSET = 0; + TOUCHSCREEN_NOTOUCH = 1; + TOUCHSCREEN_STYLUS = 2; + TOUCHSCREEN_FINGER = 3; + } + + enum KeysHidden { + KEYS_HIDDEN_UNSET = 0; + KEYS_HIDDEN_KEYSEXPOSED = 1; + KEYS_HIDDEN_KEYSHIDDEN = 2; + KEYS_HIDDEN_KEYSSOFT = 3; + } + + enum Keyboard { + KEYBOARD_UNSET = 0; + KEYBOARD_NOKEYS = 1; + KEYBOARD_QWERTY = 2; + KEYBOARD_TWELVEKEY = 3; + } + + enum NavHidden { + NAV_HIDDEN_UNSET = 0; + NAV_HIDDEN_NAVEXPOSED = 1; + NAV_HIDDEN_NAVHIDDEN = 2; + } + + enum Navigation { + NAVIGATION_UNSET = 0; + NAVIGATION_NONAV = 1; + NAVIGATION_DPAD = 2; + NAVIGATION_TRACKBALL = 3; + NAVIGATION_WHEEL = 4; + } + + // + // Axis/dimensions that are understood by the runtime. + // + + // Mobile country code. + uint32 mcc = 1; + + // Mobile network code. + uint32 mnc = 2; + + // BCP-47 locale tag. + string locale = 3; + + // Left-to-right, right-to-left... + LayoutDirection layout_direction = 4; + + // Screen width in pixels. Prefer screen_width_dp. + uint32 screen_width = 5; + + // Screen height in pixels. Prefer screen_height_dp. + uint32 screen_height = 6; + + // Screen width in density independent pixels (dp). + uint32 screen_width_dp = 7; + + // Screen height in density independent pixels (dp). + uint32 screen_height_dp = 8; + + // The smallest screen dimension, regardless of orientation, in dp. + uint32 smallest_screen_width_dp = 9; + + // Whether the device screen is classified as small, normal, large, xlarge. + ScreenLayoutSize screen_layout_size = 10; + + // Whether the device screen is long. + ScreenLayoutLong screen_layout_long = 11; + + // Whether the screen is round (Android Wear). + ScreenRound screen_round = 12; + + // Whether the screen supports wide color gamut. + WideColorGamut wide_color_gamut = 13; + + // Whether the screen has high dynamic range. + Hdr hdr = 14; + + // Which orientation the device is in (portrait, landscape). + Orientation orientation = 15; + + // Which type of UI mode the device is in (television, car, etc.). + UiModeType ui_mode_type = 16; + + // Whether the device is in night mode. + UiModeNight ui_mode_night = 17; + + // The device's screen density in dots-per-inch (dpi). + uint32 density = 18; + + // Whether a touchscreen exists, supports a stylus, or finger. + Touchscreen touchscreen = 19; + + // Whether the keyboard hardware keys are currently hidden, exposed, or + // if the keyboard is a software keyboard. + KeysHidden keys_hidden = 20; + + // The type of keyboard present (none, QWERTY, 12-key). + Keyboard keyboard = 21; + + // Whether the navigation is exposed or hidden. + NavHidden nav_hidden = 22; + + // The type of navigation present on the device + // (trackball, wheel, dpad, etc.). + Navigation navigation = 23; + + // The minimum SDK version of the device. + uint32 sdk_version = 24; + + // + // Build-time only dimensions. + // + + string product = 25; +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..de4708f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,4 @@ +FROM ubuntu:latest +WORKDIR /app +RUN apt-get -y update && apt-get install -y curl +CMD ["/app/aggregator", "--bind", "0.0.0.0:9000"] diff --git a/Resources.pb.go b/Resources.pb.go new file mode 100644 index 0000000..113d926 --- /dev/null +++ b/Resources.pb.go @@ -0,0 +1,5290 @@ +// +// Copyright (C) 2016 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.18.1 +// source: Resources.proto + +package main + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The visibility of the resource outside of its package. +type Visibility_Level int32 + +const ( + // No visibility was explicitly specified. This is typically treated as private. + // The distinction is important when two separate R.java files are generated: a public and + // private one. An unknown visibility, in this case, would cause the resource to be omitted + // from either R.java. + Visibility_UNKNOWN Visibility_Level = 0 + // A resource was explicitly marked as private. This means the resource can not be accessed + // outside of its package unless the @*package:type/entry notation is used (the asterisk being + // the private accessor). If two R.java files are generated (private + public), the resource + // will only be emitted to the private R.java file. + Visibility_PRIVATE Visibility_Level = 1 + // A resource was explicitly marked as public. This means the resource can be accessed + // from any package, and is emitted into all R.java files, public and private. + Visibility_PUBLIC Visibility_Level = 2 +) + +// Enum value maps for Visibility_Level. +var ( + Visibility_Level_name = map[int32]string{ + 0: "UNKNOWN", + 1: "PRIVATE", + 2: "PUBLIC", + } + Visibility_Level_value = map[string]int32{ + "UNKNOWN": 0, + "PRIVATE": 1, + "PUBLIC": 2, + } +) + +func (x Visibility_Level) Enum() *Visibility_Level { + p := new(Visibility_Level) + *p = x + return p +} + +func (x Visibility_Level) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Visibility_Level) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[0].Descriptor() +} + +func (Visibility_Level) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[0] +} + +func (x Visibility_Level) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Visibility_Level.Descriptor instead. +func (Visibility_Level) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{9, 0} +} + +type OverlayableItem_Policy int32 + +const ( + OverlayableItem_NONE OverlayableItem_Policy = 0 + OverlayableItem_PUBLIC OverlayableItem_Policy = 1 + OverlayableItem_SYSTEM OverlayableItem_Policy = 2 + OverlayableItem_VENDOR OverlayableItem_Policy = 3 + OverlayableItem_PRODUCT OverlayableItem_Policy = 4 + OverlayableItem_SIGNATURE OverlayableItem_Policy = 5 + OverlayableItem_ODM OverlayableItem_Policy = 6 + OverlayableItem_OEM OverlayableItem_Policy = 7 + OverlayableItem_ACTOR OverlayableItem_Policy = 8 + OverlayableItem_CONFIG_SIGNATURE OverlayableItem_Policy = 9 +) + +// Enum value maps for OverlayableItem_Policy. +var ( + OverlayableItem_Policy_name = map[int32]string{ + 0: "NONE", + 1: "PUBLIC", + 2: "SYSTEM", + 3: "VENDOR", + 4: "PRODUCT", + 5: "SIGNATURE", + 6: "ODM", + 7: "OEM", + 8: "ACTOR", + 9: "CONFIG_SIGNATURE", + } + OverlayableItem_Policy_value = map[string]int32{ + "NONE": 0, + "PUBLIC": 1, + "SYSTEM": 2, + "VENDOR": 3, + "PRODUCT": 4, + "SIGNATURE": 5, + "ODM": 6, + "OEM": 7, + "ACTOR": 8, + "CONFIG_SIGNATURE": 9, + } +) + +func (x OverlayableItem_Policy) Enum() *OverlayableItem_Policy { + p := new(OverlayableItem_Policy) + *p = x + return p +} + +func (x OverlayableItem_Policy) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OverlayableItem_Policy) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[1].Descriptor() +} + +func (OverlayableItem_Policy) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[1] +} + +func (x OverlayableItem_Policy) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OverlayableItem_Policy.Descriptor instead. +func (OverlayableItem_Policy) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{12, 0} +} + +type Reference_Type int32 + +const ( + // A plain reference (@package:type/entry). + Reference_REFERENCE Reference_Type = 0 + // A reference to a theme attribute (?package:type/entry). + Reference_ATTRIBUTE Reference_Type = 1 +) + +// Enum value maps for Reference_Type. +var ( + Reference_Type_name = map[int32]string{ + 0: "REFERENCE", + 1: "ATTRIBUTE", + } + Reference_Type_value = map[string]int32{ + "REFERENCE": 0, + "ATTRIBUTE": 1, + } +) + +func (x Reference_Type) Enum() *Reference_Type { + p := new(Reference_Type) + *p = x + return p +} + +func (x Reference_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Reference_Type) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[2].Descriptor() +} + +func (Reference_Type) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[2] +} + +func (x Reference_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Reference_Type.Descriptor instead. +func (Reference_Type) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{21, 0} +} + +type FileReference_Type int32 + +const ( + FileReference_UNKNOWN FileReference_Type = 0 + FileReference_PNG FileReference_Type = 1 + FileReference_BINARY_XML FileReference_Type = 2 + FileReference_PROTO_XML FileReference_Type = 3 +) + +// Enum value maps for FileReference_Type. +var ( + FileReference_Type_name = map[int32]string{ + 0: "UNKNOWN", + 1: "PNG", + 2: "BINARY_XML", + 3: "PROTO_XML", + } + FileReference_Type_value = map[string]int32{ + "UNKNOWN": 0, + "PNG": 1, + "BINARY_XML": 2, + "PROTO_XML": 3, + } +) + +func (x FileReference_Type) Enum() *FileReference_Type { + p := new(FileReference_Type) + *p = x + return p +} + +func (x FileReference_Type) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (FileReference_Type) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[3].Descriptor() +} + +func (FileReference_Type) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[3] +} + +func (x FileReference_Type) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use FileReference_Type.Descriptor instead. +func (FileReference_Type) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{26, 0} +} + +// Bitmask of formats allowed for an attribute. +type Attribute_FormatFlags int32 + +const ( + Attribute_NONE Attribute_FormatFlags = 0 // Proto3 requires a default of 0. + Attribute_ANY Attribute_FormatFlags = 65535 // Allows any type except ENUM and FLAGS. + Attribute_REFERENCE Attribute_FormatFlags = 1 // Allows Reference values. + Attribute_STRING Attribute_FormatFlags = 2 // Allows String/StyledString values. + Attribute_INTEGER Attribute_FormatFlags = 4 // Allows any integer BinaryPrimitive values. + Attribute_BOOLEAN Attribute_FormatFlags = 8 // Allows any boolean BinaryPrimitive values. + Attribute_COLOR Attribute_FormatFlags = 16 // Allows any color BinaryPrimitive values. + Attribute_FLOAT Attribute_FormatFlags = 32 // Allows any float BinaryPrimitive values. + Attribute_DIMENSION Attribute_FormatFlags = 64 // Allows any dimension BinaryPrimitive values. + Attribute_FRACTION Attribute_FormatFlags = 128 // Allows any fraction BinaryPrimitive values. + Attribute_ENUM Attribute_FormatFlags = 65536 // Allows enums that are defined in the Attribute's symbols. + // ENUM and FLAGS cannot BOTH be set. + Attribute_FLAGS Attribute_FormatFlags = 131072 // Allows flags that are defined in the Attribute's symbols. +) + +// Enum value maps for Attribute_FormatFlags. +var ( + Attribute_FormatFlags_name = map[int32]string{ + 0: "NONE", + 65535: "ANY", + 1: "REFERENCE", + 2: "STRING", + 4: "INTEGER", + 8: "BOOLEAN", + 16: "COLOR", + 32: "FLOAT", + 64: "DIMENSION", + 128: "FRACTION", + 65536: "ENUM", + 131072: "FLAGS", + } + Attribute_FormatFlags_value = map[string]int32{ + "NONE": 0, + "ANY": 65535, + "REFERENCE": 1, + "STRING": 2, + "INTEGER": 4, + "BOOLEAN": 8, + "COLOR": 16, + "FLOAT": 32, + "DIMENSION": 64, + "FRACTION": 128, + "ENUM": 65536, + "FLAGS": 131072, + } +) + +func (x Attribute_FormatFlags) Enum() *Attribute_FormatFlags { + p := new(Attribute_FormatFlags) + *p = x + return p +} + +func (x Attribute_FormatFlags) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Attribute_FormatFlags) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[4].Descriptor() +} + +func (Attribute_FormatFlags) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[4] +} + +func (x Attribute_FormatFlags) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Attribute_FormatFlags.Descriptor instead. +func (Attribute_FormatFlags) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{28, 0} +} + +// The arity of the plural. +type Plural_Arity int32 + +const ( + Plural_ZERO Plural_Arity = 0 + Plural_ONE Plural_Arity = 1 + Plural_TWO Plural_Arity = 2 + Plural_FEW Plural_Arity = 3 + Plural_MANY Plural_Arity = 4 + Plural_OTHER Plural_Arity = 5 +) + +// Enum value maps for Plural_Arity. +var ( + Plural_Arity_name = map[int32]string{ + 0: "ZERO", + 1: "ONE", + 2: "TWO", + 3: "FEW", + 4: "MANY", + 5: "OTHER", + } + Plural_Arity_value = map[string]int32{ + "ZERO": 0, + "ONE": 1, + "TWO": 2, + "FEW": 3, + "MANY": 4, + "OTHER": 5, + } +) + +func (x Plural_Arity) Enum() *Plural_Arity { + p := new(Plural_Arity) + *p = x + return p +} + +func (x Plural_Arity) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Plural_Arity) Descriptor() protoreflect.EnumDescriptor { + return file_Resources_proto_enumTypes[5].Descriptor() +} + +func (Plural_Arity) Type() protoreflect.EnumType { + return &file_Resources_proto_enumTypes[5] +} + +func (x Plural_Arity) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Plural_Arity.Descriptor instead. +func (Plural_Arity) EnumDescriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{32, 0} +} + +// A string pool that wraps the binary form of the C++ class android::ResStringPool. +type StringPool struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *StringPool) Reset() { + *x = StringPool{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StringPool) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StringPool) ProtoMessage() {} + +func (x *StringPool) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StringPool.ProtoReflect.Descriptor instead. +func (*StringPool) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{0} +} + +func (x *StringPool) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +// The position of a declared entity within a file. +type SourcePosition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + LineNumber uint32 `protobuf:"varint,1,opt,name=line_number,json=lineNumber,proto3" json:"line_number,omitempty"` + ColumnNumber uint32 `protobuf:"varint,2,opt,name=column_number,json=columnNumber,proto3" json:"column_number,omitempty"` +} + +func (x *SourcePosition) Reset() { + *x = SourcePosition{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SourcePosition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SourcePosition) ProtoMessage() {} + +func (x *SourcePosition) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SourcePosition.ProtoReflect.Descriptor instead. +func (*SourcePosition) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{1} +} + +func (x *SourcePosition) GetLineNumber() uint32 { + if x != nil { + return x.LineNumber + } + return 0 +} + +func (x *SourcePosition) GetColumnNumber() uint32 { + if x != nil { + return x.ColumnNumber + } + return 0 +} + +// Developer friendly source file information for an entity in the resource table. +type Source struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The index of the string path within the source string pool of a ResourceTable. + PathIdx uint32 `protobuf:"varint,1,opt,name=path_idx,json=pathIdx,proto3" json:"path_idx,omitempty"` + Position *SourcePosition `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` +} + +func (x *Source) Reset() { + *x = Source{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Source) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Source) ProtoMessage() {} + +func (x *Source) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Source.ProtoReflect.Descriptor instead. +func (*Source) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{2} +} + +func (x *Source) GetPathIdx() uint32 { + if x != nil { + return x.PathIdx + } + return 0 +} + +func (x *Source) GetPosition() *SourcePosition { + if x != nil { + return x.Position + } + return nil +} + +// The name and version fingerprint of a build tool. +type ToolFingerprint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tool string `protobuf:"bytes,1,opt,name=tool,proto3" json:"tool,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (x *ToolFingerprint) Reset() { + *x = ToolFingerprint{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ToolFingerprint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ToolFingerprint) ProtoMessage() {} + +func (x *ToolFingerprint) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ToolFingerprint.ProtoReflect.Descriptor instead. +func (*ToolFingerprint) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{3} +} + +func (x *ToolFingerprint) GetTool() string { + if x != nil { + return x.Tool + } + return "" +} + +func (x *ToolFingerprint) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +// Top level message representing a resource table. +type ResourceTable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The string pool containing source paths referenced throughout the resource table. This does + // not end up in the final binary ARSC file. + SourcePool *StringPool `protobuf:"bytes,1,opt,name=source_pool,json=sourcePool,proto3" json:"source_pool,omitempty"` + // Resource definitions corresponding to an Android package. + Package []*Package `protobuf:"bytes,2,rep,name=package,proto3" json:"package,omitempty"` + // The declarations within the resource table. + Overlayable []*Overlayable `protobuf:"bytes,3,rep,name=overlayable,proto3" json:"overlayable,omitempty"` + // The version fingerprints of the tools that built the resource table. + ToolFingerprint []*ToolFingerprint `protobuf:"bytes,4,rep,name=tool_fingerprint,json=toolFingerprint,proto3" json:"tool_fingerprint,omitempty"` +} + +func (x *ResourceTable) Reset() { + *x = ResourceTable{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ResourceTable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ResourceTable) ProtoMessage() {} + +func (x *ResourceTable) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ResourceTable.ProtoReflect.Descriptor instead. +func (*ResourceTable) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{4} +} + +func (x *ResourceTable) GetSourcePool() *StringPool { + if x != nil { + return x.SourcePool + } + return nil +} + +func (x *ResourceTable) GetPackage() []*Package { + if x != nil { + return x.Package + } + return nil +} + +func (x *ResourceTable) GetOverlayable() []*Overlayable { + if x != nil { + return x.Overlayable + } + return nil +} + +func (x *ResourceTable) GetToolFingerprint() []*ToolFingerprint { + if x != nil { + return x.ToolFingerprint + } + return nil +} + +// A package ID in the range [0x00, 0xff]. +type PackageId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PackageId) Reset() { + *x = PackageId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageId) ProtoMessage() {} + +func (x *PackageId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PackageId.ProtoReflect.Descriptor instead. +func (*PackageId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{5} +} + +func (x *PackageId) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +// Defines resources for an Android package. +type Package struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The package ID of this package, in the range [0x00, 0xff]. + // - ID 0x00 is reserved for shared libraries, or when the ID is assigned at run-time. + // - ID 0x01 is reserved for the 'android' package (framework). + // - ID range [0x02, 0x7f) is reserved for auto-assignment to shared libraries at run-time. + // - ID 0x7f is reserved for the application package. + // - IDs > 0x7f are reserved for the application as well and are treated as feature splits. + // This may not be set if no ID was assigned. + PackageId *PackageId `protobuf:"bytes,1,opt,name=package_id,json=packageId,proto3" json:"package_id,omitempty"` + // The Java compatible Android package name of the app. + PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + // The series of types defined by the package. + Type []*Type `protobuf:"bytes,3,rep,name=type,proto3" json:"type,omitempty"` +} + +func (x *Package) Reset() { + *x = Package{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Package) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Package) ProtoMessage() {} + +func (x *Package) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Package.ProtoReflect.Descriptor instead. +func (*Package) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{6} +} + +func (x *Package) GetPackageId() *PackageId { + if x != nil { + return x.PackageId + } + return nil +} + +func (x *Package) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *Package) GetType() []*Type { + if x != nil { + return x.Type + } + return nil +} + +// A type ID in the range [0x01, 0xff]. +type TypeId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *TypeId) Reset() { + *x = TypeId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TypeId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TypeId) ProtoMessage() {} + +func (x *TypeId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TypeId.ProtoReflect.Descriptor instead. +func (*TypeId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{7} +} + +func (x *TypeId) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +// A set of resources grouped under a common type. Such types include string, layout, xml, dimen, +// attr, etc. This maps to the second part of a resource identifier in Java (R.type.entry). +type Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of the type. This may not be set if no ID was assigned. + TypeId *TypeId `protobuf:"bytes,1,opt,name=type_id,json=typeId,proto3" json:"type_id,omitempty"` + // The name of the type. This corresponds to the 'type' part of a full resource name of the form + // package:type/entry. The set of legal type names is listed in Resource.cpp. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // The entries defined for this type. + Entry []*Entry `protobuf:"bytes,3,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Type) Reset() { + *x = Type{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Type) ProtoMessage() {} + +func (x *Type) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Type.ProtoReflect.Descriptor instead. +func (*Type) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{8} +} + +func (x *Type) GetTypeId() *TypeId { + if x != nil { + return x.TypeId + } + return nil +} + +func (x *Type) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Type) GetEntry() []*Entry { + if x != nil { + return x.Entry + } + return nil +} + +// The Visibility of a symbol/entry (public, private, undefined). +type Visibility struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Level Visibility_Level `protobuf:"varint,1,opt,name=level,proto3,enum=aapt.pb.Visibility_Level" json:"level,omitempty"` + // The path at which this entry's visibility was defined (eg. public.xml). + Source *Source `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + // The comment associated with the tag. + Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment,omitempty"` + // Indicates that the resource id may change across builds and that the public R.java identifier + // for this resource should not be final. This is set to `true` for resources in `staging-group` + // tags. + StagedApi bool `protobuf:"varint,4,opt,name=staged_api,json=stagedApi,proto3" json:"staged_api,omitempty"` +} + +func (x *Visibility) Reset() { + *x = Visibility{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Visibility) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Visibility) ProtoMessage() {} + +func (x *Visibility) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Visibility.ProtoReflect.Descriptor instead. +func (*Visibility) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{9} +} + +func (x *Visibility) GetLevel() Visibility_Level { + if x != nil { + return x.Level + } + return Visibility_UNKNOWN +} + +func (x *Visibility) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Visibility) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Visibility) GetStagedApi() bool { + if x != nil { + return x.StagedApi + } + return false +} + +// Whether a resource comes from a compile-time overlay and is explicitly allowed to not overlay an +// existing resource. +type AllowNew struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where this was defined in source. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comment associated with the declaration. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` +} + +func (x *AllowNew) Reset() { + *x = AllowNew{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AllowNew) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AllowNew) ProtoMessage() {} + +func (x *AllowNew) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AllowNew.ProtoReflect.Descriptor instead. +func (*AllowNew) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{10} +} + +func (x *AllowNew) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *AllowNew) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +// Represents a set of overlayable resources. +type Overlayable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the . + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // The location of the declaration in the source. + Source *Source `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` + // The component responsible for enabling and disabling overlays targeting this . + Actor string `protobuf:"bytes,3,opt,name=actor,proto3" json:"actor,omitempty"` +} + +func (x *Overlayable) Reset() { + *x = Overlayable{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Overlayable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Overlayable) ProtoMessage() {} + +func (x *Overlayable) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Overlayable.ProtoReflect.Descriptor instead. +func (*Overlayable) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{11} +} + +func (x *Overlayable) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Overlayable) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Overlayable) GetActor() string { + if x != nil { + return x.Actor + } + return "" +} + +// Represents an overlayable declaration within an tag. +type OverlayableItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The location of the declaration in source. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comment associated with the declaration. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The policy defined by the enclosing tag of this . + Policy []OverlayableItem_Policy `protobuf:"varint,3,rep,packed,name=policy,proto3,enum=aapt.pb.OverlayableItem_Policy" json:"policy,omitempty"` + // The index into overlayable list that points to the tag that contains + // this . + OverlayableIdx uint32 `protobuf:"varint,4,opt,name=overlayable_idx,json=overlayableIdx,proto3" json:"overlayable_idx,omitempty"` +} + +func (x *OverlayableItem) Reset() { + *x = OverlayableItem{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OverlayableItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OverlayableItem) ProtoMessage() {} + +func (x *OverlayableItem) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OverlayableItem.ProtoReflect.Descriptor instead. +func (*OverlayableItem) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{12} +} + +func (x *OverlayableItem) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *OverlayableItem) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *OverlayableItem) GetPolicy() []OverlayableItem_Policy { + if x != nil { + return x.Policy + } + return nil +} + +func (x *OverlayableItem) GetOverlayableIdx() uint32 { + if x != nil { + return x.OverlayableIdx + } + return 0 +} + +// The staged resource ID definition of a finalized resource. +type StagedId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + StagedId uint32 `protobuf:"varint,2,opt,name=staged_id,json=stagedId,proto3" json:"staged_id,omitempty"` +} + +func (x *StagedId) Reset() { + *x = StagedId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StagedId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StagedId) ProtoMessage() {} + +func (x *StagedId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StagedId.ProtoReflect.Descriptor instead. +func (*StagedId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{13} +} + +func (x *StagedId) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *StagedId) GetStagedId() uint32 { + if x != nil { + return x.StagedId + } + return 0 +} + +// An entry ID in the range [0x0000, 0xffff]. +type EntryId struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *EntryId) Reset() { + *x = EntryId{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EntryId) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EntryId) ProtoMessage() {} + +func (x *EntryId) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EntryId.ProtoReflect.Descriptor instead. +func (*EntryId) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{14} +} + +func (x *EntryId) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +// An entry declaration. An entry has a full resource ID that is the combination of package ID, +// type ID, and its own entry ID. An entry on its own has no value, but values are defined for +// various configurations/variants. +type Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The ID of this entry. Together with the package ID and type ID, this forms a full resource ID + // of the form 0xPPTTEEEE, where PP is the package ID, TT is the type ID, and EEEE is the entry + // ID. + // This may not be set if no ID was assigned. + EntryId *EntryId `protobuf:"bytes,1,opt,name=entry_id,json=entryId,proto3" json:"entry_id,omitempty"` + // The name of this entry. This corresponds to the 'entry' part of a full resource name of the + // form package:type/entry. + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // The visibility of this entry (public, private, undefined). + Visibility *Visibility `protobuf:"bytes,3,opt,name=visibility,proto3" json:"visibility,omitempty"` + // Whether this resource, when originating from a compile-time overlay, is allowed to NOT overlay + // any existing resources. + AllowNew *AllowNew `protobuf:"bytes,4,opt,name=allow_new,json=allowNew,proto3" json:"allow_new,omitempty"` + // Whether this resource can be overlaid by a runtime resource overlay (RRO). + OverlayableItem *OverlayableItem `protobuf:"bytes,5,opt,name=overlayable_item,json=overlayableItem,proto3" json:"overlayable_item,omitempty"` + // The set of values defined for this entry, each corresponding to a different + // configuration/variant. + ConfigValue []*ConfigValue `protobuf:"bytes,6,rep,name=config_value,json=configValue,proto3" json:"config_value,omitempty"` + // The staged resource ID of this finalized resource. + StagedId *StagedId `protobuf:"bytes,7,opt,name=staged_id,json=stagedId,proto3" json:"staged_id,omitempty"` +} + +func (x *Entry) Reset() { + *x = Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Entry) ProtoMessage() {} + +func (x *Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Entry.ProtoReflect.Descriptor instead. +func (*Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{15} +} + +func (x *Entry) GetEntryId() *EntryId { + if x != nil { + return x.EntryId + } + return nil +} + +func (x *Entry) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Entry) GetVisibility() *Visibility { + if x != nil { + return x.Visibility + } + return nil +} + +func (x *Entry) GetAllowNew() *AllowNew { + if x != nil { + return x.AllowNew + } + return nil +} + +func (x *Entry) GetOverlayableItem() *OverlayableItem { + if x != nil { + return x.OverlayableItem + } + return nil +} + +func (x *Entry) GetConfigValue() []*ConfigValue { + if x != nil { + return x.ConfigValue + } + return nil +} + +func (x *Entry) GetStagedId() *StagedId { + if x != nil { + return x.StagedId + } + return nil +} + +// A Configuration/Value pair. +type ConfigValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Config *Configuration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + Value *Value `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *ConfigValue) Reset() { + *x = ConfigValue{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConfigValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConfigValue) ProtoMessage() {} + +func (x *ConfigValue) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConfigValue.ProtoReflect.Descriptor instead. +func (*ConfigValue) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{16} +} + +func (x *ConfigValue) GetConfig() *Configuration { + if x != nil { + return x.Config + } + return nil +} + +func (x *ConfigValue) GetValue() *Value { + if x != nil { + return x.Value + } + return nil +} + +// The generic meta-data for every value in a resource table. +type Value struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the value was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comment associated with the value. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // Whether the value can be overridden. + Weak bool `protobuf:"varint,3,opt,name=weak,proto3" json:"weak,omitempty"` + // The value is either an Item or a CompoundValue. + // + // Types that are assignable to Value: + // *Value_Item + // *Value_CompoundValue + Value isValue_Value `protobuf_oneof:"value"` +} + +func (x *Value) Reset() { + *x = Value{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Value) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Value) ProtoMessage() {} + +func (x *Value) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Value.ProtoReflect.Descriptor instead. +func (*Value) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{17} +} + +func (x *Value) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Value) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Value) GetWeak() bool { + if x != nil { + return x.Weak + } + return false +} + +func (m *Value) GetValue() isValue_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *Value) GetItem() *Item { + if x, ok := x.GetValue().(*Value_Item); ok { + return x.Item + } + return nil +} + +func (x *Value) GetCompoundValue() *CompoundValue { + if x, ok := x.GetValue().(*Value_CompoundValue); ok { + return x.CompoundValue + } + return nil +} + +type isValue_Value interface { + isValue_Value() +} + +type Value_Item struct { + Item *Item `protobuf:"bytes,4,opt,name=item,proto3,oneof"` +} + +type Value_CompoundValue struct { + CompoundValue *CompoundValue `protobuf:"bytes,5,opt,name=compound_value,json=compoundValue,proto3,oneof"` +} + +func (*Value_Item) isValue_Value() {} + +func (*Value_CompoundValue) isValue_Value() {} + +// An Item is an abstract type. It represents a value that can appear inline in many places, such +// as XML attribute values or on the right hand side of style attribute definitions. The concrete +// type is one of the types below. Only one can be set. +type Item struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Value: + // *Item_Ref + // *Item_Str + // *Item_RawStr + // *Item_StyledStr + // *Item_File + // *Item_Id + // *Item_Prim + Value isItem_Value `protobuf_oneof:"value"` +} + +func (x *Item) Reset() { + *x = Item{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Item) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Item) ProtoMessage() {} + +func (x *Item) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Item.ProtoReflect.Descriptor instead. +func (*Item) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{18} +} + +func (m *Item) GetValue() isItem_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *Item) GetRef() *Reference { + if x, ok := x.GetValue().(*Item_Ref); ok { + return x.Ref + } + return nil +} + +func (x *Item) GetStr() *String { + if x, ok := x.GetValue().(*Item_Str); ok { + return x.Str + } + return nil +} + +func (x *Item) GetRawStr() *RawString { + if x, ok := x.GetValue().(*Item_RawStr); ok { + return x.RawStr + } + return nil +} + +func (x *Item) GetStyledStr() *StyledString { + if x, ok := x.GetValue().(*Item_StyledStr); ok { + return x.StyledStr + } + return nil +} + +func (x *Item) GetFile() *FileReference { + if x, ok := x.GetValue().(*Item_File); ok { + return x.File + } + return nil +} + +func (x *Item) GetId() *Id { + if x, ok := x.GetValue().(*Item_Id); ok { + return x.Id + } + return nil +} + +func (x *Item) GetPrim() *Primitive { + if x, ok := x.GetValue().(*Item_Prim); ok { + return x.Prim + } + return nil +} + +type isItem_Value interface { + isItem_Value() +} + +type Item_Ref struct { + Ref *Reference `protobuf:"bytes,1,opt,name=ref,proto3,oneof"` +} + +type Item_Str struct { + Str *String `protobuf:"bytes,2,opt,name=str,proto3,oneof"` +} + +type Item_RawStr struct { + RawStr *RawString `protobuf:"bytes,3,opt,name=raw_str,json=rawStr,proto3,oneof"` +} + +type Item_StyledStr struct { + StyledStr *StyledString `protobuf:"bytes,4,opt,name=styled_str,json=styledStr,proto3,oneof"` +} + +type Item_File struct { + File *FileReference `protobuf:"bytes,5,opt,name=file,proto3,oneof"` +} + +type Item_Id struct { + Id *Id `protobuf:"bytes,6,opt,name=id,proto3,oneof"` +} + +type Item_Prim struct { + Prim *Primitive `protobuf:"bytes,7,opt,name=prim,proto3,oneof"` +} + +func (*Item_Ref) isItem_Value() {} + +func (*Item_Str) isItem_Value() {} + +func (*Item_RawStr) isItem_Value() {} + +func (*Item_StyledStr) isItem_Value() {} + +func (*Item_File) isItem_Value() {} + +func (*Item_Id) isItem_Value() {} + +func (*Item_Prim) isItem_Value() {} + +// A CompoundValue is an abstract type. It represents a value that is a made of other values. +// These can only usually appear as top-level resources. The concrete type is one of the types +// below. Only one can be set. +type CompoundValue struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Value: + // *CompoundValue_Attr + // *CompoundValue_Style + // *CompoundValue_Styleable + // *CompoundValue_Array + // *CompoundValue_Plural + // *CompoundValue_Macro + Value isCompoundValue_Value `protobuf_oneof:"value"` +} + +func (x *CompoundValue) Reset() { + *x = CompoundValue{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CompoundValue) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CompoundValue) ProtoMessage() {} + +func (x *CompoundValue) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CompoundValue.ProtoReflect.Descriptor instead. +func (*CompoundValue) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{19} +} + +func (m *CompoundValue) GetValue() isCompoundValue_Value { + if m != nil { + return m.Value + } + return nil +} + +func (x *CompoundValue) GetAttr() *Attribute { + if x, ok := x.GetValue().(*CompoundValue_Attr); ok { + return x.Attr + } + return nil +} + +func (x *CompoundValue) GetStyle() *Style { + if x, ok := x.GetValue().(*CompoundValue_Style); ok { + return x.Style + } + return nil +} + +func (x *CompoundValue) GetStyleable() *Styleable { + if x, ok := x.GetValue().(*CompoundValue_Styleable); ok { + return x.Styleable + } + return nil +} + +func (x *CompoundValue) GetArray() *Array { + if x, ok := x.GetValue().(*CompoundValue_Array); ok { + return x.Array + } + return nil +} + +func (x *CompoundValue) GetPlural() *Plural { + if x, ok := x.GetValue().(*CompoundValue_Plural); ok { + return x.Plural + } + return nil +} + +func (x *CompoundValue) GetMacro() *MacroBody { + if x, ok := x.GetValue().(*CompoundValue_Macro); ok { + return x.Macro + } + return nil +} + +type isCompoundValue_Value interface { + isCompoundValue_Value() +} + +type CompoundValue_Attr struct { + Attr *Attribute `protobuf:"bytes,1,opt,name=attr,proto3,oneof"` +} + +type CompoundValue_Style struct { + Style *Style `protobuf:"bytes,2,opt,name=style,proto3,oneof"` +} + +type CompoundValue_Styleable struct { + Styleable *Styleable `protobuf:"bytes,3,opt,name=styleable,proto3,oneof"` +} + +type CompoundValue_Array struct { + Array *Array `protobuf:"bytes,4,opt,name=array,proto3,oneof"` +} + +type CompoundValue_Plural struct { + Plural *Plural `protobuf:"bytes,5,opt,name=plural,proto3,oneof"` +} + +type CompoundValue_Macro struct { + Macro *MacroBody `protobuf:"bytes,6,opt,name=macro,proto3,oneof"` +} + +func (*CompoundValue_Attr) isCompoundValue_Value() {} + +func (*CompoundValue_Style) isCompoundValue_Value() {} + +func (*CompoundValue_Styleable) isCompoundValue_Value() {} + +func (*CompoundValue_Array) isCompoundValue_Value() {} + +func (*CompoundValue_Plural) isCompoundValue_Value() {} + +func (*CompoundValue_Macro) isCompoundValue_Value() {} + +// Message holding a boolean, so it can be optionally encoded. +type Boolean struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Boolean) Reset() { + *x = Boolean{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Boolean) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Boolean) ProtoMessage() {} + +func (x *Boolean) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Boolean.ProtoReflect.Descriptor instead. +func (*Boolean) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{20} +} + +func (x *Boolean) GetValue() bool { + if x != nil { + return x.Value + } + return false +} + +// A value that is a reference to another resource. This reference can be by name or resource ID. +type Reference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type Reference_Type `protobuf:"varint,1,opt,name=type,proto3,enum=aapt.pb.Reference_Type" json:"type,omitempty"` + // The resource ID (0xPPTTEEEE) of the resource being referred. This is optional. + Id uint32 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` + // The name of the resource being referred. This is optional if the resource ID is set. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // Whether this reference is referencing a private resource (@*package:type/entry). + Private bool `protobuf:"varint,4,opt,name=private,proto3" json:"private,omitempty"` + // Whether this reference is dynamic. + IsDynamic *Boolean `protobuf:"bytes,5,opt,name=is_dynamic,json=isDynamic,proto3" json:"is_dynamic,omitempty"` + // The type flags used when compiling the reference. Used for substituting the contents of macros. + TypeFlags uint32 `protobuf:"varint,6,opt,name=type_flags,json=typeFlags,proto3" json:"type_flags,omitempty"` + // Whether raw string values would have been accepted in place of this reference definition. Used + // for substituting the contents of macros. + AllowRaw bool `protobuf:"varint,7,opt,name=allow_raw,json=allowRaw,proto3" json:"allow_raw,omitempty"` +} + +func (x *Reference) Reset() { + *x = Reference{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reference) ProtoMessage() {} + +func (x *Reference) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Reference.ProtoReflect.Descriptor instead. +func (*Reference) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{21} +} + +func (x *Reference) GetType() Reference_Type { + if x != nil { + return x.Type + } + return Reference_REFERENCE +} + +func (x *Reference) GetId() uint32 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *Reference) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Reference) GetPrivate() bool { + if x != nil { + return x.Private + } + return false +} + +func (x *Reference) GetIsDynamic() *Boolean { + if x != nil { + return x.IsDynamic + } + return nil +} + +func (x *Reference) GetTypeFlags() uint32 { + if x != nil { + return x.TypeFlags + } + return 0 +} + +func (x *Reference) GetAllowRaw() bool { + if x != nil { + return x.AllowRaw + } + return false +} + +// A value that represents an ID. This is just a placeholder, as ID values are used to occupy a +// resource ID (0xPPTTEEEE) as a unique identifier. Their value is unimportant. +type Id struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Id) Reset() { + *x = Id{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Id) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Id) ProtoMessage() {} + +func (x *Id) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Id.ProtoReflect.Descriptor instead. +func (*Id) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{22} +} + +// A value that is a string. +type String struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *String) Reset() { + *x = String{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *String) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*String) ProtoMessage() {} + +func (x *String) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use String.ProtoReflect.Descriptor instead. +func (*String) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{23} +} + +func (x *String) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// A value that is a raw string, which is unescaped/uninterpreted. This is typically used to +// represent the value of a style attribute before the attribute is compiled and the set of +// allowed values is known. +type RawString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *RawString) Reset() { + *x = RawString{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RawString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RawString) ProtoMessage() {} + +func (x *RawString) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RawString.ProtoReflect.Descriptor instead. +func (*RawString) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{24} +} + +func (x *RawString) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +// A string with styling information, like html tags that specify boldness, italics, etc. +type StyledString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The raw text of the string. + Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` + Span []*StyledString_Span `protobuf:"bytes,2,rep,name=span,proto3" json:"span,omitempty"` +} + +func (x *StyledString) Reset() { + *x = StyledString{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyledString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyledString) ProtoMessage() {} + +func (x *StyledString) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyledString.ProtoReflect.Descriptor instead. +func (*StyledString) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{25} +} + +func (x *StyledString) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *StyledString) GetSpan() []*StyledString_Span { + if x != nil { + return x.Span + } + return nil +} + +// A value that is a reference to an external entity, like an XML file or a PNG. +type FileReference struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Path to a file within the APK (typically res/type-config/entry.ext). + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + // The type of file this path points to. For UAM bundle, this cannot be + // BINARY_XML. + Type FileReference_Type `protobuf:"varint,2,opt,name=type,proto3,enum=aapt.pb.FileReference_Type" json:"type,omitempty"` +} + +func (x *FileReference) Reset() { + *x = FileReference{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FileReference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FileReference) ProtoMessage() {} + +func (x *FileReference) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FileReference.ProtoReflect.Descriptor instead. +func (*FileReference) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{26} +} + +func (x *FileReference) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *FileReference) GetType() FileReference_Type { + if x != nil { + return x.Type + } + return FileReference_UNKNOWN +} + +// A value that represents a primitive data type (float, int, boolean, etc.). +// Refer to Res_value in ResourceTypes.h for info on types and formatting +type Primitive struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to OneofValue: + // *Primitive_NullValue + // *Primitive_EmptyValue + // *Primitive_FloatValue + // *Primitive_DimensionValue + // *Primitive_FractionValue + // *Primitive_IntDecimalValue + // *Primitive_IntHexadecimalValue + // *Primitive_BooleanValue + // *Primitive_ColorArgb8Value + // *Primitive_ColorRgb8Value + // *Primitive_ColorArgb4Value + // *Primitive_ColorRgb4Value + // *Primitive_DimensionValueDeprecated + // *Primitive_FractionValueDeprecated + OneofValue isPrimitive_OneofValue `protobuf_oneof:"oneof_value"` +} + +func (x *Primitive) Reset() { + *x = Primitive{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive) ProtoMessage() {} + +func (x *Primitive) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Primitive.ProtoReflect.Descriptor instead. +func (*Primitive) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{27} +} + +func (m *Primitive) GetOneofValue() isPrimitive_OneofValue { + if m != nil { + return m.OneofValue + } + return nil +} + +func (x *Primitive) GetNullValue() *Primitive_NullType { + if x, ok := x.GetOneofValue().(*Primitive_NullValue); ok { + return x.NullValue + } + return nil +} + +func (x *Primitive) GetEmptyValue() *Primitive_EmptyType { + if x, ok := x.GetOneofValue().(*Primitive_EmptyValue); ok { + return x.EmptyValue + } + return nil +} + +func (x *Primitive) GetFloatValue() float32 { + if x, ok := x.GetOneofValue().(*Primitive_FloatValue); ok { + return x.FloatValue + } + return 0 +} + +func (x *Primitive) GetDimensionValue() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_DimensionValue); ok { + return x.DimensionValue + } + return 0 +} + +func (x *Primitive) GetFractionValue() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_FractionValue); ok { + return x.FractionValue + } + return 0 +} + +func (x *Primitive) GetIntDecimalValue() int32 { + if x, ok := x.GetOneofValue().(*Primitive_IntDecimalValue); ok { + return x.IntDecimalValue + } + return 0 +} + +func (x *Primitive) GetIntHexadecimalValue() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_IntHexadecimalValue); ok { + return x.IntHexadecimalValue + } + return 0 +} + +func (x *Primitive) GetBooleanValue() bool { + if x, ok := x.GetOneofValue().(*Primitive_BooleanValue); ok { + return x.BooleanValue + } + return false +} + +func (x *Primitive) GetColorArgb8Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorArgb8Value); ok { + return x.ColorArgb8Value + } + return 0 +} + +func (x *Primitive) GetColorRgb8Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorRgb8Value); ok { + return x.ColorRgb8Value + } + return 0 +} + +func (x *Primitive) GetColorArgb4Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorArgb4Value); ok { + return x.ColorArgb4Value + } + return 0 +} + +func (x *Primitive) GetColorRgb4Value() uint32 { + if x, ok := x.GetOneofValue().(*Primitive_ColorRgb4Value); ok { + return x.ColorRgb4Value + } + return 0 +} + +// Deprecated: Do not use. +func (x *Primitive) GetDimensionValueDeprecated() float32 { + if x, ok := x.GetOneofValue().(*Primitive_DimensionValueDeprecated); ok { + return x.DimensionValueDeprecated + } + return 0 +} + +// Deprecated: Do not use. +func (x *Primitive) GetFractionValueDeprecated() float32 { + if x, ok := x.GetOneofValue().(*Primitive_FractionValueDeprecated); ok { + return x.FractionValueDeprecated + } + return 0 +} + +type isPrimitive_OneofValue interface { + isPrimitive_OneofValue() +} + +type Primitive_NullValue struct { + NullValue *Primitive_NullType `protobuf:"bytes,1,opt,name=null_value,json=nullValue,proto3,oneof"` +} + +type Primitive_EmptyValue struct { + EmptyValue *Primitive_EmptyType `protobuf:"bytes,2,opt,name=empty_value,json=emptyValue,proto3,oneof"` +} + +type Primitive_FloatValue struct { + FloatValue float32 `protobuf:"fixed32,3,opt,name=float_value,json=floatValue,proto3,oneof"` +} + +type Primitive_DimensionValue struct { + DimensionValue uint32 `protobuf:"varint,13,opt,name=dimension_value,json=dimensionValue,proto3,oneof"` +} + +type Primitive_FractionValue struct { + FractionValue uint32 `protobuf:"varint,14,opt,name=fraction_value,json=fractionValue,proto3,oneof"` +} + +type Primitive_IntDecimalValue struct { + IntDecimalValue int32 `protobuf:"varint,6,opt,name=int_decimal_value,json=intDecimalValue,proto3,oneof"` +} + +type Primitive_IntHexadecimalValue struct { + IntHexadecimalValue uint32 `protobuf:"varint,7,opt,name=int_hexadecimal_value,json=intHexadecimalValue,proto3,oneof"` +} + +type Primitive_BooleanValue struct { + BooleanValue bool `protobuf:"varint,8,opt,name=boolean_value,json=booleanValue,proto3,oneof"` +} + +type Primitive_ColorArgb8Value struct { + ColorArgb8Value uint32 `protobuf:"varint,9,opt,name=color_argb8_value,json=colorArgb8Value,proto3,oneof"` +} + +type Primitive_ColorRgb8Value struct { + ColorRgb8Value uint32 `protobuf:"varint,10,opt,name=color_rgb8_value,json=colorRgb8Value,proto3,oneof"` +} + +type Primitive_ColorArgb4Value struct { + ColorArgb4Value uint32 `protobuf:"varint,11,opt,name=color_argb4_value,json=colorArgb4Value,proto3,oneof"` +} + +type Primitive_ColorRgb4Value struct { + ColorRgb4Value uint32 `protobuf:"varint,12,opt,name=color_rgb4_value,json=colorRgb4Value,proto3,oneof"` +} + +type Primitive_DimensionValueDeprecated struct { + // Deprecated: Do not use. + DimensionValueDeprecated float32 `protobuf:"fixed32,4,opt,name=dimension_value_deprecated,json=dimensionValueDeprecated,proto3,oneof"` +} + +type Primitive_FractionValueDeprecated struct { + // Deprecated: Do not use. + FractionValueDeprecated float32 `protobuf:"fixed32,5,opt,name=fraction_value_deprecated,json=fractionValueDeprecated,proto3,oneof"` +} + +func (*Primitive_NullValue) isPrimitive_OneofValue() {} + +func (*Primitive_EmptyValue) isPrimitive_OneofValue() {} + +func (*Primitive_FloatValue) isPrimitive_OneofValue() {} + +func (*Primitive_DimensionValue) isPrimitive_OneofValue() {} + +func (*Primitive_FractionValue) isPrimitive_OneofValue() {} + +func (*Primitive_IntDecimalValue) isPrimitive_OneofValue() {} + +func (*Primitive_IntHexadecimalValue) isPrimitive_OneofValue() {} + +func (*Primitive_BooleanValue) isPrimitive_OneofValue() {} + +func (*Primitive_ColorArgb8Value) isPrimitive_OneofValue() {} + +func (*Primitive_ColorRgb8Value) isPrimitive_OneofValue() {} + +func (*Primitive_ColorArgb4Value) isPrimitive_OneofValue() {} + +func (*Primitive_ColorRgb4Value) isPrimitive_OneofValue() {} + +func (*Primitive_DimensionValueDeprecated) isPrimitive_OneofValue() {} + +func (*Primitive_FractionValueDeprecated) isPrimitive_OneofValue() {} + +// A value that represents an XML attribute and what values it accepts. +type Attribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A bitmask of types that this XML attribute accepts. Corresponds to the flags in the + // enum FormatFlags. + FormatFlags uint32 `protobuf:"varint,1,opt,name=format_flags,json=formatFlags,proto3" json:"format_flags,omitempty"` + // The smallest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + MinInt int32 `protobuf:"varint,2,opt,name=min_int,json=minInt,proto3" json:"min_int,omitempty"` + // The largest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + MaxInt int32 `protobuf:"varint,3,opt,name=max_int,json=maxInt,proto3" json:"max_int,omitempty"` + // The set of enums/flags defined in this attribute. Only makes sense if the format includes + // either FormatFlags::ENUM or FormatFlags::FLAGS. Having both is an error. + Symbol []*Attribute_Symbol `protobuf:"bytes,4,rep,name=symbol,proto3" json:"symbol,omitempty"` +} + +func (x *Attribute) Reset() { + *x = Attribute{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Attribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Attribute) ProtoMessage() {} + +func (x *Attribute) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Attribute.ProtoReflect.Descriptor instead. +func (*Attribute) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{28} +} + +func (x *Attribute) GetFormatFlags() uint32 { + if x != nil { + return x.FormatFlags + } + return 0 +} + +func (x *Attribute) GetMinInt() int32 { + if x != nil { + return x.MinInt + } + return 0 +} + +func (x *Attribute) GetMaxInt() int32 { + if x != nil { + return x.MaxInt + } + return 0 +} + +func (x *Attribute) GetSymbol() []*Attribute_Symbol { + if x != nil { + return x.Symbol + } + return nil +} + +// A value that represents a style. +type Style struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The optinal style from which this style inherits attributes. + Parent *Reference `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + // The source file information of the parent inheritance declaration. + ParentSource *Source `protobuf:"bytes,2,opt,name=parent_source,json=parentSource,proto3" json:"parent_source,omitempty"` + // The set of XML attribute/value pairs for this style. + Entry []*Style_Entry `protobuf:"bytes,3,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Style) Reset() { + *x = Style{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Style) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Style) ProtoMessage() {} + +func (x *Style) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Style.ProtoReflect.Descriptor instead. +func (*Style) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{29} +} + +func (x *Style) GetParent() *Reference { + if x != nil { + return x.Parent + } + return nil +} + +func (x *Style) GetParentSource() *Source { + if x != nil { + return x.ParentSource + } + return nil +} + +func (x *Style) GetEntry() []*Style_Entry { + if x != nil { + return x.Entry + } + return nil +} + +// A value that represents a XML resource. These are not real resources and +// only end up as Java fields in the generated R.java. They do not end up in the binary ARSC file. +type Styleable struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The set of attribute declarations. + Entry []*Styleable_Entry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Styleable) Reset() { + *x = Styleable{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Styleable) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Styleable) ProtoMessage() {} + +func (x *Styleable) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Styleable.ProtoReflect.Descriptor instead. +func (*Styleable) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{30} +} + +func (x *Styleable) GetEntry() []*Styleable_Entry { + if x != nil { + return x.Entry + } + return nil +} + +// A value that represents an array of resource values. +type Array struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The list of array elements. + Element []*Array_Element `protobuf:"bytes,1,rep,name=element,proto3" json:"element,omitempty"` +} + +func (x *Array) Reset() { + *x = Array{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Array) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Array) ProtoMessage() {} + +func (x *Array) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Array.ProtoReflect.Descriptor instead. +func (*Array) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{31} +} + +func (x *Array) GetElement() []*Array_Element { + if x != nil { + return x.Element + } + return nil +} + +// A value that represents a string and its many variations based on plurality. +type Plural struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The set of arity/plural mappings. + Entry []*Plural_Entry `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` +} + +func (x *Plural) Reset() { + *x = Plural{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Plural) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Plural) ProtoMessage() {} + +func (x *Plural) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Plural.ProtoReflect.Descriptor instead. +func (*Plural) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{32} +} + +func (x *Plural) GetEntry() []*Plural_Entry { + if x != nil { + return x.Entry + } + return nil +} + +// Defines an abstract XmlNode that must be either an XmlElement, or +// a text node represented by a string. +type XmlNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Node: + // *XmlNode_Element + // *XmlNode_Text + Node isXmlNode_Node `protobuf_oneof:"node"` + // Source line and column info. + Source *SourcePosition `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *XmlNode) Reset() { + *x = XmlNode{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlNode) ProtoMessage() {} + +func (x *XmlNode) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlNode.ProtoReflect.Descriptor instead. +func (*XmlNode) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{33} +} + +func (m *XmlNode) GetNode() isXmlNode_Node { + if m != nil { + return m.Node + } + return nil +} + +func (x *XmlNode) GetElement() *XmlElement { + if x, ok := x.GetNode().(*XmlNode_Element); ok { + return x.Element + } + return nil +} + +func (x *XmlNode) GetText() string { + if x, ok := x.GetNode().(*XmlNode_Text); ok { + return x.Text + } + return "" +} + +func (x *XmlNode) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +type isXmlNode_Node interface { + isXmlNode_Node() +} + +type XmlNode_Element struct { + Element *XmlElement `protobuf:"bytes,1,opt,name=element,proto3,oneof"` +} + +type XmlNode_Text struct { + Text string `protobuf:"bytes,2,opt,name=text,proto3,oneof"` +} + +func (*XmlNode_Element) isXmlNode_Node() {} + +func (*XmlNode_Text) isXmlNode_Node() {} + +// An in an XML document. +type XmlElement struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Namespaces defined on this element. + NamespaceDeclaration []*XmlNamespace `protobuf:"bytes,1,rep,name=namespace_declaration,json=namespaceDeclaration,proto3" json:"namespace_declaration,omitempty"` + // The namespace URI of this element. + NamespaceUri string `protobuf:"bytes,2,opt,name=namespace_uri,json=namespaceUri,proto3" json:"namespace_uri,omitempty"` + // The name of this element. + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // The attributes of this element. + Attribute []*XmlAttribute `protobuf:"bytes,4,rep,name=attribute,proto3" json:"attribute,omitempty"` + // The children of this element. + Child []*XmlNode `protobuf:"bytes,5,rep,name=child,proto3" json:"child,omitempty"` +} + +func (x *XmlElement) Reset() { + *x = XmlElement{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlElement) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlElement) ProtoMessage() {} + +func (x *XmlElement) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlElement.ProtoReflect.Descriptor instead. +func (*XmlElement) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{34} +} + +func (x *XmlElement) GetNamespaceDeclaration() []*XmlNamespace { + if x != nil { + return x.NamespaceDeclaration + } + return nil +} + +func (x *XmlElement) GetNamespaceUri() string { + if x != nil { + return x.NamespaceUri + } + return "" +} + +func (x *XmlElement) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *XmlElement) GetAttribute() []*XmlAttribute { + if x != nil { + return x.Attribute + } + return nil +} + +func (x *XmlElement) GetChild() []*XmlNode { + if x != nil { + return x.Child + } + return nil +} + +// A namespace declaration on an XmlElement (xmlns:android="http://..."). +type XmlNamespace struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + // Source line and column info. + Source *SourcePosition `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *XmlNamespace) Reset() { + *x = XmlNamespace{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlNamespace) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlNamespace) ProtoMessage() {} + +func (x *XmlNamespace) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlNamespace.ProtoReflect.Descriptor instead. +func (*XmlNamespace) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{35} +} + +func (x *XmlNamespace) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *XmlNamespace) GetUri() string { + if x != nil { + return x.Uri + } + return "" +} + +func (x *XmlNamespace) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +// An attribute defined on an XmlElement (android:text="..."). +type XmlAttribute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NamespaceUri string `protobuf:"bytes,1,opt,name=namespace_uri,json=namespaceUri,proto3" json:"namespace_uri,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + // Source line and column info. + Source *SourcePosition `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` + // The optional resource ID (0xPPTTEEEE) of the attribute. + ResourceId uint32 `protobuf:"varint,5,opt,name=resource_id,json=resourceId,proto3" json:"resource_id,omitempty"` + // The optional interpreted/compiled version of the `value` string. + CompiledItem *Item `protobuf:"bytes,6,opt,name=compiled_item,json=compiledItem,proto3" json:"compiled_item,omitempty"` +} + +func (x *XmlAttribute) Reset() { + *x = XmlAttribute{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *XmlAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*XmlAttribute) ProtoMessage() {} + +func (x *XmlAttribute) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use XmlAttribute.ProtoReflect.Descriptor instead. +func (*XmlAttribute) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{36} +} + +func (x *XmlAttribute) GetNamespaceUri() string { + if x != nil { + return x.NamespaceUri + } + return "" +} + +func (x *XmlAttribute) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *XmlAttribute) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +func (x *XmlAttribute) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +func (x *XmlAttribute) GetResourceId() uint32 { + if x != nil { + return x.ResourceId + } + return 0 +} + +func (x *XmlAttribute) GetCompiledItem() *Item { + if x != nil { + return x.CompiledItem + } + return nil +} + +type MacroBody struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + RawString string `protobuf:"bytes,1,opt,name=raw_string,json=rawString,proto3" json:"raw_string,omitempty"` + StyleString *StyleString `protobuf:"bytes,2,opt,name=style_string,json=styleString,proto3" json:"style_string,omitempty"` + UntranslatableSections []*UntranslatableSection `protobuf:"bytes,3,rep,name=untranslatable_sections,json=untranslatableSections,proto3" json:"untranslatable_sections,omitempty"` + NamespaceStack []*NamespaceAlias `protobuf:"bytes,4,rep,name=namespace_stack,json=namespaceStack,proto3" json:"namespace_stack,omitempty"` + Source *SourcePosition `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` +} + +func (x *MacroBody) Reset() { + *x = MacroBody{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MacroBody) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MacroBody) ProtoMessage() {} + +func (x *MacroBody) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MacroBody.ProtoReflect.Descriptor instead. +func (*MacroBody) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{37} +} + +func (x *MacroBody) GetRawString() string { + if x != nil { + return x.RawString + } + return "" +} + +func (x *MacroBody) GetStyleString() *StyleString { + if x != nil { + return x.StyleString + } + return nil +} + +func (x *MacroBody) GetUntranslatableSections() []*UntranslatableSection { + if x != nil { + return x.UntranslatableSections + } + return nil +} + +func (x *MacroBody) GetNamespaceStack() []*NamespaceAlias { + if x != nil { + return x.NamespaceStack + } + return nil +} + +func (x *MacroBody) GetSource() *SourcePosition { + if x != nil { + return x.Source + } + return nil +} + +type NamespaceAlias struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` + PackageName string `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"` + IsPrivate bool `protobuf:"varint,3,opt,name=is_private,json=isPrivate,proto3" json:"is_private,omitempty"` +} + +func (x *NamespaceAlias) Reset() { + *x = NamespaceAlias{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NamespaceAlias) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NamespaceAlias) ProtoMessage() {} + +func (x *NamespaceAlias) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NamespaceAlias.ProtoReflect.Descriptor instead. +func (*NamespaceAlias) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{38} +} + +func (x *NamespaceAlias) GetPrefix() string { + if x != nil { + return x.Prefix + } + return "" +} + +func (x *NamespaceAlias) GetPackageName() string { + if x != nil { + return x.PackageName + } + return "" +} + +func (x *NamespaceAlias) GetIsPrivate() bool { + if x != nil { + return x.IsPrivate + } + return false +} + +type StyleString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Str string `protobuf:"bytes,1,opt,name=str,proto3" json:"str,omitempty"` + Spans []*StyleString_Span `protobuf:"bytes,2,rep,name=spans,proto3" json:"spans,omitempty"` +} + +func (x *StyleString) Reset() { + *x = StyleString{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyleString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyleString) ProtoMessage() {} + +func (x *StyleString) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyleString.ProtoReflect.Descriptor instead. +func (*StyleString) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{39} +} + +func (x *StyleString) GetStr() string { + if x != nil { + return x.Str + } + return "" +} + +func (x *StyleString) GetSpans() []*StyleString_Span { + if x != nil { + return x.Spans + } + return nil +} + +type UntranslatableSection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartIndex uint64 `protobuf:"varint,1,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"` + EndIndex uint64 `protobuf:"varint,2,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"` +} + +func (x *UntranslatableSection) Reset() { + *x = UntranslatableSection{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UntranslatableSection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UntranslatableSection) ProtoMessage() {} + +func (x *UntranslatableSection) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UntranslatableSection.ProtoReflect.Descriptor instead. +func (*UntranslatableSection) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{40} +} + +func (x *UntranslatableSection) GetStartIndex() uint64 { + if x != nil { + return x.StartIndex + } + return 0 +} + +func (x *UntranslatableSection) GetEndIndex() uint64 { + if x != nil { + return x.EndIndex + } + return 0 +} + +// A Span marks a region of the string text that is styled. +type StyledString_Span struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The name of the tag, and its attributes, encoded as follows: + // tag_name;attr1=value1;attr2=value2;[...] + Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` + // The first character position this span applies to, in UTF-16 offset. + FirstChar uint32 `protobuf:"varint,2,opt,name=first_char,json=firstChar,proto3" json:"first_char,omitempty"` + // The last character position this span applies to, in UTF-16 offset. + LastChar uint32 `protobuf:"varint,3,opt,name=last_char,json=lastChar,proto3" json:"last_char,omitempty"` +} + +func (x *StyledString_Span) Reset() { + *x = StyledString_Span{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyledString_Span) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyledString_Span) ProtoMessage() {} + +func (x *StyledString_Span) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyledString_Span.ProtoReflect.Descriptor instead. +func (*StyledString_Span) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{25, 0} +} + +func (x *StyledString_Span) GetTag() string { + if x != nil { + return x.Tag + } + return "" +} + +func (x *StyledString_Span) GetFirstChar() uint32 { + if x != nil { + return x.FirstChar + } + return 0 +} + +func (x *StyledString_Span) GetLastChar() uint32 { + if x != nil { + return x.LastChar + } + return 0 +} + +type Primitive_NullType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Primitive_NullType) Reset() { + *x = Primitive_NullType{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive_NullType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive_NullType) ProtoMessage() {} + +func (x *Primitive_NullType) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Primitive_NullType.ProtoReflect.Descriptor instead. +func (*Primitive_NullType) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{27, 0} +} + +type Primitive_EmptyType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Primitive_EmptyType) Reset() { + *x = Primitive_EmptyType{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Primitive_EmptyType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Primitive_EmptyType) ProtoMessage() {} + +func (x *Primitive_EmptyType) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Primitive_EmptyType.ProtoReflect.Descriptor instead. +func (*Primitive_EmptyType) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{27, 1} +} + +// A Symbol used to represent an enum or a flag. +type Attribute_Symbol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the enum/flag item was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the enum or flag. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The name of the enum/flag as a reference. Enums/flag items are generated as ID resource + // values. + Name *Reference `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + // The value of the enum/flag. + Value uint32 `protobuf:"varint,4,opt,name=value,proto3" json:"value,omitempty"` + // The data type of the enum/flag as defined in android::Res_value. + Type uint32 `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *Attribute_Symbol) Reset() { + *x = Attribute_Symbol{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Attribute_Symbol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Attribute_Symbol) ProtoMessage() {} + +func (x *Attribute_Symbol) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Attribute_Symbol.ProtoReflect.Descriptor instead. +func (*Attribute_Symbol) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{28, 0} +} + +func (x *Attribute_Symbol) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Attribute_Symbol) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Attribute_Symbol) GetName() *Reference { + if x != nil { + return x.Name + } + return nil +} + +func (x *Attribute_Symbol) GetValue() uint32 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *Attribute_Symbol) GetType() uint32 { + if x != nil { + return x.Type + } + return 0 +} + +// An XML attribute/value pair defined in the style. +type Style_Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the entry was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the entry. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // A reference to the XML attribute. + Key *Reference `protobuf:"bytes,3,opt,name=key,proto3" json:"key,omitempty"` + // The Item defined for this XML attribute. + Item *Item `protobuf:"bytes,4,opt,name=item,proto3" json:"item,omitempty"` +} + +func (x *Style_Entry) Reset() { + *x = Style_Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Style_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Style_Entry) ProtoMessage() {} + +func (x *Style_Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Style_Entry.ProtoReflect.Descriptor instead. +func (*Style_Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{29, 0} +} + +func (x *Style_Entry) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Style_Entry) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Style_Entry) GetKey() *Reference { + if x != nil { + return x.Key + } + return nil +} + +func (x *Style_Entry) GetItem() *Item { + if x != nil { + return x.Item + } + return nil +} + +// An attribute defined for this styleable. +type Styleable_Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the attribute was defined within the block. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the declaration. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The reference to the attribute. + Attr *Reference `protobuf:"bytes,3,opt,name=attr,proto3" json:"attr,omitempty"` +} + +func (x *Styleable_Entry) Reset() { + *x = Styleable_Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Styleable_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Styleable_Entry) ProtoMessage() {} + +func (x *Styleable_Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Styleable_Entry.ProtoReflect.Descriptor instead. +func (*Styleable_Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{30, 0} +} + +func (x *Styleable_Entry) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Styleable_Entry) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Styleable_Entry) GetAttr() *Reference { + if x != nil { + return x.Attr + } + return nil +} + +// A single element of the array. +type Array_Element struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the element was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the element. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The value assigned to this element. + Item *Item `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` +} + +func (x *Array_Element) Reset() { + *x = Array_Element{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Array_Element) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Array_Element) ProtoMessage() {} + +func (x *Array_Element) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Array_Element.ProtoReflect.Descriptor instead. +func (*Array_Element) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{31, 0} +} + +func (x *Array_Element) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Array_Element) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Array_Element) GetItem() *Item { + if x != nil { + return x.Item + } + return nil +} + +// The plural value for a given arity. +type Plural_Entry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Where the plural was defined. + Source *Source `protobuf:"bytes,1,opt,name=source,proto3" json:"source,omitempty"` + // Any comments associated with the plural. + Comment string `protobuf:"bytes,2,opt,name=comment,proto3" json:"comment,omitempty"` + // The arity of the plural. + Arity Plural_Arity `protobuf:"varint,3,opt,name=arity,proto3,enum=aapt.pb.Plural_Arity" json:"arity,omitempty"` + // The value assigned to this plural. + Item *Item `protobuf:"bytes,4,opt,name=item,proto3" json:"item,omitempty"` +} + +func (x *Plural_Entry) Reset() { + *x = Plural_Entry{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Plural_Entry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Plural_Entry) ProtoMessage() {} + +func (x *Plural_Entry) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Plural_Entry.ProtoReflect.Descriptor instead. +func (*Plural_Entry) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{32, 0} +} + +func (x *Plural_Entry) GetSource() *Source { + if x != nil { + return x.Source + } + return nil +} + +func (x *Plural_Entry) GetComment() string { + if x != nil { + return x.Comment + } + return "" +} + +func (x *Plural_Entry) GetArity() Plural_Arity { + if x != nil { + return x.Arity + } + return Plural_ZERO +} + +func (x *Plural_Entry) GetItem() *Item { + if x != nil { + return x.Item + } + return nil +} + +type StyleString_Span struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + StartIndex uint32 `protobuf:"varint,2,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"` + EndIndex uint32 `protobuf:"varint,3,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"` +} + +func (x *StyleString_Span) Reset() { + *x = StyleString_Span{} + if protoimpl.UnsafeEnabled { + mi := &file_Resources_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StyleString_Span) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StyleString_Span) ProtoMessage() {} + +func (x *StyleString_Span) ProtoReflect() protoreflect.Message { + mi := &file_Resources_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StyleString_Span.ProtoReflect.Descriptor instead. +func (*StyleString_Span) Descriptor() ([]byte, []int) { + return file_Resources_proto_rawDescGZIP(), []int{39, 0} +} + +func (x *StyleString_Span) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StyleString_Span) GetStartIndex() uint32 { + if x != nil { + return x.StartIndex + } + return 0 +} + +func (x *StyleString_Span) GetEndIndex() uint32 { + if x != nil { + return x.EndIndex + } + return 0 +} + +var File_Resources_proto protoreflect.FileDescriptor + +var file_Resources_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x07, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x1a, 0x13, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x20, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x56, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x6e, 0x65, 0x4e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x58, 0x0a, 0x06, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x69, 0x64, 0x78, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x70, 0x61, 0x74, 0x68, 0x49, 0x64, 0x78, 0x12, 0x33, + 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x3f, 0x0a, 0x0f, 0x54, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6e, 0x67, 0x65, + 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x6f, 0x6f, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xee, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x07, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, + 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x0b, 0x6f, 0x76, 0x65, 0x72, + 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x0b, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, + 0x12, 0x43, 0x0a, 0x10, 0x74, 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, + 0x72, 0x69, 0x6e, 0x74, 0x52, 0x0f, 0x74, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, + 0x70, 0x72, 0x69, 0x6e, 0x74, 0x22, 0x1b, 0x0a, 0x09, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x82, 0x01, 0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x31, + 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x49, 0x64, 0x52, 0x09, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x49, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x18, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x6a, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x52, 0x06, 0x74, 0x79, 0x70, + 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xce, 0x01, + 0x0a, 0x0a, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x05, + 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x27, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x41, 0x70, 0x69, 0x22, + 0x2d, 0x0a, 0x05, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, + 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x02, 0x22, 0x4d, + 0x0a, 0x08, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x65, 0x77, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x60, 0x0a, + 0x0b, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x63, 0x74, + 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x22, + 0xbe, 0x02, 0x0a, 0x0f, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, + 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x37, 0x0a, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, + 0x27, 0x0a, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, + 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x78, 0x22, 0x85, 0x01, 0x0a, 0x06, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, + 0x06, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x45, 0x4e, 0x44, 0x4f, 0x52, 0x10, + 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x44, 0x55, 0x43, 0x54, 0x10, 0x04, 0x12, 0x0d, + 0x0a, 0x09, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x05, 0x12, 0x07, 0x0a, + 0x03, 0x4f, 0x44, 0x4d, 0x10, 0x06, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x45, 0x4d, 0x10, 0x07, 0x12, + 0x09, 0x0a, 0x05, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x10, 0x09, + 0x22, 0x50, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, + 0x49, 0x64, 0x22, 0x19, 0x0a, 0x07, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0xdb, 0x02, + 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x49, 0x64, 0x52, 0x07, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2e, 0x0a, + 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6e, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x77, + 0x4e, 0x65, 0x77, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4e, 0x65, 0x77, 0x12, 0x43, 0x0a, + 0x10, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x74, 0x65, + 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x0f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x37, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0b, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x09, 0x73, + 0x74, 0x61, 0x67, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x67, 0x65, 0x64, 0x49, + 0x64, 0x52, 0x08, 0x73, 0x74, 0x61, 0x67, 0x65, 0x64, 0x49, 0x64, 0x22, 0x63, 0x0a, 0x0b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xcd, 0x01, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x77, 0x65, 0x61, + 0x6b, 0x12, 0x23, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x48, 0x00, + 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, + 0x6e, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, + 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0xba, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x03, 0x72, 0x65, 0x66, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x03, 0x72, 0x65, + 0x66, 0x12, 0x23, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, + 0x00, 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x74, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x61, 0x77, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x06, 0x72, + 0x61, 0x77, 0x53, 0x74, 0x72, 0x12, 0x36, 0x0a, 0x0a, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x5f, + 0x73, 0x74, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x72, 0x12, 0x2c, 0x0a, + 0x04, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, + 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x04, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x49, 0x64, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x72, + 0x69, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x48, 0x00, 0x52, 0x04, + 0x70, 0x72, 0x69, 0x6d, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 0x02, + 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x28, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x48, 0x00, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x12, 0x26, 0x0a, 0x05, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x12, 0x32, 0x0a, 0x09, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x09, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, + 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x29, 0x0a, + 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x48, 0x00, + 0x52, 0x06, 0x70, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x05, 0x6d, 0x61, 0x63, 0x72, + 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x42, 0x6f, 0x64, 0x79, 0x48, 0x00, 0x52, 0x05, 0x6d, + 0x61, 0x63, 0x72, 0x6f, 0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1f, 0x0a, + 0x07, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x89, + 0x02, 0x0a, 0x09, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x79, + 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x52, 0x09, 0x69, + 0x73, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x79, + 0x70, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x5f, 0x72, 0x61, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x52, 0x61, 0x77, 0x22, 0x24, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, + 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x41, + 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x10, 0x01, 0x22, 0x04, 0x0a, 0x02, 0x49, 0x64, + 0x22, 0x1e, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x22, 0x21, 0x0a, 0x09, 0x52, 0x61, 0x77, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x73, 0x70, + 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, + 0x53, 0x70, 0x61, 0x6e, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x1a, 0x54, 0x0a, 0x04, 0x53, 0x70, + 0x61, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x74, 0x61, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x63, 0x68, + 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x69, 0x72, 0x73, 0x74, 0x43, + 0x68, 0x61, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x72, + 0x22, 0x91, 0x01, 0x0a, 0x0d, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, + 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x2f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3b, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, + 0x50, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f, + 0x58, 0x4d, 0x4c, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x58, + 0x4d, 0x4c, 0x10, 0x03, 0x22, 0xee, 0x05, 0x0a, 0x09, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x3f, 0x0a, 0x0b, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, + 0x50, 0x72, 0x69, 0x6d, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x29, 0x0a, 0x0f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, + 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x27, 0x0a, 0x0e, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x72, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x5f, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, + 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x15, 0x69, 0x6e, 0x74, 0x5f, 0x68, 0x65, + 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x13, 0x69, 0x6e, 0x74, 0x48, 0x65, 0x78, 0x61, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x25, 0x0a, 0x0d, + 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x61, 0x72, 0x67, + 0x62, 0x38, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, + 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x41, 0x72, 0x67, 0x62, 0x38, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x38, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x67, 0x62, 0x38, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, + 0x11, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x61, 0x72, 0x67, 0x62, 0x34, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x41, 0x72, 0x67, 0x62, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x72, 0x67, 0x62, 0x34, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x52, 0x67, + 0x62, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x42, 0x0a, 0x1a, 0x64, 0x69, 0x6d, 0x65, 0x6e, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x42, 0x02, 0x18, 0x01, 0x48, + 0x00, 0x52, 0x18, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x19, 0x66, + 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x65, + 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x42, 0x02, + 0x18, 0x01, 0x48, 0x00, 0x52, 0x17, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x0a, 0x0a, + 0x08, 0x4e, 0x75, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x0b, 0x0a, 0x09, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xda, 0x03, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x66, 0x6c, + 0x61, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x6d, 0x61, + 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x74, 0x12, + 0x17, 0x0a, 0x07, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x6d, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, + 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x2e, 0x53, 0x79, 0x6d, + 0x62, 0x6f, 0x6c, 0x52, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x1a, 0x9d, 0x01, 0x0a, 0x06, + 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x0b, + 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, 0xff, 0xff, 0x03, + 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x01, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x49, + 0x4e, 0x54, 0x45, 0x47, 0x45, 0x52, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x4c, + 0x45, 0x41, 0x4e, 0x10, 0x08, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x10, + 0x12, 0x09, 0x0a, 0x05, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x20, 0x12, 0x0d, 0x0a, 0x09, 0x44, + 0x49, 0x4d, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x40, 0x12, 0x0d, 0x0a, 0x08, 0x46, 0x52, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x80, 0x01, 0x12, 0x0a, 0x0a, 0x04, 0x45, 0x4e, 0x55, + 0x4d, 0x10, 0x80, 0x80, 0x04, 0x12, 0x0b, 0x0a, 0x05, 0x46, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x80, + 0x80, 0x08, 0x22, 0xab, 0x02, 0x0a, 0x05, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2a, + 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x93, 0x01, 0x0a, 0x05, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x22, 0xaf, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, + 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x61, 0x62, 0x6c, + 0x65, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x72, + 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, + 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x22, 0xaa, 0x01, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x07, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x2e, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x6f, + 0x0a, 0x07, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x04, + 0x69, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, + 0x95, 0x02, 0x0a, 0x06, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x12, 0x2b, 0x0a, 0x05, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, + 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x75, 0x72, 0x61, 0x6c, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x1a, 0x9a, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x27, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, + 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, + 0x75, 0x72, 0x61, 0x6c, 0x2e, 0x41, 0x72, 0x69, 0x74, 0x79, 0x52, 0x05, 0x61, 0x72, 0x69, 0x74, + 0x79, 0x12, 0x21, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, + 0x69, 0x74, 0x65, 0x6d, 0x22, 0x41, 0x0a, 0x05, 0x41, 0x72, 0x69, 0x74, 0x79, 0x12, 0x08, 0x0a, + 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x45, 0x57, + 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x41, 0x4e, 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, + 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x05, 0x22, 0x89, 0x01, 0x0a, 0x07, 0x58, 0x6d, 0x6c, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, + 0x6d, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6e, + 0x6f, 0x64, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x0a, 0x58, 0x6d, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x15, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, + 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, 0x6d, 0x6c, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x14, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x44, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x55, 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x61, 0x70, + 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, 0x6d, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x05, + 0x63, 0x68, 0x69, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x61, + 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x58, 0x6d, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x63, + 0x68, 0x69, 0x6c, 0x64, 0x22, 0x69, 0x0a, 0x0c, 0x58, 0x6d, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x2f, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, + 0xe3, 0x01, 0x0a, 0x0c, 0x58, 0x6d, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x75, 0x72, + 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x55, 0x72, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, + 0x64, 0x12, 0x32, 0x0a, 0x0d, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x69, 0x74, + 0x65, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, + 0x64, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xaf, 0x02, 0x0a, 0x09, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x42, + 0x6f, 0x64, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x61, 0x77, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x61, 0x77, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x12, 0x37, 0x0a, 0x0c, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, + 0x70, 0x62, 0x2e, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0b, + 0x73, 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x57, 0x0a, 0x17, 0x75, + 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, + 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x16, 0x75, 0x6e, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, + 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x6a, 0x0a, 0x0e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x50, 0x72, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x0b, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x73, 0x74, 0x72, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x61, 0x70, 0x74, 0x2e, 0x70, 0x62, 0x2e, 0x53, + 0x74, 0x79, 0x6c, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x70, 0x61, 0x6e, 0x52, + 0x05, 0x73, 0x70, 0x61, 0x6e, 0x73, 0x1a, 0x58, 0x0a, 0x04, 0x53, 0x70, 0x61, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, + 0x22, 0x55, 0x0a, 0x15, 0x55, 0x6e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, + 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x65, + 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x09, 0x5a, 0x07, 0x2e, 0x2f, 0x3b, 0x6d, 0x61, + 0x69, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_Resources_proto_rawDescOnce sync.Once + file_Resources_proto_rawDescData = file_Resources_proto_rawDesc +) + +func file_Resources_proto_rawDescGZIP() []byte { + file_Resources_proto_rawDescOnce.Do(func() { + file_Resources_proto_rawDescData = protoimpl.X.CompressGZIP(file_Resources_proto_rawDescData) + }) + return file_Resources_proto_rawDescData +} + +var file_Resources_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_Resources_proto_msgTypes = make([]protoimpl.MessageInfo, 50) +var file_Resources_proto_goTypes = []interface{}{ + (Visibility_Level)(0), // 0: aapt.pb.Visibility.Level + (OverlayableItem_Policy)(0), // 1: aapt.pb.OverlayableItem.Policy + (Reference_Type)(0), // 2: aapt.pb.Reference.Type + (FileReference_Type)(0), // 3: aapt.pb.FileReference.Type + (Attribute_FormatFlags)(0), // 4: aapt.pb.Attribute.FormatFlags + (Plural_Arity)(0), // 5: aapt.pb.Plural.Arity + (*StringPool)(nil), // 6: aapt.pb.StringPool + (*SourcePosition)(nil), // 7: aapt.pb.SourcePosition + (*Source)(nil), // 8: aapt.pb.Source + (*ToolFingerprint)(nil), // 9: aapt.pb.ToolFingerprint + (*ResourceTable)(nil), // 10: aapt.pb.ResourceTable + (*PackageId)(nil), // 11: aapt.pb.PackageId + (*Package)(nil), // 12: aapt.pb.Package + (*TypeId)(nil), // 13: aapt.pb.TypeId + (*Type)(nil), // 14: aapt.pb.Type + (*Visibility)(nil), // 15: aapt.pb.Visibility + (*AllowNew)(nil), // 16: aapt.pb.AllowNew + (*Overlayable)(nil), // 17: aapt.pb.Overlayable + (*OverlayableItem)(nil), // 18: aapt.pb.OverlayableItem + (*StagedId)(nil), // 19: aapt.pb.StagedId + (*EntryId)(nil), // 20: aapt.pb.EntryId + (*Entry)(nil), // 21: aapt.pb.Entry + (*ConfigValue)(nil), // 22: aapt.pb.ConfigValue + (*Value)(nil), // 23: aapt.pb.Value + (*Item)(nil), // 24: aapt.pb.Item + (*CompoundValue)(nil), // 25: aapt.pb.CompoundValue + (*Boolean)(nil), // 26: aapt.pb.Boolean + (*Reference)(nil), // 27: aapt.pb.Reference + (*Id)(nil), // 28: aapt.pb.Id + (*String)(nil), // 29: aapt.pb.String + (*RawString)(nil), // 30: aapt.pb.RawString + (*StyledString)(nil), // 31: aapt.pb.StyledString + (*FileReference)(nil), // 32: aapt.pb.FileReference + (*Primitive)(nil), // 33: aapt.pb.Primitive + (*Attribute)(nil), // 34: aapt.pb.Attribute + (*Style)(nil), // 35: aapt.pb.Style + (*Styleable)(nil), // 36: aapt.pb.Styleable + (*Array)(nil), // 37: aapt.pb.Array + (*Plural)(nil), // 38: aapt.pb.Plural + (*XmlNode)(nil), // 39: aapt.pb.XmlNode + (*XmlElement)(nil), // 40: aapt.pb.XmlElement + (*XmlNamespace)(nil), // 41: aapt.pb.XmlNamespace + (*XmlAttribute)(nil), // 42: aapt.pb.XmlAttribute + (*MacroBody)(nil), // 43: aapt.pb.MacroBody + (*NamespaceAlias)(nil), // 44: aapt.pb.NamespaceAlias + (*StyleString)(nil), // 45: aapt.pb.StyleString + (*UntranslatableSection)(nil), // 46: aapt.pb.UntranslatableSection + (*StyledString_Span)(nil), // 47: aapt.pb.StyledString.Span + (*Primitive_NullType)(nil), // 48: aapt.pb.Primitive.NullType + (*Primitive_EmptyType)(nil), // 49: aapt.pb.Primitive.EmptyType + (*Attribute_Symbol)(nil), // 50: aapt.pb.Attribute.Symbol + (*Style_Entry)(nil), // 51: aapt.pb.Style.Entry + (*Styleable_Entry)(nil), // 52: aapt.pb.Styleable.Entry + (*Array_Element)(nil), // 53: aapt.pb.Array.Element + (*Plural_Entry)(nil), // 54: aapt.pb.Plural.Entry + (*StyleString_Span)(nil), // 55: aapt.pb.StyleString.Span + (*Configuration)(nil), // 56: aapt.pb.Configuration +} +var file_Resources_proto_depIdxs = []int32{ + 7, // 0: aapt.pb.Source.position:type_name -> aapt.pb.SourcePosition + 6, // 1: aapt.pb.ResourceTable.source_pool:type_name -> aapt.pb.StringPool + 12, // 2: aapt.pb.ResourceTable.package:type_name -> aapt.pb.Package + 17, // 3: aapt.pb.ResourceTable.overlayable:type_name -> aapt.pb.Overlayable + 9, // 4: aapt.pb.ResourceTable.tool_fingerprint:type_name -> aapt.pb.ToolFingerprint + 11, // 5: aapt.pb.Package.package_id:type_name -> aapt.pb.PackageId + 14, // 6: aapt.pb.Package.type:type_name -> aapt.pb.Type + 13, // 7: aapt.pb.Type.type_id:type_name -> aapt.pb.TypeId + 21, // 8: aapt.pb.Type.entry:type_name -> aapt.pb.Entry + 0, // 9: aapt.pb.Visibility.level:type_name -> aapt.pb.Visibility.Level + 8, // 10: aapt.pb.Visibility.source:type_name -> aapt.pb.Source + 8, // 11: aapt.pb.AllowNew.source:type_name -> aapt.pb.Source + 8, // 12: aapt.pb.Overlayable.source:type_name -> aapt.pb.Source + 8, // 13: aapt.pb.OverlayableItem.source:type_name -> aapt.pb.Source + 1, // 14: aapt.pb.OverlayableItem.policy:type_name -> aapt.pb.OverlayableItem.Policy + 8, // 15: aapt.pb.StagedId.source:type_name -> aapt.pb.Source + 20, // 16: aapt.pb.Entry.entry_id:type_name -> aapt.pb.EntryId + 15, // 17: aapt.pb.Entry.visibility:type_name -> aapt.pb.Visibility + 16, // 18: aapt.pb.Entry.allow_new:type_name -> aapt.pb.AllowNew + 18, // 19: aapt.pb.Entry.overlayable_item:type_name -> aapt.pb.OverlayableItem + 22, // 20: aapt.pb.Entry.config_value:type_name -> aapt.pb.ConfigValue + 19, // 21: aapt.pb.Entry.staged_id:type_name -> aapt.pb.StagedId + 56, // 22: aapt.pb.ConfigValue.config:type_name -> aapt.pb.Configuration + 23, // 23: aapt.pb.ConfigValue.value:type_name -> aapt.pb.Value + 8, // 24: aapt.pb.Value.source:type_name -> aapt.pb.Source + 24, // 25: aapt.pb.Value.item:type_name -> aapt.pb.Item + 25, // 26: aapt.pb.Value.compound_value:type_name -> aapt.pb.CompoundValue + 27, // 27: aapt.pb.Item.ref:type_name -> aapt.pb.Reference + 29, // 28: aapt.pb.Item.str:type_name -> aapt.pb.String + 30, // 29: aapt.pb.Item.raw_str:type_name -> aapt.pb.RawString + 31, // 30: aapt.pb.Item.styled_str:type_name -> aapt.pb.StyledString + 32, // 31: aapt.pb.Item.file:type_name -> aapt.pb.FileReference + 28, // 32: aapt.pb.Item.id:type_name -> aapt.pb.Id + 33, // 33: aapt.pb.Item.prim:type_name -> aapt.pb.Primitive + 34, // 34: aapt.pb.CompoundValue.attr:type_name -> aapt.pb.Attribute + 35, // 35: aapt.pb.CompoundValue.style:type_name -> aapt.pb.Style + 36, // 36: aapt.pb.CompoundValue.styleable:type_name -> aapt.pb.Styleable + 37, // 37: aapt.pb.CompoundValue.array:type_name -> aapt.pb.Array + 38, // 38: aapt.pb.CompoundValue.plural:type_name -> aapt.pb.Plural + 43, // 39: aapt.pb.CompoundValue.macro:type_name -> aapt.pb.MacroBody + 2, // 40: aapt.pb.Reference.type:type_name -> aapt.pb.Reference.Type + 26, // 41: aapt.pb.Reference.is_dynamic:type_name -> aapt.pb.Boolean + 47, // 42: aapt.pb.StyledString.span:type_name -> aapt.pb.StyledString.Span + 3, // 43: aapt.pb.FileReference.type:type_name -> aapt.pb.FileReference.Type + 48, // 44: aapt.pb.Primitive.null_value:type_name -> aapt.pb.Primitive.NullType + 49, // 45: aapt.pb.Primitive.empty_value:type_name -> aapt.pb.Primitive.EmptyType + 50, // 46: aapt.pb.Attribute.symbol:type_name -> aapt.pb.Attribute.Symbol + 27, // 47: aapt.pb.Style.parent:type_name -> aapt.pb.Reference + 8, // 48: aapt.pb.Style.parent_source:type_name -> aapt.pb.Source + 51, // 49: aapt.pb.Style.entry:type_name -> aapt.pb.Style.Entry + 52, // 50: aapt.pb.Styleable.entry:type_name -> aapt.pb.Styleable.Entry + 53, // 51: aapt.pb.Array.element:type_name -> aapt.pb.Array.Element + 54, // 52: aapt.pb.Plural.entry:type_name -> aapt.pb.Plural.Entry + 40, // 53: aapt.pb.XmlNode.element:type_name -> aapt.pb.XmlElement + 7, // 54: aapt.pb.XmlNode.source:type_name -> aapt.pb.SourcePosition + 41, // 55: aapt.pb.XmlElement.namespace_declaration:type_name -> aapt.pb.XmlNamespace + 42, // 56: aapt.pb.XmlElement.attribute:type_name -> aapt.pb.XmlAttribute + 39, // 57: aapt.pb.XmlElement.child:type_name -> aapt.pb.XmlNode + 7, // 58: aapt.pb.XmlNamespace.source:type_name -> aapt.pb.SourcePosition + 7, // 59: aapt.pb.XmlAttribute.source:type_name -> aapt.pb.SourcePosition + 24, // 60: aapt.pb.XmlAttribute.compiled_item:type_name -> aapt.pb.Item + 45, // 61: aapt.pb.MacroBody.style_string:type_name -> aapt.pb.StyleString + 46, // 62: aapt.pb.MacroBody.untranslatable_sections:type_name -> aapt.pb.UntranslatableSection + 44, // 63: aapt.pb.MacroBody.namespace_stack:type_name -> aapt.pb.NamespaceAlias + 7, // 64: aapt.pb.MacroBody.source:type_name -> aapt.pb.SourcePosition + 55, // 65: aapt.pb.StyleString.spans:type_name -> aapt.pb.StyleString.Span + 8, // 66: aapt.pb.Attribute.Symbol.source:type_name -> aapt.pb.Source + 27, // 67: aapt.pb.Attribute.Symbol.name:type_name -> aapt.pb.Reference + 8, // 68: aapt.pb.Style.Entry.source:type_name -> aapt.pb.Source + 27, // 69: aapt.pb.Style.Entry.key:type_name -> aapt.pb.Reference + 24, // 70: aapt.pb.Style.Entry.item:type_name -> aapt.pb.Item + 8, // 71: aapt.pb.Styleable.Entry.source:type_name -> aapt.pb.Source + 27, // 72: aapt.pb.Styleable.Entry.attr:type_name -> aapt.pb.Reference + 8, // 73: aapt.pb.Array.Element.source:type_name -> aapt.pb.Source + 24, // 74: aapt.pb.Array.Element.item:type_name -> aapt.pb.Item + 8, // 75: aapt.pb.Plural.Entry.source:type_name -> aapt.pb.Source + 5, // 76: aapt.pb.Plural.Entry.arity:type_name -> aapt.pb.Plural.Arity + 24, // 77: aapt.pb.Plural.Entry.item:type_name -> aapt.pb.Item + 78, // [78:78] is the sub-list for method output_type + 78, // [78:78] is the sub-list for method input_type + 78, // [78:78] is the sub-list for extension type_name + 78, // [78:78] is the sub-list for extension extendee + 0, // [0:78] is the sub-list for field type_name +} + +func init() { file_Resources_proto_init() } +func file_Resources_proto_init() { + if File_Resources_proto != nil { + return + } + file_Configuration_proto_init() + if !protoimpl.UnsafeEnabled { + file_Resources_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringPool); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SourcePosition); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Source); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ToolFingerprint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ResourceTable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Package); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TypeId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Type); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Visibility); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AllowNew); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Overlayable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OverlayableItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StagedId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EntryId); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Value); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CompoundValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Boolean); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Reference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Id); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*String); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RawString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyledString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileReference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Primitive); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Attribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Style); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Styleable); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Array); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Plural); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlElement); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlNamespace); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*XmlAttribute); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MacroBody); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NamespaceAlias); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyleString); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UntranslatableSection); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyledString_Span); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Primitive_NullType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Primitive_EmptyType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Attribute_Symbol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Style_Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Styleable_Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Array_Element); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Plural_Entry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_Resources_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StyleString_Span); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_Resources_proto_msgTypes[17].OneofWrappers = []interface{}{ + (*Value_Item)(nil), + (*Value_CompoundValue)(nil), + } + file_Resources_proto_msgTypes[18].OneofWrappers = []interface{}{ + (*Item_Ref)(nil), + (*Item_Str)(nil), + (*Item_RawStr)(nil), + (*Item_StyledStr)(nil), + (*Item_File)(nil), + (*Item_Id)(nil), + (*Item_Prim)(nil), + } + file_Resources_proto_msgTypes[19].OneofWrappers = []interface{}{ + (*CompoundValue_Attr)(nil), + (*CompoundValue_Style)(nil), + (*CompoundValue_Styleable)(nil), + (*CompoundValue_Array)(nil), + (*CompoundValue_Plural)(nil), + (*CompoundValue_Macro)(nil), + } + file_Resources_proto_msgTypes[27].OneofWrappers = []interface{}{ + (*Primitive_NullValue)(nil), + (*Primitive_EmptyValue)(nil), + (*Primitive_FloatValue)(nil), + (*Primitive_DimensionValue)(nil), + (*Primitive_FractionValue)(nil), + (*Primitive_IntDecimalValue)(nil), + (*Primitive_IntHexadecimalValue)(nil), + (*Primitive_BooleanValue)(nil), + (*Primitive_ColorArgb8Value)(nil), + (*Primitive_ColorRgb8Value)(nil), + (*Primitive_ColorArgb4Value)(nil), + (*Primitive_ColorRgb4Value)(nil), + (*Primitive_DimensionValueDeprecated)(nil), + (*Primitive_FractionValueDeprecated)(nil), + } + file_Resources_proto_msgTypes[33].OneofWrappers = []interface{}{ + (*XmlNode_Element)(nil), + (*XmlNode_Text)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_Resources_proto_rawDesc, + NumEnums: 6, + NumMessages: 50, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_Resources_proto_goTypes, + DependencyIndexes: file_Resources_proto_depIdxs, + EnumInfos: file_Resources_proto_enumTypes, + MessageInfos: file_Resources_proto_msgTypes, + }.Build() + File_Resources_proto = out.File + file_Resources_proto_rawDesc = nil + file_Resources_proto_goTypes = nil + file_Resources_proto_depIdxs = nil +} diff --git a/Resources.proto b/Resources.proto new file mode 100755 index 0000000..ceedd5d --- /dev/null +++ b/Resources.proto @@ -0,0 +1,639 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +syntax = "proto3"; + +import "Configuration.proto"; + +package aapt.pb; + +option go_package = "./;main"; + +// A string pool that wraps the binary form of the C++ class android::ResStringPool. +message StringPool { + bytes data = 1; +} + +// The position of a declared entity within a file. +message SourcePosition { + uint32 line_number = 1; + uint32 column_number = 2; +} + +// Developer friendly source file information for an entity in the resource table. +message Source { + // The index of the string path within the source string pool of a ResourceTable. + uint32 path_idx = 1; + SourcePosition position = 2; +} + +// The name and version fingerprint of a build tool. +message ToolFingerprint { + string tool = 1; + string version = 2; +} + +// Top level message representing a resource table. +message ResourceTable { + // The string pool containing source paths referenced throughout the resource table. This does + // not end up in the final binary ARSC file. + StringPool source_pool = 1; + + // Resource definitions corresponding to an Android package. + repeated Package package = 2; + + // The declarations within the resource table. + repeated Overlayable overlayable = 3; + + // The version fingerprints of the tools that built the resource table. + repeated ToolFingerprint tool_fingerprint = 4; +} + +// A package ID in the range [0x00, 0xff]. +message PackageId { + uint32 id = 1; +} + +// Defines resources for an Android package. +message Package { + // The package ID of this package, in the range [0x00, 0xff]. + // - ID 0x00 is reserved for shared libraries, or when the ID is assigned at run-time. + // - ID 0x01 is reserved for the 'android' package (framework). + // - ID range [0x02, 0x7f) is reserved for auto-assignment to shared libraries at run-time. + // - ID 0x7f is reserved for the application package. + // - IDs > 0x7f are reserved for the application as well and are treated as feature splits. + // This may not be set if no ID was assigned. + PackageId package_id = 1; + + // The Java compatible Android package name of the app. + string package_name = 2; + + // The series of types defined by the package. + repeated Type type = 3; +} + +// A type ID in the range [0x01, 0xff]. +message TypeId { + uint32 id = 1; +} + +// A set of resources grouped under a common type. Such types include string, layout, xml, dimen, +// attr, etc. This maps to the second part of a resource identifier in Java (R.type.entry). +message Type { + // The ID of the type. This may not be set if no ID was assigned. + TypeId type_id = 1; + + // The name of the type. This corresponds to the 'type' part of a full resource name of the form + // package:type/entry. The set of legal type names is listed in Resource.cpp. + string name = 2; + + // The entries defined for this type. + repeated Entry entry = 3; +} + +// The Visibility of a symbol/entry (public, private, undefined). +message Visibility { + // The visibility of the resource outside of its package. + enum Level { + // No visibility was explicitly specified. This is typically treated as private. + // The distinction is important when two separate R.java files are generated: a public and + // private one. An unknown visibility, in this case, would cause the resource to be omitted + // from either R.java. + UNKNOWN = 0; + + // A resource was explicitly marked as private. This means the resource can not be accessed + // outside of its package unless the @*package:type/entry notation is used (the asterisk being + // the private accessor). If two R.java files are generated (private + public), the resource + // will only be emitted to the private R.java file. + PRIVATE = 1; + + // A resource was explicitly marked as public. This means the resource can be accessed + // from any package, and is emitted into all R.java files, public and private. + PUBLIC = 2; + } + + Level level = 1; + + // The path at which this entry's visibility was defined (eg. public.xml). + Source source = 2; + + // The comment associated with the tag. + string comment = 3; + + // Indicates that the resource id may change across builds and that the public R.java identifier + // for this resource should not be final. This is set to `true` for resources in `staging-group` + // tags. + bool staged_api = 4; +} + +// Whether a resource comes from a compile-time overlay and is explicitly allowed to not overlay an +// existing resource. +message AllowNew { + // Where this was defined in source. + Source source = 1; + + // Any comment associated with the declaration. + string comment = 2; +} + +// Represents a set of overlayable resources. +message Overlayable { + // The name of the . + string name = 1; + + // The location of the declaration in the source. + Source source = 2; + + // The component responsible for enabling and disabling overlays targeting this . + string actor = 3; +} + +// Represents an overlayable declaration within an tag. +message OverlayableItem { + enum Policy { + NONE = 0; + PUBLIC = 1; + SYSTEM = 2; + VENDOR = 3; + PRODUCT = 4; + SIGNATURE = 5; + ODM = 6; + OEM = 7; + ACTOR = 8; + CONFIG_SIGNATURE = 9; + } + + // The location of the declaration in source. + Source source = 1; + + // Any comment associated with the declaration. + string comment = 2; + + // The policy defined by the enclosing tag of this . + repeated Policy policy = 3; + + // The index into overlayable list that points to the tag that contains + // this . + uint32 overlayable_idx = 4; +} + +// The staged resource ID definition of a finalized resource. +message StagedId { + Source source = 1; + uint32 staged_id = 2; +} + +// An entry ID in the range [0x0000, 0xffff]. +message EntryId { + uint32 id = 1; +} + +// An entry declaration. An entry has a full resource ID that is the combination of package ID, +// type ID, and its own entry ID. An entry on its own has no value, but values are defined for +// various configurations/variants. +message Entry { + // The ID of this entry. Together with the package ID and type ID, this forms a full resource ID + // of the form 0xPPTTEEEE, where PP is the package ID, TT is the type ID, and EEEE is the entry + // ID. + // This may not be set if no ID was assigned. + EntryId entry_id = 1; + + // The name of this entry. This corresponds to the 'entry' part of a full resource name of the + // form package:type/entry. + string name = 2; + + // The visibility of this entry (public, private, undefined). + Visibility visibility = 3; + + // Whether this resource, when originating from a compile-time overlay, is allowed to NOT overlay + // any existing resources. + AllowNew allow_new = 4; + + // Whether this resource can be overlaid by a runtime resource overlay (RRO). + OverlayableItem overlayable_item = 5; + + // The set of values defined for this entry, each corresponding to a different + // configuration/variant. + repeated ConfigValue config_value = 6; + + // The staged resource ID of this finalized resource. + StagedId staged_id = 7; +} + +// A Configuration/Value pair. +message ConfigValue { + Configuration config = 1; + Value value = 2; +} + +// The generic meta-data for every value in a resource table. +message Value { + // Where the value was defined. + Source source = 1; + + // Any comment associated with the value. + string comment = 2; + + // Whether the value can be overridden. + bool weak = 3; + + // The value is either an Item or a CompoundValue. + oneof value { + Item item = 4; + CompoundValue compound_value = 5; + } +} + +// An Item is an abstract type. It represents a value that can appear inline in many places, such +// as XML attribute values or on the right hand side of style attribute definitions. The concrete +// type is one of the types below. Only one can be set. +message Item { + oneof value { + Reference ref = 1; + String str = 2; + RawString raw_str = 3; + StyledString styled_str = 4; + FileReference file = 5; + Id id = 6; + Primitive prim = 7; + } +} + +// A CompoundValue is an abstract type. It represents a value that is a made of other values. +// These can only usually appear as top-level resources. The concrete type is one of the types +// below. Only one can be set. +message CompoundValue { + oneof value { + Attribute attr = 1; + Style style = 2; + Styleable styleable = 3; + Array array = 4; + Plural plural = 5; + MacroBody macro = 6; + } +} + +// Message holding a boolean, so it can be optionally encoded. +message Boolean { + bool value = 1; +} + +// A value that is a reference to another resource. This reference can be by name or resource ID. +message Reference { + enum Type { + // A plain reference (@package:type/entry). + REFERENCE = 0; + + // A reference to a theme attribute (?package:type/entry). + ATTRIBUTE = 1; + } + + Type type = 1; + + // The resource ID (0xPPTTEEEE) of the resource being referred. This is optional. + uint32 id = 2; + + // The name of the resource being referred. This is optional if the resource ID is set. + string name = 3; + + // Whether this reference is referencing a private resource (@*package:type/entry). + bool private = 4; + + // Whether this reference is dynamic. + Boolean is_dynamic = 5; + + // The type flags used when compiling the reference. Used for substituting the contents of macros. + uint32 type_flags = 6; + + // Whether raw string values would have been accepted in place of this reference definition. Used + // for substituting the contents of macros. + bool allow_raw = 7; +} + +// A value that represents an ID. This is just a placeholder, as ID values are used to occupy a +// resource ID (0xPPTTEEEE) as a unique identifier. Their value is unimportant. +message Id { +} + +// A value that is a string. +message String { + string value = 1; +} + +// A value that is a raw string, which is unescaped/uninterpreted. This is typically used to +// represent the value of a style attribute before the attribute is compiled and the set of +// allowed values is known. +message RawString { + string value = 1; +} + +// A string with styling information, like html tags that specify boldness, italics, etc. +message StyledString { + // The raw text of the string. + string value = 1; + + // A Span marks a region of the string text that is styled. + message Span { + // The name of the tag, and its attributes, encoded as follows: + // tag_name;attr1=value1;attr2=value2;[...] + string tag = 1; + + // The first character position this span applies to, in UTF-16 offset. + uint32 first_char = 2; + + // The last character position this span applies to, in UTF-16 offset. + uint32 last_char = 3; + } + + repeated Span span = 2; +} + +// A value that is a reference to an external entity, like an XML file or a PNG. +message FileReference { + enum Type { + UNKNOWN = 0; + PNG = 1; + BINARY_XML = 2; + PROTO_XML = 3; + } + + // Path to a file within the APK (typically res/type-config/entry.ext). + string path = 1; + + // The type of file this path points to. For UAM bundle, this cannot be + // BINARY_XML. + Type type = 2; +} + +// A value that represents a primitive data type (float, int, boolean, etc.). +// Refer to Res_value in ResourceTypes.h for info on types and formatting +message Primitive { + message NullType { + } + message EmptyType { + } + oneof oneof_value { + NullType null_value = 1; + EmptyType empty_value = 2; + float float_value = 3; + uint32 dimension_value = 13; + uint32 fraction_value = 14; + int32 int_decimal_value = 6; + uint32 int_hexadecimal_value = 7; + bool boolean_value = 8; + uint32 color_argb8_value = 9; + uint32 color_rgb8_value = 10; + uint32 color_argb4_value = 11; + uint32 color_rgb4_value = 12; + float dimension_value_deprecated = 4 [deprecated=true]; + float fraction_value_deprecated = 5 [deprecated=true]; + } +} + +// A value that represents an XML attribute and what values it accepts. +message Attribute { + // A Symbol used to represent an enum or a flag. + message Symbol { + // Where the enum/flag item was defined. + Source source = 1; + + // Any comments associated with the enum or flag. + string comment = 2; + + // The name of the enum/flag as a reference. Enums/flag items are generated as ID resource + // values. + Reference name = 3; + + // The value of the enum/flag. + uint32 value = 4; + + // The data type of the enum/flag as defined in android::Res_value. + uint32 type = 5; + } + + // Bitmask of formats allowed for an attribute. + enum FormatFlags { + NONE = 0x0; // Proto3 requires a default of 0. + ANY = 0x0000ffff; // Allows any type except ENUM and FLAGS. + REFERENCE = 0x01; // Allows Reference values. + STRING = 0x02; // Allows String/StyledString values. + INTEGER = 0x04; // Allows any integer BinaryPrimitive values. + BOOLEAN = 0x08; // Allows any boolean BinaryPrimitive values. + COLOR = 0x010; // Allows any color BinaryPrimitive values. + FLOAT = 0x020; // Allows any float BinaryPrimitive values. + DIMENSION = 0x040; // Allows any dimension BinaryPrimitive values. + FRACTION = 0x080; // Allows any fraction BinaryPrimitive values. + ENUM = 0x00010000; // Allows enums that are defined in the Attribute's symbols. + // ENUM and FLAGS cannot BOTH be set. + FLAGS = 0x00020000; // Allows flags that are defined in the Attribute's symbols. + // ENUM and FLAGS cannot BOTH be set. + } + + // A bitmask of types that this XML attribute accepts. Corresponds to the flags in the + // enum FormatFlags. + uint32 format_flags = 1; + + // The smallest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + int32 min_int = 2; + + // The largest integer allowed for this XML attribute. Only makes sense if the format includes + // FormatFlags::INTEGER. + int32 max_int = 3; + + // The set of enums/flags defined in this attribute. Only makes sense if the format includes + // either FormatFlags::ENUM or FormatFlags::FLAGS. Having both is an error. + repeated Symbol symbol = 4; +} + +// A value that represents a style. +message Style { + // An XML attribute/value pair defined in the style. + message Entry { + // Where the entry was defined. + Source source = 1; + + // Any comments associated with the entry. + string comment = 2; + + // A reference to the XML attribute. + Reference key = 3; + + // The Item defined for this XML attribute. + Item item = 4; + } + + // The optinal style from which this style inherits attributes. + Reference parent = 1; + + // The source file information of the parent inheritance declaration. + Source parent_source = 2; + + // The set of XML attribute/value pairs for this style. + repeated Entry entry = 3; +} + +// A value that represents a XML resource. These are not real resources and +// only end up as Java fields in the generated R.java. They do not end up in the binary ARSC file. +message Styleable { + // An attribute defined for this styleable. + message Entry { + // Where the attribute was defined within the block. + Source source = 1; + + // Any comments associated with the declaration. + string comment = 2; + + // The reference to the attribute. + Reference attr = 3; + } + + // The set of attribute declarations. + repeated Entry entry = 1; +} + +// A value that represents an array of resource values. +message Array { + // A single element of the array. + message Element { + // Where the element was defined. + Source source = 1; + + // Any comments associated with the element. + string comment = 2; + + // The value assigned to this element. + Item item = 3; + } + + // The list of array elements. + repeated Element element = 1; +} + +// A value that represents a string and its many variations based on plurality. +message Plural { + // The arity of the plural. + enum Arity { + ZERO = 0; + ONE = 1; + TWO = 2; + FEW = 3; + MANY = 4; + OTHER = 5; + } + + // The plural value for a given arity. + message Entry { + // Where the plural was defined. + Source source = 1; + + // Any comments associated with the plural. + string comment = 2; + + // The arity of the plural. + Arity arity = 3; + + // The value assigned to this plural. + Item item = 4; + } + + // The set of arity/plural mappings. + repeated Entry entry = 1; +} + +// Defines an abstract XmlNode that must be either an XmlElement, or +// a text node represented by a string. +message XmlNode { + oneof node { + XmlElement element = 1; + string text = 2; + } + + // Source line and column info. + SourcePosition source = 3; +} + +// An in an XML document. +message XmlElement { + // Namespaces defined on this element. + repeated XmlNamespace namespace_declaration = 1; + + // The namespace URI of this element. + string namespace_uri = 2; + + // The name of this element. + string name = 3; + + // The attributes of this element. + repeated XmlAttribute attribute = 4; + + // The children of this element. + repeated XmlNode child = 5; +} + +// A namespace declaration on an XmlElement (xmlns:android="http://..."). +message XmlNamespace { + string prefix = 1; + string uri = 2; + + // Source line and column info. + SourcePosition source = 3; +} + +// An attribute defined on an XmlElement (android:text="..."). +message XmlAttribute { + string namespace_uri = 1; + string name = 2; + string value = 3; + + // Source line and column info. + SourcePosition source = 4; + + // The optional resource ID (0xPPTTEEEE) of the attribute. + uint32 resource_id = 5; + + // The optional interpreted/compiled version of the `value` string. + Item compiled_item = 6; +} + +message MacroBody { + string raw_string = 1; + StyleString style_string = 2; + repeated UntranslatableSection untranslatable_sections = 3; + repeated NamespaceAlias namespace_stack = 4; + SourcePosition source = 5; +} + +message NamespaceAlias { + string prefix = 1; + string package_name = 2; + bool is_private = 3; +} + +message StyleString { + message Span { + string name = 1; + uint32 start_index = 2; + uint32 end_index = 3; + } + string str = 1; + repeated Span spans = 2; +} + +message UntranslatableSection { + uint64 start_index = 1; + uint64 end_index = 2; +} \ No newline at end of file diff --git a/build-proto.sh b/build-proto.sh new file mode 100755 index 0000000..4bf3768 --- /dev/null +++ b/build-proto.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euxo pipefail + +protoc --go_out=. *.proto diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..756484f --- /dev/null +++ b/build.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +set -euxo pipefail + +goreleaser --snapshot --skip-publish --rm-dist diff --git a/go.mod b/go.mod new file mode 100755 index 0000000..58a445b --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/ensody/androidmanifest-changer + +go 1.17 + +require google.golang.org/protobuf v1.27.1 diff --git a/go.sum b/go.sum new file mode 100755 index 0000000..03b1917 --- /dev/null +++ b/go.sum @@ -0,0 +1,8 @@ +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/main.go b/main.go new file mode 100755 index 0000000..470bee1 --- /dev/null +++ b/main.go @@ -0,0 +1,218 @@ +package main + +import ( + "archive/zip" + "errors" + "flag" + "fmt" + "io" + "io/ioutil" + "log" + "os" + "os/exec" + "strings" + + "google.golang.org/protobuf/proto" +) + +const ( + tmpDir = "/tmp" + namespace = "http://schemas.android.com/apk/res/android" + versionCodeAttr = "versionCode" + versionNameAttr = "versionName" +) + +type Config struct { + versionCode int32 + versionName string +} + +func main() { + versionCode := flag.Uint("versionCode", 0, "The versionCode to set") + versionName := flag.String("versionName", "", "The versionName to set") + flag.Parse() + if len(flag.Args()) != 1 { + fmt.Fprintln(flag.CommandLine.Output(), "Error: File path is required.") + flag.Usage() + os.Exit(2) + } + config := &Config{ + versionCode: int32(*versionCode), + versionName: *versionName, + } + + path := flag.Arg(0) + + if strings.HasSuffix(path, ".apk") { + updateApk(path, config) + } else if strings.HasSuffix(path, ".aar") { + updateAar(path, config) + } else { + updateManifest(path, config) + } +} + +func updateApk(path string, config *Config) { + file, err := ioutil.TempFile(tmpDir, "*.aar") + if err != nil { + log.Fatalln("Failed creating temp file:", err) + } + defer os.Remove(file.Name()) + + out, err := exec.Command("aapt2", "convert", "-o", file.Name(), "--output-format", "proto", path).CombinedOutput() + if err != nil { + log.Fatalln("Failed executing aapt2:", err, string(out)) + } + + updateAar(file.Name(), config) + + out, err = exec.Command("aapt2", "convert", "-o", path, "--output-format", "binary", file.Name()).CombinedOutput() + if err != nil { + log.Fatalln("Failed executing aapt2:", err, string(out)) + } +} + +func updateAar(path string, config *Config) { + manifest, err := ioutil.TempFile(tmpDir, "AndroidManifest.*.xml") + if err != nil { + log.Fatalln("Failed creating temp file:", err) + } + defer os.Remove(manifest.Name()) + + extractFromZip(path, "AndroidManifest.xml", manifest) + updateManifest(manifest.Name(), config) + addToZip(path, "AndroidManifest.xml", manifest) +} + +func addToZip(path string, name string, source *os.File) { + zipReader, err := zip.OpenReader(path) + if err != nil { + log.Fatalln("Failed reading zip:", err) + } + defer zipReader.Close() + + tmpZip, err := ioutil.TempFile(tmpDir, "*.aar") + if err != nil { + log.Fatalln("Failed creating temp file:", err) + } + defer os.Remove(tmpZip.Name()) + + targetZipWriter := zip.NewWriter(tmpZip) + defer targetZipWriter.Close() + + for _, zipItem := range zipReader.File { + header, err := zip.FileInfoHeader(zipItem.FileInfo()) + if err != nil { + log.Fatalln("Failed creating header:", err) + } + header.Name = zipItem.Name + targetItem, err := targetZipWriter.CreateHeader(header) + if err != nil { + log.Fatalln("Failed creating header:", err) + } + if zipItem.Name == name { + source.Seek(0, 0) + _, err = io.Copy(targetItem, source) + if err != nil { + log.Fatalln("Failed copying to zip:", err) + } + } else { + zipItemReader, err := zipItem.Open() + if err != nil { + log.Fatalln("Failed reading zip:", err) + } + _, err = io.Copy(targetItem, zipItemReader) + if err != nil { + log.Fatalln("Failed copying to zip:", err) + } + zipItemReader.Close() + } + } + + f, err := os.Create(path) + if err != nil { + log.Fatalln("Failed opening file:", err) + } + defer f.Close() + tmpZip.Seek(0, 0) + io.Copy(f, tmpZip) + + f2, err := os.Create("fafa.zip") + if err != nil { + log.Fatalln("Failed opening file:", err) + } + defer f2.Close() + tmpZip.Seek(0, 0) + io.Copy(f2, tmpZip) +} + +func extractFromZip(path string, name string, target *os.File) { + r, err := zip.OpenReader(path) + if err != nil { + log.Fatal(err) + } + defer r.Close() + + f := findFile(r, name) + if f == nil { + log.Fatalln(errors.New("file is missing")) + } + + innerFile, err := f.Open() + if err != nil { + log.Fatalln("Failed opening zip file's AndroidManifest.xml:", err) + } + defer innerFile.Close() + _, err = io.Copy(target, innerFile) + if err != nil { + log.Fatal(err) + } +} + +func findFile(r *zip.ReadCloser, name string) *zip.File { + for _, f := range r.File { + if f.Name != name { + continue + } + return f + } + return nil +} + +func updateManifest(path string, config *Config) { + in, err := ioutil.ReadFile(path) + if err != nil { + log.Fatalln("Error reading file:", err) + } + xmlNode := &XmlNode{} + if err := proto.Unmarshal(in, xmlNode); err != nil { + log.Fatalln("Failed to parse manifest:", err) + } + for _, attr := range xmlNode.GetElement().GetAttribute() { + if attr.GetNamespaceUri() != namespace { + continue + } + switch attr.GetName() { + case versionCodeAttr: + if config.versionCode > 0 { + println(attr.String()) + prim := attr.GetCompiledItem().GetPrim() + if x, ok := prim.GetOneofValue().(*Primitive_IntDecimalValue); ok { + x.IntDecimalValue = int32(config.versionCode) + } + } + case versionNameAttr: + if config.versionName != "" { + attr.Value = config.versionName + } + } + } + + out, err := proto.Marshal(xmlNode) + if err != nil { + log.Fatalln("Error marshalling XML:", err) + } + if err := ioutil.WriteFile(path, out, 0644); err != nil { + log.Fatalln("Error writing file:", err) + } +}